summaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt535
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")