diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 535 |
1 files changed, 298 insertions, 237 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index cfae4d0..7e9ecc6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,6 +33,12 @@ PROJECT (HDF5 C CXX) # name conflicts with system versions, then a prefix may be added # to ensure that the correct versions configured are used. # +# HDF5_INSTALL_BIN_DIR, HDF5_INSTALL_LIB_DIR, HDF5_INSTALL_INCLUDE_DIR : +# Customize the 'bin', 'lib', and 'include' installation directories. +# +# HDF5_INSTALL_NO_DEVELOPMENT : +# Set to true to skip installation of headers and CMake package files. +# # Consider this example from the ParaView project, it builds its own zlib # library and tells HDF5 to add it as a dependency - this ensures that # any project making use of this build of HDF5 will use the correct zlib @@ -41,52 +47,28 @@ PROJECT (HDF5 C CXX) # SET(HDF5_EXTERNALLY_CONFIGURED 1) # # Avoid duplicating names of installed libraries # SET(HDF5_EXTERNAL_LIB_PREFIX "vtk") -# # Targets linking to the HDF5 libs need to know their names -# # if they are changed in the sub project, they should be here too -# SET(HDF5_LIB_NAME "vtkhdf5") -# SET(HDF5_HL_LIB_NAME "vtkhdf5_hl") -# SET(HDF5_LIBRARY "${HDF5_LIB_NAME};${HDF5_HL_LIB_NAME}") # # Export configuration to this export variable # SET(HDF5_EXPORTED_TARGETS "paraview-targets") # # # Setup all necessary overrides for zlib so that HDF5 uses our # # internally compiled zlib rather than any other version # IF(HDF5_ENABLE_Z_LIB_SUPPORT) -# # We must tell the main HDF5 library that it depends on our zlib +# # We must tell the main HDF5 library that it depends on our zlib # SET(HDF5_LIB_DEPENDENCIES vtkzlib) # # Override the zlib header file # IF(VTK_USE_SYSTEM_ZLIB) # SET(H5_ZLIB_HEADER "zlib.h") # ELSE(VTK_USE_SYSTEM_ZLIB) -# SET(H5_ZLIB_HEADER "vtk_zlib.h") +# SET(H5_ZLIB_HEADER "vtk_zlib.h") # # Set vars that FindZlib would have set if used in sub project # SET(ZLIB_INCLUDE_DIRS "${VTK_ZLIB_INCLUDE_DIRS}") # SET(ZLIB_LIBRARIES vtkzlib) # ENDIF(VTK_USE_SYSTEM_ZLIB) -# ENDIF(HDF5_ENABLE_Z_LIB_SUPPORT) -# +# ENDIF(HDF5_ENABLE_Z_LIB_SUPPORT) +# # # Add the sub project # ADD_SUBDIRECTORY(Utilities/hdf5-1.8) -# # Add the HDf5 dirs to our include path -# SET(HDF5_INCLUDE_DIR -# ${ParaView_SOURCE_DIR}/Utilities/hdf5-1.8/src -# ${ParaView_BINARY_DIR}/Utilities/hdf5-1.8 -# ${ParaView_SOURCE_DIR}/Utilities/hdf5-1.8/hl/src) -# -#----------------------------------------------------------------------------- - #----------------------------------------------------------------------------- -# Basic HDF5 stuff here -#----------------------------------------------------------------------------- -SET (HDF5_PACKAGE "hdf5") -SET (HDF5_PACKAGE_NAME "HDF5") -SET (HDF5_PACKAGE_VERSION "${H5_VERS_MAJOR}.${H5_VERS_MINOR}.${H5_VERS_RELEASE}") -SET (HDF5_PACKAGE_VERSION_MAJOR "${H5_VERS_MAJOR}.${H5_VERS_MINOR}") -SET (HDF5_PACKAGE_VERSION_MINOR "${H5_VERS_RELEASE}") -SET (HDF5_PACKAGE_STRING "${HDF5_PACKAGE_NAME} ${HDF5_PACKAGE_VERSION}") -SET (HDF5_PACKAGE_TARNAME "hdf5") -SET (HDF5_PACKAGE_URL "http://www.hdfgroup.org") -SET (HDF5_PACKAGE_BUGREPORT "help@hdfgroup.org") #----------------------------------------------------------------------------- # Set the core names of all the libraries @@ -121,17 +103,72 @@ SET (HDF5_HL_F90_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_HL_F90_LIB_CO SET (HDF5_HL_F90_C_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_HL_F90_C_LIB_CORENAME}") #----------------------------------------------------------------------------- +# Set the target names of all the libraries +#----------------------------------------------------------------------------- +SET (HDF5_LIB_TARGET ${HDF5_LIB_CORENAME}) +SET (HDF5_TEST_LIB_TARGET ${HDF5_TEST_LIB_CORENAME}) +SET (HDF5_CPP_LIB_TARGET ${HDF5_CPP_LIB_CORENAME}) +SET (HDF5_HL_LIB_TARGET ${HDF5_HL_LIB_CORENAME}) +SET (HDF5_HL_CPP_LIB_TARGET ${HDF5_HL_CPP_LIB_CORENAME}) +SET (HDF5_TOOLS_LIB_TARGET ${HDF5_TOOLS_LIB_CORENAME}) +SET (HDF5_F90_LIB_TARGET ${HDF5_F90_LIB_CORENAME}) +SET (HDF5_F90_C_LIB_TARGET ${HDF5_F90_C_LIB_CORENAME}) +SET (HDF5_F90_TEST_LIB_TARGET ${HDF5_F90_TEST_LIB_CORENAME}) +SET (HDF5_F90_C_TEST_LIB_TARGET ${HDF5_F90_C_TEST_LIB_CORENAME}) +SET (HDF5_HL_F90_LIB_TARGET ${HDF5_HL_F90_LIB_CORENAME}) +SET (HDF5_HL_F90_C_LIB_TARGET ${HDF5_HL_F90_C_LIB_CORENAME}) + +#----------------------------------------------------------------------------- # Define some CMake variables for use later in the project #----------------------------------------------------------------------------- SET (HDF5_RESOURCES_DIR ${HDF5_SOURCE_DIR}/config/cmake) SET (HDF5_SRC_DIR ${HDF5_SOURCE_DIR}/src) -SET (HDF5_TEST_SOURCE_DIR ${HDF5_SOURCE_DIR}/test) -SET (HDF5_CPP_SOURCE_DIR ${HDF5_SOURCE_DIR}/c++) -SET (HDF5_CPP_TEST_DIR ${HDF5_CPP_SOURCE_DIR}/test) -SET (HDF5_HL_SOURCE_DIR ${HDF5_SOURCE_DIR}/hl) -SET (HDF5_TOOLS_SOURCE_DIR ${HDF5_SOURCE_DIR}/tools) -SET (HDF5_PERFORM_SOURCE_DIR ${HDF5_SOURCE_DIR}/perform) -SET (HDF5_F90_SOURCE_DIR ${HDF5_SOURCE_DIR}/fortran) +SET (HDF5_TEST_SRC_DIR ${HDF5_SOURCE_DIR}/test) +SET (HDF5_CPP_SRC_DIR ${HDF5_SOURCE_DIR}/c++) +SET (HDF5_CPP_TST_DIR ${HDF5_SOURCE_DIR}/c++/test) +SET (HDF5_HL_SRC_DIR ${HDF5_SOURCE_DIR}/hl) +SET (HDF5_HL_CPP_SRC_DIR ${HDF5_SOURCE_DIR}/hl/c++) +SET (HDF5_TOOLS_SRC_DIR ${HDF5_SOURCE_DIR}/tools) +SET (HDF5_PERFORM_SRC_DIR ${HDF5_SOURCE_DIR}/perform) +SET (HDF5_F90_SRC_DIR ${HDF5_SOURCE_DIR}/fortran) + +# set default prefix location +SET (CMAKE_INSTALL_PREFIX "./hdf5" CACHE PATH "Install path prefix, prepended onto install directories") + +IF (NOT HDF5_INSTALL_BIN_DIR) + SET (HDF5_INSTALL_BIN_DIR bin) +ENDIF (NOT HDF5_INSTALL_BIN_DIR) +IF (NOT HDF5_INSTALL_LIB_DIR) + SET (HDF5_INSTALL_LIB_DIR lib) +ENDIF (NOT HDF5_INSTALL_LIB_DIR) +IF (NOT HDF5_INSTALL_INCLUDE_DIR) + SET (HDF5_INSTALL_INCLUDE_DIR include) +ENDIF (NOT HDF5_INSTALL_INCLUDE_DIR) + +#----------------------------------------------------------------------------- +# parse the full version number from H5public.h and include in H5_VERS_INFO +#----------------------------------------------------------------------------- +FILE (READ ${HDF5_SRC_DIR}/H5public.h _h5public_h_contents) +STRING (REGEX REPLACE ".*#define[ \t]+H5_VERS_MAJOR[ \t]+([0-9]*).*$" + "\\1" H5_VERS_MAJOR ${_h5public_h_contents}) +STRING (REGEX REPLACE ".*#define[ \t]+H5_VERS_MINOR[ \t]+([0-9]*).*$" + "\\1" H5_VERS_MINOR ${_h5public_h_contents}) +STRING (REGEX REPLACE ".*#define[ \t]+H5_VERS_RELEASE[ \t]+([0-9]*).*$" + "\\1" H5_VERS_RELEASE ${_h5public_h_contents}) +#MESSAGE (STATUS "VERSION: ${H5_VERS_MAJOR}.${H5_VERS_MINOR}.${H5_VERS_RELEASE}-${H5_VERS_SUBRELEASE}") + +#----------------------------------------------------------------------------- +# Basic HDF5 stuff here +#----------------------------------------------------------------------------- +SET (HDF5_PACKAGE "hdf5") +SET (HDF5_PACKAGE_NAME "HDF5") +SET (HDF5_PACKAGE_VERSION "${H5_VERS_MAJOR}.${H5_VERS_MINOR}.${H5_VERS_RELEASE}") +SET (HDF5_PACKAGE_VERSION_MAJOR "${H5_VERS_MAJOR}.${H5_VERS_MINOR}") +SET (HDF5_PACKAGE_VERSION_MINOR "${H5_VERS_RELEASE}") +SET (HDF5_PACKAGE_STRING "${HDF5_PACKAGE_NAME} ${HDF5_PACKAGE_VERSION}") +SET (HDF5_PACKAGE_TARNAME "hdf5") +SET (HDF5_PACKAGE_URL "http://www.hdfgroup.org") +SET (HDF5_PACKAGE_BUGREPORT "help@hdfgroup.org") #----------------------------------------------------------------------------- # Include some macros for reusable code @@ -160,7 +197,7 @@ ELSE (NOT HDF5_EXTERNALLY_CONFIGURED) IF (NOT CMAKE_RUNTIME_OUTPUT_DIRECTORY) SET (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}) ENDIF (NOT CMAKE_RUNTIME_OUTPUT_DIRECTORY) -ENDIF(NOT HDF5_EXTERNALLY_CONFIGURED) +ENDIF (NOT HDF5_EXTERNALLY_CONFIGURED) #----------------------------------------------------------------------------- # Targets built within this project are exported at Install time for use @@ -175,7 +212,7 @@ ENDIF (NOT HDF5_EXPORTED_TARGETS) # add it to this variable. This is NOT used by Make Install, but for projects # which include hdf5 as a sub-project within their build tree #----------------------------------------------------------------------------- -SET_GLOBAL_VARIABLE(HDF5_LIBRARIES_TO_EXPORT "") +SET_GLOBAL_VARIABLE (HDF5_LIBRARIES_TO_EXPORT "") #----------------------------------------------------------------------------- # Run all the CMake configuration tests for our build environment @@ -212,7 +249,7 @@ IF (BUILD_SHARED_LIBS) ELSE (BUILD_SHARED_LIBS) IF (NOT WIN32) # should this be a user setting : Everyone uses it anyway ? - ADD_DEFINITIONS(-DPIC) + ADD_DEFINITIONS (-DPIC) ENDIF (NOT WIN32) IF (MSVC) SET (CMAKE_MFC_FLAG 0) @@ -239,22 +276,6 @@ IF (HDF5_ENABLE_COVERAGE) ENDIF (HDF5_ENABLE_COVERAGE) #----------------------------------------------------------------------------- -# Set the target names of all the libraries -#----------------------------------------------------------------------------- -SET (HDF5_LIB_TARGET ${HDF5_LIB_CORENAME}) -SET (HDF5_TEST_LIB_TARGET ${HDF5_TEST_LIB_CORENAME}) -SET (HDF5_CPP_LIB_TARGET ${HDF5_CPP_LIB_CORENAME}) -SET (HDF5_HL_LIB_TARGET ${HDF5_HL_LIB_CORENAME}) -SET (HDF5_HL_CPP_LIB_TARGET ${HDF5_HL_CPP_LIB_CORENAME}) -SET (HDF5_TOOLS_LIB_TARGET ${HDF5_TOOLS_LIB_CORENAME}) -SET (HDF5_F90_LIB_TARGET ${HDF5_F90_LIB_CORENAME}) -SET (HDF5_F90_C_LIB_TARGET ${HDF5_F90_C_LIB_CORENAME}) -SET (HDF5_F90_TEST_LIB_TARGET ${HDF5_F90_TEST_LIB_CORENAME}) -SET (HDF5_F90_C_TEST_LIB_TARGET ${HDF5_F90_C_TEST_LIB_CORENAME}) -SET (HDF5_HL_F90_LIB_TARGET ${HDF5_HL_F90_LIB_CORENAME}) -SET (HDF5_HL_F90_C_LIB_TARGET ${HDF5_HL_F90_C_LIB_CORENAME}) - -#----------------------------------------------------------------------------- # When building utility executables that generate other (source) files : # we make use of the following variables defined in the root CMakeLists. # Certain systems may add /Debug or /Release to output paths @@ -316,9 +337,9 @@ IF (HDF5_DISABLE_COMPILER_WARNINGS) CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /w") ENDIF (MSVC) - IF(WIN32) + IF (WIN32) ADD_DEFINITIONS (-D_CRT_SECURE_NO_WARNINGS) - ENDIF(WIN32) + ENDIF (WIN32) # Borland uses -w- to suppress warnings. IF (BORLAND) SET (HDF5_WARNINGS_BLOCKED 1) @@ -343,18 +364,6 @@ IF (CMAKE_COMPILER_IS_GNUCXX) ENDIF (CMAKE_COMPILER_IS_GNUCXX) #----------------------------------------------------------------------------- -# parse the full version number from H5public.h and include in H5_VERS_INFO -#----------------------------------------------------------------------------- -FILE (READ ${HDF5_SRC_DIR}/H5public.h _h5public_h_contents) -STRING (REGEX REPLACE ".*#define[ \t]+H5_VERS_MAJOR[ \t]+([0-9]*).*$" - "\\1" H5_VERS_MAJOR ${_h5public_h_contents}) -STRING (REGEX REPLACE ".*#define[ \t]+H5_VERS_MINOR[ \t]+([0-9]*).*$" - "\\1" H5_VERS_MINOR ${_h5public_h_contents}) -STRING (REGEX REPLACE ".*#define[ \t]+H5_VERS_RELEASE[ \t]+([0-9]*).*$" - "\\1" H5_VERS_RELEASE ${_h5public_h_contents}) -#MESSAGE (STATUS "VERSION: ${H5_VERS_MAJOR}.${H5_VERS_MINOR}.${H5_VERS_RELEASE}-${H5_VERS_SUBRELEASE}") - -#----------------------------------------------------------------------------- # All libs/tests/examples need the main include directories #----------------------------------------------------------------------------- INCLUDE_DIRECTORIES (${HDF5_BINARY_DIR} ${HDF5_SRC_DIR}) @@ -362,6 +371,7 @@ INCLUDE_DIRECTORIES (${HDF5_BINARY_DIR} ${HDF5_SRC_DIR}) #----------------------------------------------------------------------------- # Option to Enable MPI Parallel #----------------------------------------------------------------------------- +SET (CMAKE_MODULE_PATH ${HDF5_RESOURCES_DIR} ${CMAKE_MODULE_PATH}) OPTION (HDF5_ENABLE_PARALLEL "Enable parallel build (requires MPI)" OFF) IF (HDF5_ENABLE_PARALLEL) INCLUDE (FindMPI) @@ -394,7 +404,7 @@ ENDIF (H5_HAVE_PARALLEL) # Option to use 1.6.x API #----------------------------------------------------------------------------- OPTION (HDF5_USE_16_API_DEFAULT "Use the HDF5 1.6.x API by default" OFF) -SET (USE_16_API_DEFAULT 0) +SET (H5_USE_16_API_DEFAULT 0) IF (HDF5_USE_16_API_DEFAULT) SET (H5_USE_16_API_DEFAULT 1) ENDIF (HDF5_USE_16_API_DEFAULT) @@ -436,7 +446,6 @@ IF (HDF5_ENABLE_Z_LIB_SUPPORT) SET (H5_HAVE_ZLIB_H 1) SET (H5_HAVE_LIBZ 1) ENDIF (NOT H5_ZLIB_HEADER) - CONFIGURE_FILE (${HDF5_RESOURCES_DIR}/hdf5_zlib.h.in ${HDF5_BINARY_DIR}/hdf5_zlib.h @ONLY) SET (LINK_LIBS ${LINK_LIBS} ${ZLIB_LIBRARIES}) INCLUDE_DIRECTORIES (${ZLIB_INCLUDE_DIRS}) MESSAGE (STATUS "Filter ZLIB is ON") @@ -494,14 +503,25 @@ ENDIF (HDF5_BUILD_TOOLS AND BUILD_TESTING) #----------------------------------------------------------------------------- OPTION (BUILD_TESTING "Build HDF5 Unit Testing" OFF) IF (BUILD_TESTING) - SET (DART_TESTING_TIMEOUT 1200 CACHE INTEGER - "Timeout in seconds for each test (default 1200=20minutes)") + SET (DART_TESTING_TIMEOUT 1200 + CACHE INTEGER + "Timeout in seconds for each test (default 1200=20minutes)" + ) ENABLE_TESTING () INCLUDE (CTest) IF (NOT HDF5_EXTERNALLY_CONFIGURED) - ADD_SUBDIRECTORY (${HDF5_SOURCE_DIR}/tools/lib ${PROJECT_BINARY_DIR}/tools/lib) - ADD_SUBDIRECTORY (${HDF5_SOURCE_DIR}/test ${PROJECT_BINARY_DIR}/test) - ADD_SUBDIRECTORY (${HDF5_SOURCE_DIR}/perform ${PROJECT_BINARY_DIR}/perform) + IF (EXISTS "${HDF5_SOURCE_DIR}/test" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/test") + ADD_SUBDIRECTORY (${HDF5_SOURCE_DIR}/tools/lib ${PROJECT_BINARY_DIR}/tools/lib) + ADD_SUBDIRECTORY (${HDF5_SOURCE_DIR}/test ${PROJECT_BINARY_DIR}/test) + ENDIF (EXISTS "${HDF5_SOURCE_DIR}/test" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/test") + IF (EXISTS "${HDF5_SOURCE_DIR}/perform" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/perform") + ADD_SUBDIRECTORY (${HDF5_SOURCE_DIR}/perform ${PROJECT_BINARY_DIR}/perform) + ENDIF(EXISTS "${HDF5_SOURCE_DIR}/perform" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/perform") + IF (H5_HAVE_PARALLEL) + IF (EXISTS "${HDF5_SOURCE_DIR}/testpar" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/testpar") + ADD_SUBDIRECTORY (${HDF5_SOURCE_DIR}/testpar ${PROJECT_BINARY_DIR}/testpar) + ENDIF (EXISTS "${HDF5_SOURCE_DIR}/testpar" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/testpar") + ENDIF (H5_HAVE_PARALLEL) ENDIF (NOT HDF5_EXTERNALLY_CONFIGURED) INCLUDE (${HDF5_SOURCE_DIR}/CTestConfig.cmake) ENDIF (BUILD_TESTING) @@ -511,49 +531,62 @@ ENDIF (BUILD_TESTING) # Make sure this appears before the CONFIGURE_FILE step # so that fortran name mangling is detected before writing H5pubconf.h #----------------------------------------------------------------------------- -OPTION (HDF5_BUILD_FORTRAN "Build FORTRAN support" OFF) -IF (HDF5_BUILD_FORTRAN) - # Set default name mangling : overridden by Fortran detection in fortran dir - SET (H5_FC_FUNC "H5_FC_FUNC(name,NAME) name ## _") - SET (H5_FC_FUNC_ "H5_FC_FUNC_(name,NAME) name ## _") - ADD_SUBDIRECTORY (${HDF5_SOURCE_DIR}/fortran ${PROJECT_BINARY_DIR}/fortran) -ELSE (HDF5_BUILD_FORTRAN) - SET (H5_FC_FUNC "H5_FC_FUNC(name,NAME) name ## _") - SET (H5_FC_FUNC_ "H5_FC_FUNC_(name,NAME) name ## _") -ENDIF (HDF5_BUILD_FORTRAN) +# Set default name mangling : overridden by Fortran detection in fortran dir +SET (H5_FC_FUNC "H5_FC_FUNC(name,NAME) name ## _") +SET (H5_FC_FUNC_ "H5_FC_FUNC_(name,NAME) name ## _") +IF (EXISTS "${HDF5_SOURCE_DIR}/fortran" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/fortran") + OPTION (HDF5_BUILD_FORTRAN "Build FORTRAN support" OFF) + IF (HDF5_BUILD_FORTRAN) + ADD_SUBDIRECTORY (${HDF5_SOURCE_DIR}/fortran ${PROJECT_BINARY_DIR}/fortran) + IF (HDF5_BUILD_HL_LIB) + IF (EXISTS "${HDF5_SOURCE_DIR}/hl/fortran" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/hl/fortran") + #-- Build the High Level Fortran source codes + ADD_SUBDIRECTORY (${HDF5_SOURCE_DIR}/hl/fortran ${HDF5_BINARY_DIR}/hl/fortran) + ENDIF (EXISTS "${HDF5_SOURCE_DIR}/hl/fortran" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/hl/fortran") + ENDIF (HDF5_BUILD_HL_LIB) + ENDIF (HDF5_BUILD_FORTRAN) +ENDIF (EXISTS "${HDF5_SOURCE_DIR}/fortran" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/fortran") #----------------------------------------------------------------------------- # Option to build examples #----------------------------------------------------------------------------- -OPTION (HDF5_BUILD_EXAMPLES "Build HDF5 Library Examples" OFF) -IF (HDF5_BUILD_EXAMPLES) - ADD_SUBDIRECTORY (${HDF5_SOURCE_DIR}/examples ${PROJECT_BINARY_DIR}/examples) -ENDIF (HDF5_BUILD_EXAMPLES) +IF (EXISTS "${HDF5_SOURCE_DIR}/examples" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/examples") + OPTION (HDF5_BUILD_EXAMPLES "Build HDF5 Library Examples" OFF) + IF (HDF5_BUILD_EXAMPLES) + ADD_SUBDIRECTORY (${HDF5_SOURCE_DIR}/examples ${PROJECT_BINARY_DIR}/examples) + ENDIF (HDF5_BUILD_EXAMPLES) +ENDIF (EXISTS "${HDF5_SOURCE_DIR}/examples" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/examples") #----------------------------------------------------------------------------- # Option to build HDF5 C++ Library #----------------------------------------------------------------------------- -OPTION (HDF5_BUILD_CPP_LIB "Build HDF5 C++ Library" OFF) -IF (HDF5_BUILD_CPP_LIB) - ADD_SUBDIRECTORY (${HDF5_SOURCE_DIR}/c++ ${PROJECT_BINARY_DIR}/c++) -ENDIF (HDF5_BUILD_CPP_LIB) +IF (EXISTS "${HDF5_SOURCE_DIR}/c++" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/c++") + OPTION (HDF5_BUILD_CPP_LIB "Build HDF5 C++ Library" OFF) + IF (HDF5_BUILD_CPP_LIB) + ADD_SUBDIRECTORY (${HDF5_SOURCE_DIR}/c++ ${PROJECT_BINARY_DIR}/c++) + ENDIF (HDF5_BUILD_CPP_LIB) +ENDIF (EXISTS "${HDF5_SOURCE_DIR}/c++" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/c++") #----------------------------------------------------------------------------- # Option to build HDF5 Tools #----------------------------------------------------------------------------- -OPTION (HDF5_BUILD_TOOLS "Build HDF5 Tools" OFF) -IF (HDF5_BUILD_TOOLS) - ADD_SUBDIRECTORY (${HDF5_SOURCE_DIR}/tools ${PROJECT_BINARY_DIR}/tools) -ENDIF (HDF5_BUILD_TOOLS) +IF (EXISTS "${HDF5_SOURCE_DIR}/tools" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/tools") + OPTION (HDF5_BUILD_TOOLS "Build HDF5 Tools" OFF) + IF (HDF5_BUILD_TOOLS) + ADD_SUBDIRECTORY (${HDF5_SOURCE_DIR}/tools ${PROJECT_BINARY_DIR}/tools) + ENDIF (HDF5_BUILD_TOOLS) +ENDIF (EXISTS "${HDF5_SOURCE_DIR}/tools" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/tools") #----------------------------------------------------------------------------- # Option to build High Level API's #----------------------------------------------------------------------------- -OPTION (HDF5_BUILD_HL_LIB "Build HIGH Level HDF5 Library" OFF) -IF (HDF5_BUILD_HL_LIB) - SET (H5_INCLUDE_HL 1) - ADD_SUBDIRECTORY (${HDF5_SOURCE_DIR}/hl ${PROJECT_BINARY_DIR}/hl) -ENDIF (HDF5_BUILD_HL_LIB) +IF (EXISTS "${HDF5_SOURCE_DIR}/hl" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/hl") + OPTION (HDF5_BUILD_HL_LIB "Build HIGH Level HDF5 Library" OFF) + IF (HDF5_BUILD_HL_LIB) + SET (H5_INCLUDE_HL 1) + ADD_SUBDIRECTORY (${HDF5_SOURCE_DIR}/hl ${PROJECT_BINARY_DIR}/hl) + ENDIF (HDF5_BUILD_HL_LIB) +ENDIF (EXISTS "${HDF5_SOURCE_DIR}/hl" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/hl") #----------------------------------------------------------------------------- # Generate the H5pubconf.h file containing user settings needed by compilation @@ -563,174 +596,202 @@ CONFIGURE_FILE (${HDF5_RESOURCES_DIR}/H5pubconf.h.in ${HDF5_BINARY_DIR}/H5pubcon #----------------------------------------------------------------------------- # Add file(s) to CMake Install #----------------------------------------------------------------------------- -INSTALL ( - FILES - ${PROJECT_BINARY_DIR}/H5pubconf.h - DESTINATION - include - COMPONENT - headers -) +IF (NOT HDF5_INSTALL_NO_DEVELOPMENT) + INSTALL ( + FILES + ${PROJECT_BINARY_DIR}/H5pubconf.h + DESTINATION + ${HDF5_INSTALL_INCLUDE_DIR} + COMPONENT + headers + ) +ENDIF (NOT HDF5_INSTALL_NO_DEVELOPMENT) #----------------------------------------------------------------------------- # Add Target(s) to CMake Install for import into other projects #----------------------------------------------------------------------------- -INSTALL ( - EXPORT - ${HDF5_EXPORTED_TARGETS} - DESTINATION - lib - FILE - HDF5-targets.cmake -) +IF (NOT HDF5_EXTERNALLY_CONFIGURED) + INSTALL ( + EXPORT + ${HDF5_EXPORTED_TARGETS} + DESTINATION + lib/cmake/hdf5-${HDF5_PACKAGE_VERSION} + FILE + hdf5-targets.cmake + ) +ENDIF (NOT HDF5_EXTERNALLY_CONFIGURED) #----------------------------------------------------------------------------- # Export all exported targets to the build tree for use by parent project #----------------------------------------------------------------------------- -EXPORT ( - TARGETS - ${HDF5_LIBRARIES_TO_EXPORT} ${HDF5_LIB_DEPENDENCIES} - FILE - HDF5-targets.cmake -) +IF (NOT HDF5_EXTERNALLY_CONFIGURED) + EXPORT ( + TARGETS + ${HDF5_LIBRARIES_TO_EXPORT} ${HDF5_LIB_DEPENDENCIES} + FILE + hdf5-targets.cmake + ) +ENDIF (NOT HDF5_EXTERNALLY_CONFIGURED) #----------------------------------------------------------------------------- -# Configure the HDF5-config.cmake file for the build directory +# Configure the hdf5-config.cmake file for the build directory #----------------------------------------------------------------------------- SET (HDF5_INCLUDES_BUILD_TIME - ${HDF5_SRC_DIR} ${HDF5_CPP_SOURCE_DIR} ${HDF5_HL_SOURCE_DIR} - ${HDF5_TOOLS_SOURCE_DIR} ${HDF5_BINARY_DIR} + ${HDF5_SRC_DIR} ${HDF5_CPP_SRC_DIR} ${HDF5_HL_SRC_DIR} + ${HDF5_TOOLS_SRC_DIR} ${HDF5_BINARY_DIR} ) SET (HDF5_VERSION_STRING @HDF5_PACKAGE_VERSION@) SET (HDF5_VERSION_MAJOR @HDF5_PACKAGE_VERSION_MAJOR@) SET (HDF5_VERSION_MINOR @HDF5_PACKAGE_VERSION_MINOR@) CONFIGURE_FILE ( - ${HDF5_RESOURCES_DIR}/HDF5-config.cmake.build.in - ${HDF5_BINARY_DIR}/HDF5-config.cmake @ONLY + ${HDF5_RESOURCES_DIR}/hdf5-config.cmake.build.in + ${HDF5_BINARY_DIR}/hdf5-config.cmake @ONLY ) #----------------------------------------------------------------------------- -# Configure the HDF5-config.cmake file for the install directory +# Configure the hdf5-config.cmake file for the install directory #----------------------------------------------------------------------------- -INSTALL (CODE - "SET (HDF5_INSTALL_SKIP_TARGETS 1) - INCLUDE (${HDF5_BINARY_DIR}/HDF5-config.cmake) - CONFIGURE_FILE ( - \"${HDF5_RESOURCES_DIR}/HDF5-config.cmake.install.in\" - \"${CMAKE_INSTALL_PREFIX}/lib/HDF5-config.cmake\" @ONLY - ) - " -) - -#----------------------------------------------------------------------------- -# Set the cpack variables -#----------------------------------------------------------------------------- -SET (CPACK_PACKAGE_VENDOR "The HDF Group") -SET (CPACK_PACKAGE_NAME "${HDF5_PACKAGE_NAME}") -SET (CPACK_PACKAGE_VERSION "${HDF5_PACKAGE_VERSION}") -SET (CPACK_PACKAGE_VERSION_MAJOR "${HDF5_PACKAGE_VERSION_MAJOR}") -SET (CPACK_PACKAGE_VERSION_MINOR "${HDF5_PACKAGE_VERSION_MINOR}") -SET (CPACK_PACKAGE_VERSION_PATCH "") -SET (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/release_docs/COPYING") - -IF (WIN32) - SET (CPACK_NSIS_PACKAGE_NAME "HDF5 ${HDF5_PACKAGE_VERSION}") -ENDIF (WIN32) - -INCLUDE (CPack) +IF (NOT HDF5_EXTERNALLY_CONFIGURED) + CONFIGURE_FILE ( + ${HDF5_RESOURCES_DIR}/hdf5-config.cmake.install.in + ${HDF5_BINARY_DIR}/CMakeFiles/hdf5-config.cmake @ONLY + ) + INSTALL ( + FILES + ${HDF5_BINARY_DIR}/CMakeFiles/hdf5-config.cmake + DESTINATION + lib/cmake/hdf5-${HDF5_PACKAGE_VERSION} + ) +ENDIF (NOT HDF5_EXTERNALLY_CONFIGURED) #----------------------------------------------------------------------------- -# Now list the cpack commands +# Configure the hdf5-config-version .cmake file for the install directory #----------------------------------------------------------------------------- -CPACK_ADD_COMPONENT (applications - DISPLAY_NAME "HDF5 Applications" - DEPENDS libraries - GROUP Applications -) -CPACK_ADD_COMPONENT (libraries - DISPLAY_NAME "HDF5 Libraries" - GROUP Runtime -) -CPACK_ADD_COMPONENT (headers - DISPLAY_NAME "HDF5 Headers" - DEPENDS libraries - GROUP Development -) - -IF (HDF5_BUILD_FORTRAN) - CPACK_ADD_COMPONENT (fortlibraries - DISPLAY_NAME "HDF5 Fortran Libraries" - DEPENDS libraries - GROUP Runtime +IF (NOT HDF5_EXTERNALLY_CONFIGURED) + CONFIGURE_FILE ( + ${HDF5_RESOURCES_DIR}/hdf5-config-version.cmake.in + ${HDF5_BINARY_DIR}/CMakeFiles/hdf5-config-version.cmake @ONLY ) - CPACK_ADD_COMPONENT (fortheaders - DISPLAY_NAME "HDF5 Fortran Headers" - DEPENDS fortlibraries - GROUP Development + INSTALL ( + FILES + ${HDF5_BINARY_DIR}/CMakeFiles/hdf5-config-version.cmake + DESTINATION + lib/cmake/hdf5-${HDF5_PACKAGE_VERSION} ) -ENDIF (HDF5_BUILD_FORTRAN) +ENDIF (NOT HDF5_EXTERNALLY_CONFIGURED) -IF (HDF5_BUILD_CPP_LIB) - CPACK_ADD_COMPONENT (cpplibraries - DISPLAY_NAME "HDF5 C++ Libraries" +#----------------------------------------------------------------------------- +# Set the cpack variables +#----------------------------------------------------------------------------- +IF (NOT HDF5_EXTERNALLY_CONFIGURED AND EXISTS "${HDF5_SOURCE_DIR}/release_docs") + SET (CPACK_PACKAGE_VENDOR "The HDF Group") + SET (CPACK_PACKAGE_NAME "${HDF5_PACKAGE_NAME}") + SET (CPACK_PACKAGE_VERSION "${HDF5_PACKAGE_VERSION}") + SET (CPACK_PACKAGE_VERSION_MAJOR "${HDF5_PACKAGE_VERSION_MAJOR}") + SET (CPACK_PACKAGE_VERSION_MINOR "${HDF5_PACKAGE_VERSION_MINOR}") + SET (CPACK_PACKAGE_VERSION_PATCH "") + SET (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/release_docs/COPYING") + + IF (WIN32) + SET (CPACK_NSIS_PACKAGE_NAME "HDF5 ${HDF5_PACKAGE_VERSION}") + ENDIF (WIN32) + + INCLUDE (CPack) + + #--------------------------------------------------------------------------- + # Now list the cpack commands + #--------------------------------------------------------------------------- + CPACK_ADD_COMPONENT (applications + DISPLAY_NAME "HDF5 Applications" DEPENDS libraries - GROUP Runtime - ) - CPACK_ADD_COMPONENT (cppheaders - DISPLAY_NAME "HDF5 C++ Headers" - DEPENDS cpplibraries - GROUP Development - ) -ENDIF (HDF5_BUILD_CPP_LIB) - -IF (HDF5_BUILD_TOOLS) - CPACK_ADD_COMPONENT (toolsapplications - DISPLAY_NAME "HDF5 Tools Applications" - DEPENDS toolslibraries GROUP Applications ) - CPACK_ADD_COMPONENT (toolslibraries - DISPLAY_NAME "HDF5 Tools Libraries" - DEPENDS libraries + CPACK_ADD_COMPONENT (libraries + DISPLAY_NAME "HDF5 Libraries" GROUP Runtime ) - CPACK_ADD_COMPONENT (toolsheaders - DISPLAY_NAME "HDF5 Tools Headers" - DEPENDS toolslibraries - GROUP Development - ) -ENDIF (HDF5_BUILD_TOOLS) - -IF (HDF5_BUILD_HL_LIB) - CPACK_ADD_COMPONENT (hllibraries - DISPLAY_NAME "HDF5 HL Libraries" + CPACK_ADD_COMPONENT (headers + DISPLAY_NAME "HDF5 Headers" DEPENDS libraries - GROUP Runtime - ) - CPACK_ADD_COMPONENT (hlheaders - DISPLAY_NAME "HDF5 HL Headers" - DEPENDS hllibraries GROUP Development ) - CPACK_ADD_COMPONENT (hltoolsapplications - DISPLAY_NAME "HDF5 HL Tools Applications" - DEPENDS hllibraries - GROUP Applications - ) - CPACK_ADD_COMPONENT (hlcpplibraries - DISPLAY_NAME "HDF5 HL C++ Libraries" - DEPENDS hllibraries - GROUP Runtime - ) - CPACK_ADD_COMPONENT (hlcppheaders - DISPLAY_NAME "HDF5 HL C++ Headers" - DEPENDS hlcpplibraries - GROUP Development - ) - CPACK_ADD_COMPONENT (hlfortlibraries - DISPLAY_NAME "HDF5 HL Fortran Libraries" - DEPENDS fortlibraries - GROUP Runtime - ) -ENDIF (HDF5_BUILD_HL_LIB) + + IF (HDF5_BUILD_FORTRAN) + CPACK_ADD_COMPONENT (fortlibraries + DISPLAY_NAME "HDF5 Fortran Libraries" + DEPENDS libraries + GROUP Runtime + ) + CPACK_ADD_COMPONENT (fortheaders + DISPLAY_NAME "HDF5 Fortran Headers" + DEPENDS fortlibraries + GROUP Development + ) + ENDIF (HDF5_BUILD_FORTRAN) + + IF (HDF5_BUILD_CPP_LIB) + CPACK_ADD_COMPONENT (cpplibraries + DISPLAY_NAME "HDF5 C++ Libraries" + DEPENDS libraries + GROUP Runtime + ) + CPACK_ADD_COMPONENT (cppheaders + DISPLAY_NAME "HDF5 C++ Headers" + DEPENDS cpplibraries + GROUP Development + ) + ENDIF (HDF5_BUILD_CPP_LIB) + + IF (HDF5_BUILD_TOOLS) + CPACK_ADD_COMPONENT (toolsapplications + DISPLAY_NAME "HDF5 Tools Applications" + DEPENDS toolslibraries + GROUP Applications + ) + CPACK_ADD_COMPONENT (toolslibraries + DISPLAY_NAME "HDF5 Tools Libraries" + DEPENDS libraries + GROUP Runtime + ) + CPACK_ADD_COMPONENT (toolsheaders + DISPLAY_NAME "HDF5 Tools Headers" + DEPENDS toolslibraries + GROUP Development + ) + ENDIF (HDF5_BUILD_TOOLS) + + IF (HDF5_BUILD_HL_LIB) + CPACK_ADD_COMPONENT (hllibraries + DISPLAY_NAME "HDF5 HL Libraries" + DEPENDS libraries + GROUP Runtime + ) + CPACK_ADD_COMPONENT (hlheaders + DISPLAY_NAME "HDF5 HL Headers" + DEPENDS hllibraries + GROUP Development + ) + CPACK_ADD_COMPONENT (hltoolsapplications + DISPLAY_NAME "HDF5 HL Tools Applications" + DEPENDS hllibraries + GROUP Applications + ) + CPACK_ADD_COMPONENT (hlcpplibraries + DISPLAY_NAME "HDF5 HL C++ Libraries" + DEPENDS hllibraries + GROUP Runtime + ) + CPACK_ADD_COMPONENT (hlcppheaders + DISPLAY_NAME "HDF5 HL C++ Headers" + DEPENDS hlcpplibraries + GROUP Development + ) + CPACK_ADD_COMPONENT (hlfortlibraries + DISPLAY_NAME "HDF5 HL Fortran Libraries" + DEPENDS fortlibraries + GROUP Runtime + ) + ENDIF (HDF5_BUILD_HL_LIB) + +ENDIF (NOT HDF5_EXTERNALLY_CONFIGURED AND EXISTS "${HDF5_SOURCE_DIR}/release_docs") |