From 7464b1bdd061dadd51463e27d0fa4db5a1a69f5c Mon Sep 17 00:00:00 2001 From: Freddie Akeroyd Date: Thu, 22 Nov 2012 18:23:42 +0000 Subject: [PATCH] Further updates for Windows CMake building with static HDF libraries. Refs #330 git-svn-id: https://svn.nexusformat.org/code/trunk@1852 ff5d1e40-2be0-497f-93bd-dc18237bd3c7 --- CMakeLists.txt | 28 +++++++++--- CPackOptions.cmake.in | 17 ++++--- applications/NXbrowse/CMakeLists.txt | 2 +- applications/NXbrowse/NXbrowse.c | 6 ++- applications/NXvalidate/CMakeLists.txt | 11 +++-- applications/NXvalidate/nxvalidate.bat.in | 34 ++++++++++++++ bindings/cpp/CMakeLists.txt | 6 +-- cmake_include/FindHDF4.cmake | 19 +++++--- cmake_include/FindMXML.cmake | 16 ++++--- cmake_include/FindSZIP.cmake | 4 +- configure_cmake_build.bat | 55 +++++++++++++++++++++++ dir_syntax.cmake | 5 +++ include/nxconfig_h_cmake.in | 3 +- src/CMakeLists.txt | 13 +++--- 14 files changed, 181 insertions(+), 38 deletions(-) create mode 100644 applications/NXvalidate/nxvalidate.bat.in create mode 100644 configure_cmake_build.bat create mode 100644 dir_syntax.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 43aa2898..8fe8cd08 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -53,6 +53,7 @@ endif() set (CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_modules") + #The name of our project project (NeXus) @@ -146,7 +147,7 @@ endif(UNIX) #find_package(HDF5 REQUIRED) #find_package(HDF5) -find_package(JPEG) +#find_package(JPEG) find_package(XMLRPC) #find_package(ZLIB) find_package(LibXml2) @@ -166,7 +167,7 @@ if (ZLIB_SEARCH) elseif($ENV{ZLIB_ROOT}) set(ZLIB_ROOT $ENV{ZLIB_ROOT}) else() - set(ZLIB_ROOT $HDF5_ROOT_DIR $HDF4_ROOT_DIR $SZIP_ROOT_DIR) + set(ZLIB_ROOT ${HDF5_ROOT_DIR} ${HDF4_ROOT_DIR} ${SZIP_ROOT_DIR}) endif() find_package(ZLIB) @@ -180,6 +181,10 @@ find_library(TERMCAP termcap) find_library(READLINE readline) find_library(HISTORY history) +if(NOT WIN32) +CHECK_LIBRARY_EXISTS(${READLINE} readline "" HAVE_LIBREADLINE) +endif() + if(M) set(M_LINK "-lm") endif(M) @@ -193,7 +198,7 @@ if(PTHREAD) endif(PTHREAD) if(SZIPLIB_FOUND) - set(SZIP_LINK "-lsz") + set(SZIP_LINK "-lsz") else(SZIPLIB_FOUND) set(SZIP_LIB "") endif(SZIPLIB_FOUND) @@ -203,7 +208,7 @@ if(TERMCAP) endif(TERMCAP) if(READLINE) - set(READLINE_LINK "") + set(READLINE_LINK "${READLINE}") endif(READLINE) if(HISTORY) @@ -229,7 +234,7 @@ option (BUILD_FORTRAN_BINDINGS #Use HDF4 in build option (BUILD_HDF4 - "Should I build HDF4 bindings if libraries available?" OFF) + "Should I build HDF4 bindings if libraries available?" ON) option (BUILD_HDF5 "Should I build HDF4 bindings if libraries available?" ON) @@ -256,7 +261,6 @@ create_have_vars(HDF4 HDF5 MXML) #Include source files. include_directories(${PROJECT_SOURCE_DIR}/include ${HDF5_INCLUDE_DIRS} ${HDF5_INCLUDE_DIR}) -include_directories(C:/development/nexus-third-party/win64/include) if (UNIX) check_add_c_compiler_flags("-Wall -Wno-unused-variable -Wno-sign-compare -Wno-comment") @@ -288,6 +292,7 @@ if(MSVC) set(NX_CFLAGS "/W4 /wd4820 /wd4996 /Zi") set(NX_CPP -D_CRT_SECURE_NO_WARNINGS) set(CMAKE_DEBUG_POSTFIX "D") +# set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /INCREMENTAL" CACHE STRING "" FORCE) # workaround for problems endif(MSVC) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${NX_CFLAGS}") @@ -306,6 +311,17 @@ if(${CMAKE_INSTALL_PREFIX} STREQUAL ${DEFAULT_WIN_INSTALL_PREFIX}) set(CMAKE_INSTALL_PREFIX "${DEFAULT_WIN_INSTALL_PREFIX}${ARCHSUFFIX}" CACHE PATH "" FORCE) endif() +if(WIN32) + if(ARCH64) + include_directories("${NEXUS_THIRD_PARTY}/win64/include") + file(GLOB EXTRA_DLLS "${NEXUS_THIRD_PARTY}/win64/bin/*.dll") + else() + include_directories("${NEXUS_THIRD_PARTY}/win32/include") + file(GLOB EXTRA_DLLS "${NEXUS_THIRD_PARTY}/win32/bin/*.dll") + endif() + install(FILES ${EXTRA_DLLS} DESTINATION bin COMPONENT Runtime) +endif() + # Recurse into the subdirectories. add_subdirectory (src) add_subdirectory (bindings) diff --git a/CPackOptions.cmake.in b/CPackOptions.cmake.in index 42018b53..0669020b 100644 --- a/CPackOptions.cmake.in +++ b/CPackOptions.cmake.in @@ -96,13 +96,15 @@ if (${CPACK_GENERATOR} STREQUAL "RPM") # set(CPACK_RPM_CHANGELOG_FILE "") endif() if (${CPACK_GENERATOR} STREQUAL "TGZ") - set(CPACK_TGZ_COMPONENT_INSTALL ON) + set(CPACK_MONOLITHIC_INSTALL ON) + set(CPACK_TGZ_COMPONENT_INSTALL OFF) set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY ON) set(CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY ON) set(CPACK_ARCHIVE_COMPONENT_INSTALL ON) endif() if (${CPACK_GENERATOR} STREQUAL "ZIP") - set(CPACK_ZIP_COMPONENT_INSTALL ON) + set(CPACK_MONOLITHIC_INSTALL ON) + set(CPACK_ZIP_COMPONENT_INSTALL OFF) set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY ON) set(CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY ON) set(CPACK_ARCHIVE_COMPONENT_INSTALL ON) @@ -133,7 +135,7 @@ if (${CPACK_GENERATOR} STREQUAL "NSIS") set(CPACK_PACKAGE_ICON "@CMAKE_SOURCE_DIR_NATIVE_D@\\InstallerBits\\nexus.ico") set(CPACK_NSIS_MUI_ICON "@CMAKE_SOURCE_DIR_NATIVE_D@\\InstallerBits\\nexus.ico") set(CPACK_NSIS_MUI_UNIICON "@CMAKE_SOURCE_DIR_NATIVE_D@\\InstallerBits\\nexus.ico") - set(CPACK_NSIS_MENU_LINKS "http://www.nexusformat.org/" "NeXus Web Site") + set(CPACK_NSIS_MENU_LINKS "http://www.nexusformat.org/" "NeXus Web Site" "bin\\nxvalidate.bat" "NXvalidate") if (@ARCH64@) set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64") set(CPACK_NSIS_DEFINES "!define NEXUSDIRENVSUFFIX 64") @@ -151,8 +153,13 @@ endif() #set (CPACK_SOURCE_OUTPUT_CONFIG_FILE) #set (CPACK_SOURCE_IGNORE_FILES) -set(CPACK_CREATE_DESKTOP_LINKS "nxbrowse" "nxvalidate") -set(CPACK_PACKAGE_EXECUTABLES "nxbrowse" "NXbrowse" "nxvalidate" "NXvalidate") +if(WIN32) + set(NXVALIDATE nxvalidate.bat) +else() + set(NXVALIDATE nxvalidate) +endif() +set(CPACK_CREATE_DESKTOP_LINKS "nxbrowse" ${NXVALIDATE}) +set(CPACK_PACKAGE_EXECUTABLES "nxbrowse" "NXbrowse") #cpack_add_component(Runtime # DISPLAY_NAME "Binary Applications" diff --git a/applications/NXbrowse/CMakeLists.txt b/applications/NXbrowse/CMakeLists.txt index 4461ce74..dba9bf2c 100644 --- a/applications/NXbrowse/CMakeLists.txt +++ b/applications/NXbrowse/CMakeLists.txt @@ -29,7 +29,7 @@ add_executable (nxbrowse NXbrowse.c) target_link_libraries(nxbrowse NeXus_Shared_Library - ${READLINE_LINK} ${M_LINK} + ${READLINE_LINK} ${M_LINK} ${DL_LINK} ${PTHREAD_LINK} ${DF_LINK} ${TERMCAP_LINK} ${HISTORY_LINK}) diff --git a/applications/NXbrowse/NXbrowse.c b/applications/NXbrowse/NXbrowse.c index 30c82d81..dbb4ea1e 100755 --- a/applications/NXbrowse/NXbrowse.c +++ b/applications/NXbrowse/NXbrowse.c @@ -61,6 +61,10 @@ static char* my_readline(const char* prompt) #define StrEq(s1, s2) (strcmp((s1), (s2)) == 0) +#ifdef _WIN32 +#define STRNCASECMP strnicmp +#endif /* _WIN32 */ + int NXBdir (NXhandle fileId); int NXBopen (NXhandle fileId, NXname groupName); int NXBread (NXhandle fileId, NXname dataName, char *dimensions); @@ -125,7 +129,7 @@ static char* command_generator(const char* text, int state) while( (name = commands[list_index].name) != NULL ) { ++list_index; - if (strncasecmp(name, text, len) == 0) + if (STRNCASECMP(name, text, len) == 0) { return strdup(name); } diff --git a/applications/NXvalidate/CMakeLists.txt b/applications/NXvalidate/CMakeLists.txt index 6c01a787..aee5f71b 100644 --- a/applications/NXvalidate/CMakeLists.txt +++ b/applications/NXvalidate/CMakeLists.txt @@ -26,7 +26,13 @@ # #==================================================================== -configure_file(nxvalidate.in nxvalidate @ONLY) +if (WIN32) + configure_file(nxvalidate.bat.in nxvalidate.bat @ONLY) + install (PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/nxvalidate.bat DESTINATION bin) +else(WIN32) + configure_file(nxvalidate.in nxvalidate @ONLY) + install (PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/nxvalidate DESTINATION bin) +endif(WIN32) if ( NOT (${CMAKE_CURRENT_BINARY_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR}) ) add_custom_command(OUTPUT build.xml COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/build.xml . COMMENT "Creating build.xml") @@ -36,9 +42,6 @@ endif() add_custom_target(NXvalidate ALL COMMAND ${ANT_EXEC} DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/build.xml ${CMAKE_CURRENT_BINARY_DIR}/nbproject) - -install (PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/nxvalidate DESTINATION bin) - if (EXISTS ${CMAKE_CURRENT_BINARY_DIR}/dist/javadoc) install (DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/dist/javadoc DESTINATION ${NXDOCDIR}/java/nxvalidate FILE_PERMISSIONS diff --git a/applications/NXvalidate/nxvalidate.bat.in b/applications/NXvalidate/nxvalidate.bat.in new file mode 100644 index 00000000..9e5f83cd --- /dev/null +++ b/applications/NXvalidate/nxvalidate.bat.in @@ -0,0 +1,34 @@ +@echo off +REM #==================================================================== +REM # NeXus - Neutron & X-ray Common Data Format +REM # +REM # $Id: nxbuild.in 1030 2008-07-15 15:16:49Z Freddie Akeroyd $ +REM # +REM # @configure_input@ +REM # +REM # Script for running nxvalidate on windows +REM # +REM # Copyright (C) 2010 Freddie Akeroyd +REM # +REM # This library is free software; you can redistribute it and/or +REM # modify it under the terms of the GNU Lesser General Public +REM # License as published by the Free Software Foundation; either +REM # version 2 of the License, or (at your option) any later version. +REM # +REM # This library is distributed in the hope that it will be useful, +REM # but WITHOUT ANY WARRANTY; without even the implied warranty of +REM # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +REM # Lesser General Public License for more details. +REM # +REM # You should have received a copy of the GNU Lesser General Public +REM # License along with this library; if not, write to the Free +REM # Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, +REM # MA 02111-1307 USA +REM # +REM # For further information, see +REM # +REM #==================================================================== +set NXJAVADIR=%NEXUSDIR%\share\java +set CLASSPATH=%NXJAVADIR%\jnexus.jar;%CLASSPATH% +set PATH=%NEXUSDIR%\bin;%PATH% +java -jar "%NXJAVADIR%\NXvalidate.jar" %* diff --git a/bindings/cpp/CMakeLists.txt b/bindings/cpp/CMakeLists.txt index c807cc4a..f8b613cd 100644 --- a/bindings/cpp/CMakeLists.txt +++ b/bindings/cpp/CMakeLists.txt @@ -69,9 +69,9 @@ install (TARGETS NeXus_CPP_Static_Library NeXus_CPP_Shared_Library INSTALL (FILES ${HEADERS} DESTINATION ${NX_INCLUDE}/ COMPONENT Development) -if(WIN32) -install_pdb (NeXus_CPP_Shared_Library) -endif() +#if(WIN32) +#install_pdb (NeXus_CPP_Shared_Library) +#endif() diff --git a/cmake_include/FindHDF4.cmake b/cmake_include/FindHDF4.cmake index a45f33d6..34faaabd 100644 --- a/cmake_include/FindHDF4.cmake +++ b/cmake_include/FindHDF4.cmake @@ -33,23 +33,32 @@ if (WIN32) # set(HDF4_SEARCH_DEFAULT "C:/InstallKits/HDF4.2.6_win_x64") set(HDF4_SEARCH_DEFAULT "C:/Program Files/HDF Group/HDF4/4.2.7") - set(HD_NAMES hdfdll hd427m hd426m hd425m ) - set(HM_NAMES mfhdfdll hm427m hm426m hm425m ) + set(HD_NAMES hdf hdfdll hd427m hd426m hd425m ) + set(HM_NAMES mfhdf mfhdfdll hm427m hm426m hm425m ) + set(JPEG_NAMES libjpeg jpeg ) + set(XDR_NAMES xdr ) find_library(HDF4_HD_LIBRARY NAMES ${HD_NAMES} HINTS ${HDF4_SEARCH} ENV HDF4_ROOT PATHS ${HDF4_SEARCH_DEFAULT} PATH_SUFFIXES dll bin lib DOC "location of hd dll" NO_SYSTEM_ENVIRONMENT_PATH) find_library(HDF4_HM_LIBRARY NAMES ${HM_NAMES} HINTS ${HDF4_SEARCH} ENV HDF4_ROOT PATHS ${HDF4_SEARCH_DEFAULT} PATH_SUFFIXES dll bin lib DOC "location of hm dll" NO_SYSTEM_ENVIRONMENT_PATH) + find_library(JPEG_LIBRARY NAMES ${JPEG_NAMES} HINTS ${HDF4_SEARCH} ENV HDF4_ROOT PATHS ${HDF4_SEARCH_DEFAULT} PATH_SUFFIXES dll bin lib DOC "location of jpeg dll" NO_SYSTEM_ENVIRONMENT_PATH) + find_library(XDR_LIBRARY NAMES ${XDR_NAMES} HINTS ${HDF4_SEARCH} ENV HDF4_ROOT PATHS ${HDF4_SEARCH_DEFAULT} PATH_SUFFIXES dll bin lib DOC "location of xdr dll" NO_SYSTEM_ENVIRONMENT_PATH) else(WIN32) set(HDF4_SEARCH_DEFAULT "/usr" "/usr/local" "/usr/local/hdf4" "/sw") set(HD_NAMES df) set(HM_NAMES mfhdf) find_library(HDF4_HD_LIBRARY NAMES ${HD_NAMES} HINTS ${HDF4_SEARCH} ENV HDF4_ROOT PATHS ${HDF4_SEARCH_DEFAULT} PATH_SUFFIXES lib DOC "location of hd dll") find_library(HDF4_HM_LIBRARY NAMES ${HM_NAMES} HINTS ${HDF4_SEARCH} ENV HDF4_ROOT PATHS ${HDF4_SEARCH_DEFAULT} PATH_SUFFIXES lib DOC "location of hm dll") + find_package(JPEG) endif(WIN32) -mark_as_advanced(HDF4_HD_LIBRARY HDF4_HM_LIBRARY) +mark_as_advanced(HDF4_HD_LIBRARY HDF4_HM_LIBRARY JPEG_LIBRARY XDR_LIBRARY) + +if(WIN32) +set(WINSOCK ws2_32.lib) # needed for htonl() etc in xdr +endif(WIN32) if (HDF4_HM_LIBRARY AND HDF4_HD_LIBRARY) - set(HDF4_SHARED_LIBRARIES ${HDF4_HM_LIBRARY} ${HDF4_HD_LIBRARY}) - set(HDF4_STATIC_LIBRARIES ${HDF4_HM_LIBRARY} ${HDF4_HD_LIBRARY}) + set(HDF4_SHARED_LIBRARIES ${HDF4_HM_LIBRARY} ${HDF4_HD_LIBRARY} ${JPEG_LIBRARY} ${XDR_LIBRARY} ${WINSOCK}) + set(HDF4_STATIC_LIBRARIES ${HDF4_HM_LIBRARY} ${HDF4_HD_LIBRARY} ${JPEG_LIBRARY} ${XDR_LIBRARY} ${WINSOCK}) set(HDF4_LIBRARIES ${HDF4_SHARED_LIBRARIES} CACHE FILEPATH "Location of HDF4 libraries") get_filename_component(_HDF4_LIBDIR ${HDF4_HM_LIBRARY} PATH) get_filename_component(HDF4_ROOT_DIR "${_HDF4_LIBDIR}/.." ABSOLUTE) diff --git a/cmake_include/FindMXML.cmake b/cmake_include/FindMXML.cmake index ed58e6ef..c2dcb381 100644 --- a/cmake_include/FindMXML.cmake +++ b/cmake_include/FindMXML.cmake @@ -30,14 +30,20 @@ # looks in MXML_ROOT environment variable for hint # set MXML_FOUND MXML_DEFINITIONS MXML_INCLUDE_DIRS MXML_LIBRARIES MXML_ROOT_DIR +if (CMAKE_SIZEOF_VOID_P MATCHES "8") + set(ARCH_PREFIX 64) +else() + set(ARCH_PREFIX 32) +endif() + if (WIN32) - set(MXML_SEARCH_DEFAULT "C:/InstallKits/HDF5-1.8.6-win64") - find_library(MXML_SHARED_LIBRARIES NAMES mxml mxml1 HINTS ${MXML_SEARCH} ENV MXML_ROOT PATHS ${MXML_SEARCH_DEFAULT} PATH_SUFFIXES dll lib DOC "location of mxml dll" ) - find_library(MXML_STATIC_LIBRARIES NAMES mxml mxml1 HINTS ${MXML_SEARCH} ENV MXML_ROOT PATHS ${MXML_SEARCH_DEFAULT} PATH_SUFFIXES lib DOC "location of mxml lib" ) + set(MXML_SEARCH_DEFAULT "") + find_library(MXML_SHARED_LIBRARIES NAMES mxml mxml1 HINTS ${MXML_SEARCH} ENV MXML_ROOT PATHS ${MXML_SEARCH_DEFAULT} PATH_SUFFIXES dll${ARCH_SUFFIX} lib${ARCH_SUFFIX} dll lib DOC "location of mxml dll" ) + find_library(MXML_STATIC_LIBRARIES NAMES mxml mxml1 HINTS ${MXML_SEARCH} ENV MXML_ROOT PATHS ${MXML_SEARCH_DEFAULT} PATH_SUFFIXES lib${ARCH_SUFFIX} lib DOC "location of mxml lib" ) else(WIN32) set(MXML_SEARCH_DEFAULT "/usr" "/usr/local" "/sw") - find_library(MXML_SHARED_LIBRARIES NAMES mxml HINTS ${MXML_SEARCH} ENV MXML_ROOT PATHS ${MXML_SEARCH_DEFAULT} PATH_SUFFIXES lib DOC "location of mxml dll") - find_library(MXML_STATIC_LIBRARIES NAMES mxml HINTS ${MXML_SEARCH} ENV MXML_ROOT PATHS ${MXML_SEARCH_DEFAULT} PATH_SUFFIXES lib DOC "location of mxml lib") + find_library(MXML_SHARED_LIBRARIES NAMES mxml HINTS ${MXML_SEARCH} ENV MXML_ROOT PATHS ${MXML_SEARCH_DEFAULT} PATH_SUFFIXES lib${ARCH_SUFFIX} lib DOC "location of mxml dll") + find_library(MXML_STATIC_LIBRARIES NAMES mxml HINTS ${MXML_SEARCH} ENV MXML_ROOT PATHS ${MXML_SEARCH_DEFAULT} PATH_SUFFIXES lib${ARCH_SUFFIX} lib DOC "location of mxml lib") endif(WIN32) mark_as_advanced(MXML_SHARED_LIBRARIES MXML_STATIC_LIBRARIES) diff --git a/cmake_include/FindSZIP.cmake b/cmake_include/FindSZIP.cmake index 78615738..d9b5336c 100644 --- a/cmake_include/FindSZIP.cmake +++ b/cmake_include/FindSZIP.cmake @@ -30,8 +30,8 @@ # set SZIP_FOUND SZIP_DEFINITIONS SZIP_INCLUDE_DIRS SZIP_LIBRARIES SZIP_ROOT_DIR if (WIN32) - set(SZIP_SEARCH_DEFAULT "C:/InstallKits/HDF5-1.8.6-win64" $ENV{HDF5_ROOT}) - find_library(SZIP_LIBRARIES NAMES szip HINTS ${SZIP_SEARCH} ENV SZIP_ROOT PATHS ${SZIP_SEARCH_DEFAULT} PATH_SUFFIXES bin dll lib DOC "location of szip lib" NO_SYSTEM_ENVIRONMENT_PATH) + set(SZIP_SEARCH_DEFAULT $ENV{HDF5_ROOT}) + find_library(SZIP_LIBRARIES NAMES libszip szip HINTS ${SZIP_SEARCH} ENV SZIP_ROOT PATHS ${SZIP_SEARCH_DEFAULT} PATH_SUFFIXES bin dll lib DOC "location of szip lib" NO_SYSTEM_ENVIRONMENT_PATH) else(WIN32) set(SZIP_SEARCH_DEFAULT $ENV{HDF5_ROOT} "/usr" "/usr/local" "/usr/local/hdf5" "/sw") find_library(SZIP_LIBRARIES NAMES sz HINTS ${SZIP_SEARCH} ENV SZIP_ROOT PATHS ${SZIP_SEARCH_DEFAULT} PATH_SUFFIXES lib DOC "location of szip lib") diff --git a/configure_cmake_build.bat b/configure_cmake_build.bat new file mode 100644 index 00000000..d5fe1c59 --- /dev/null +++ b/configure_cmake_build.bat @@ -0,0 +1,55 @@ +@echo off +set NEXUS_THIRD_PARTY=C:\development\nexus-third-party + +set HDF5_ROOT64=C:\Program Files\HDF_Group\HDF5\1.8.10 +set HDF4_ROOT64=C:\Program Files\HDF_Group\HDF\4.2.8 +set MXML_ROOT64=c:\Program Files\mxml + +set HDF5_ROOT32=C:\Program Files (x86)\HDF_Group\HDF5\1.8.10 +set HDF4_ROOT32=C:\Program Files (x86)\HDF_Group\HDF\4.2.8 +set MXML_ROOT32=c:\Program Files (x86)\mxml + +cmake -DNATIVE:PATH="%NEXUS_THIRD_PARTY%" -P dir_syntax.cmake +set /P NEXUS_THIRD_PARTY_CMAKE= < dir_syntax.txt +del /q dir_syntax.txt + +cmake -DNATIVE:PATH="%HDF5_ROOT64%" -P dir_syntax.cmake +set /P HDF5_ROOT64_CMAKE= < dir_syntax.txt +del /q dir_syntax.txt + +cmake -DNATIVE:PATH="%HDF5_ROOT32%" -P dir_syntax.cmake +set /P HDF5_ROOT32_CMAKE= < dir_syntax.txt +del /q dir_syntax.txt + +rmdir /s /q build_win64 +mkdir build_win64 +cd build_win64 +set HDF5_ROOT=%HDF5_ROOT64% +set HDF4_ROOT=%HDF4_ROOT64% +set MXML_ROOT=%MXML_ROOT64% +REM -DBUILD_TESTING:BOOL=ON -DUSE_SHARED_LIBS:BOOL=ON +cmake -G "Visual Studio 10 Win64" ^ + -DZLIB_ROOT="%HDF5_ROOT64_CMAKE%" ^ + -DNEXUS_THIRD_PARTY="%NEXUS_THIRD_PARTY_CMAKE%" ^ + -DCMAKE_PREFIX_PATH="%NEXUS_THIRD_PARTY_CMAKE%/win64" ^ + .. +cd .. + +rmdir /s /q build_win32 +mkdir build_win32 +cd build_win32 +set HDF5_ROOT=%HDF5_ROOT32% +set HDF4_ROOT=%HDF4_ROOT32% +set MXML_ROOT=%MXML_ROOT32% +REM -DBUILD_TESTING:BOOL=ON -DUSE_SHARED_LIBS:BOOL=ON +cmake -G "Visual Studio 10" ^ + -DZLIB_ROOT="%HDF5_ROOT32_CMAKE%" ^ + -DNEXUS_THIRD_PARTY="%NEXUS_THIRD_PARTY_CMAKE%" ^ + -DCMAKE_PREFIX_PATH="%NEXUS_THIRD_PARTY_CMAKE%/win32" ^ + .. +cd .. + +@echo Now enter either build_win32 or build_win64 and type +@echo +@echo cmake --build . --config RelWihDebInfo --clean-first +@echo cpack -C RelWihDebInfo CPackConfig.cmake diff --git a/dir_syntax.cmake b/dir_syntax.cmake new file mode 100644 index 00000000..c201a84e --- /dev/null +++ b/dir_syntax.cmake @@ -0,0 +1,5 @@ +# +# syntax: cmake -DNATIVE:PATH="something" -P dir_syntax.cmake +# +file(TO_CMAKE_PATH "${NATIVE}" TRANS) +file(WRITE "dir_syntax.txt" "${TRANS}") \ No newline at end of file diff --git a/include/nxconfig_h_cmake.in b/include/nxconfig_h_cmake.in index 8eeaa80e..0aeba7d2 100644 --- a/include/nxconfig_h_cmake.in +++ b/include/nxconfig_h_cmake.in @@ -12,6 +12,8 @@ #cmakedefine HAVE_STRDUP +#cmakedefine01 HAVE_LIBREADLINE + #cmakedefine01 HAVE_LONG_LONG_INT #cmakedefine01 HAVE_UNSIGNED_LONG_LONG_INT @@ -33,4 +35,3 @@ #define SIZEOF_LONG_LONG_INT @SIZEOF_LONG_LONG_INT@ #define SIZEOF_SIZE_T @SIZEOF_SIZE_T@ - diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 8bc3fb8d..c51a741f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -95,7 +95,9 @@ target_link_libraries(NeXus_Static_Library ${HDF5_STATIC_LIBRARIES} ${HDF4_STATI add_library (NeXus_Shared_Library SHARED ${NAPISRC}) -set_property(TARGET NeXus_Shared_Library APPEND PROPERTY COMPILE_DEFINITIONS _HDF5USEDLL_) +#set_property(TARGET NeXus_Shared_Library APPEND PROPERTY COMPILE_DEFINITIONS _HDF5USEDLL_ _HDFDLL_) +set_property(TARGET NeXus_Shared_Library APPEND PROPERTY COMPILE_DEFINITIONS H4_BUILT_AS_STATIC_LIB) +set_property(TARGET NeXus_Static_Library APPEND PROPERTY COMPILE_DEFINITIONS H4_BUILT_AS_STATIC_LIB) if (CMAKE_CL_64) set(DEF_FILE ${PROJECT_SOURCE_DIR}/Windows_extra/libNeXus-0-x64.def) @@ -115,7 +117,7 @@ else(${CMAKE_SYSTEM_NAME} MATCHES "Windows") VERSION 1.0 SOVERSION 4) endif (${CMAKE_SYSTEM_NAME} MATCHES "Windows") -target_link_libraries(NeXus_Shared_Library ${HDF5_SHARED_LIBRARIES} ${HDF4_SHARED_LIBRARIES} ${MXML_SHARED_LIBRARIES} ${NX_LIBS}) +target_link_libraries(NeXus_Shared_Library ${HDF5_STATIC_LIBRARIES} ${HDF4_STATIC_LIBRARIES} ${MXML_STATIC_LIBRARIES} ${NX_LIBS}) #if(HAVE_MXML) #if(MXMLLIB_FOUND) @@ -131,6 +133,7 @@ install (TARGETS NeXus_Static_Library NeXus_Shared_Library RUNTIME DESTINATION bin COMPONENT Runtime LIBRARY DESTINATION lib COMPONENT Runtime ARCHIVE DESTINATION lib/nexus COMPONENT Development) -if(WIN32) -install_pdb (NeXus_Shared_Library) -endif() + +#if(WIN32) +#install_pdb (NeXus_Shared_Library) +#endif()