summaryrefslogtreecommitdiffstats
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorAllen Byrne <byrn@hdfgroup.org>2010-05-12 18:51:33 (GMT)
committerAllen Byrne <byrn@hdfgroup.org>2010-05-12 18:51:33 (GMT)
commit84103cef854a758a8d5dcd270ba36e2495ed3282 (patch)
treef11548eec782a94edda60d2f78edb7f320d8b4c2 /CMakeLists.txt
parent08ce72aebd7b8957a11c365f95b4bbded708e91f (diff)
downloadhdf5-84103cef854a758a8d5dcd270ba36e2495ed3282.zip
hdf5-84103cef854a758a8d5dcd270ba36e2495ed3282.tar.gz
hdf5-84103cef854a758a8d5dcd270ba36e2495ed3282.tar.bz2
[svn-r18773] Add files to support building library with CMake
Tested: Local linux
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt567
1 files changed, 567 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..dc7e2fa
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,567 @@
+cmake_minimum_required (VERSION 2.8)
+PROJECT (HDF5 C CXX)
+
+#-----------------------------------------------------------------------------
+# Instructions for use : Normal Build
+#
+# For standard build of HDF5 libraries,tests and tools.
+# Run cmake using the HDF5 source tree to generate a build tree.
+# Enable/Disable options according to requirements and
+# set CMAKE_INSTALL_PREFIX to the required install path.
+# Make install can be used to install all components for system-wide use.
+#
+#-----------------------------------------------------------------------------
+# Instructions for use : Sub-Project Build
+#
+# To include HDF5 as a sub-project within another project.
+# Set HDF5_EXTERNALLY_CONFIGURED to 1 in the parent project and
+# supply values for the following variables...
+#
+# HDF5_EXPORTED_TARGETS :
+# Set this to the name of the targets variable which controls exports
+# If unset (because parent project does not support/use the
+# INSTALL (EXPORT target...) syntax), then targets are not configured
+# for export during install.
+#
+# HDF5_LIB_DEPENDENCIES :
+# If the build of HDF5 libs is being customized, then rules for the
+# dependencies of the HDF5 libs may be 'incomplete', add additional
+# dependencies to this variable so that external projects pick them up
+#
+# HDF5_EXTERNAL_LIB_PREFIX :
+# If the parent project needs to install hdf libraries, but avoid
+# name conflicts with system versions, then a prefix may be added
+# to ensure that the correct versions configured are used.
+#
+# 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
+#
+# # Tell hdf5 that we are manually overriding certain settings
+# 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
+# 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 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)
+#
+# # 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 1.8.5)
+SET (HDF5_PACKAGE_VERSION_MAJOR 1.8)
+SET (HDF5_PACKAGE_STRING "${HDF5_PACKAGE_NAME} ${HDF5_PACKAGE_VERSION}")
+SET (HDF5_PACKAGE_TARNAME "hdf5")
+SET (HDF5_PACKAGE_URL "htt://www.hdfgroup.org")
+SET (HDF5_PACKAGE_BUGREPORT "help@hdfgroup.org")
+
+#-----------------------------------------------------------------------------
+# Set the core names of all the libraries
+#-----------------------------------------------------------------------------
+SET (HDF5_LIB_CORENAME "hdf5")
+SET (HDF5_TEST_LIB_CORENAME "hdf5_test")
+SET (HDF5_CPP_LIB_CORENAME "hdf5_cpp")
+SET (HDF5_HL_LIB_CORENAME "hdf5_hl")
+SET (HDF5_HL_CPP_LIB_CORENAME "hdf5_hl_cpp")
+SET (HDF5_TOOLS_LIB_CORENAME "hdf5_tools")
+SET (HDF5_F90_LIB_CORENAME "hdf5_fortran")
+SET (HDF5_F90_C_LIB_CORENAME "hdf5_f90cstub")
+SET (HDF5_F90_TEST_LIB_CORENAME "hdf5_test_fortran")
+SET (HDF5_F90_C_TEST_LIB_CORENAME "hdf5_test_f90cstub")
+SET (HDF5_HL_F90_LIB_CORENAME "hdf5_hl_fortran")
+SET (HDF5_HL_F90_C_LIB_CORENAME "hdf5_hl_f90cstub")
+
+#-----------------------------------------------------------------------------
+# Set the true names of all the libraries if customized by external project
+#-----------------------------------------------------------------------------
+SET (HDF5_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_LIB_CORENAME}")
+SET (HDF5_TEST_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_TEST_LIB_CORENAME}")
+SET (HDF5_CPP_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_CPP_LIB_CORENAME}")
+SET (HDF5_HL_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_HL_LIB_CORENAME}")
+SET (HDF5_HL_CPP_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_HL_CPP_LIB_CORENAME}")
+SET (HDF5_TOOLS_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_TOOLS_LIB_CORENAME}")
+SET (HDF5_F90_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_F90_LIB_CORENAME}")
+SET (HDF5_F90_C_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_F90_C_LIB_CORENAME}")
+SET (HDF5_F90_TEST_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_F90_TEST_LIB_CORENAME}")
+SET (HDF5_F90_C_TEST_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_F90_C_TEST_LIB_CORENAME}")
+SET (HDF5_HL_F90_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_HL_F90_LIB_CORENAME}")
+SET (HDF5_HL_F90_C_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_HL_F90_C_LIB_CORENAME}")
+
+#-----------------------------------------------------------------------------
+# Define some CMake variables for use later in the project
+#-----------------------------------------------------------------------------
+SET (HDF5_RESOURCES_DIR ${HDF5_SOURCE_DIR}/Resources)
+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)
+
+#-----------------------------------------------------------------------------
+# Include some macros for reusable code
+#-----------------------------------------------------------------------------
+INCLUDE (${HDF5_RESOURCES_DIR}/HDF5Macros.cmake)
+
+#-----------------------------------------------------------------------------
+# Setup output Directories
+#-----------------------------------------------------------------------------
+IF (NOT HDF5_EXTERNALLY_CONFIGURED)
+ SET (CMAKE_RUNTIME_OUTPUT_DIRECTORY
+ ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all Executables."
+ )
+ SET (CMAKE_LIBRARY_OUTPUT_DIRECTORY
+ ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all Libraries"
+ )
+ SET (CMAKE_ARCHIVE_OUTPUT_DIRECTORY
+ ${PROJECT_BINARY_DIR}/bin CACHE PATH "Single Directory for all static libraries."
+ )
+ SET (CMAKE_Fortran_MODULE_DIRECTORY
+ ${PROJECT_BINARY_DIR}/bin/fortran CACHE PATH "Single Directory for all fortran modules."
+ )
+ELSE (NOT HDF5_EXTERNALLY_CONFIGURED)
+ # if we are externally configured, but the project uses old cmake scripts
+ # this may not be set and utilities like H5detect will fail
+ 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)
+
+#-----------------------------------------------------------------------------
+# Targets built within this project are exported at Install time for use
+# by other projects using FindHDF5.
+#-----------------------------------------------------------------------------
+IF (NOT HDF5_EXPORTED_TARGETS)
+ SET (HDF5_EXPORTED_TARGETS "hdf5-targets")
+ENDIF (NOT HDF5_EXPORTED_TARGETS)
+
+#-----------------------------------------------------------------------------
+# To include a library in the list exported by the project AT BUILD TIME,
+# 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 "")
+
+#-----------------------------------------------------------------------------
+# Run all the CMake configuration tests for our build environment
+#-----------------------------------------------------------------------------
+INCLUDE (${HDF5_SOURCE_DIR}/ConfigureChecks.cmake)
+
+#-----------------------------------------------------------------------------
+# Option to use legacy naming for windows libs/programs, default is legacy
+#-----------------------------------------------------------------------------
+IF (WIN32)
+ OPTION (H5_LEGACY_NAMING "Use Legacy Names for Libraries and Programs" ON)
+ENDIF (WIN32)
+
+#-----------------------------------------------------------------------------
+# Option to Build Shared/Static libs, default is static
+#-----------------------------------------------------------------------------
+OPTION (BUILD_SHARED_LIBS "Build Shared Libraries" OFF)
+SET (LIB_TYPE STATIC)
+IF (BUILD_SHARED_LIBS)
+ SET (LIB_TYPE SHARED)
+ SET (H5_BUILT_AS_DYNAMIC_LIB 1)
+ SET (LIBPOSTFIX "")
+ IF (MSVC)
+ SET (CMAKE_MFC_FLAG 0)
+ FOREACH (flag_var
+ CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
+ CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO
+ CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
+ CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
+ IF (${flag_var} MATCHES "/MT")
+ STRING (REGEX REPLACE "/MT" "/MD" ${flag_var} "${${flag_var}}")
+ ENDIF (${flag_var} MATCHES "/MT")
+ ENDFOREACH (flag_var)
+ ENDIF (MSVC)
+ELSE (BUILD_SHARED_LIBS)
+ IF (NOT WIN32)
+ # should this be a user setting : Everyone uses it anyway ?
+ ADD_DEFINITIONS(-DPIC)
+ ENDIF (NOT WIN32)
+ SET (LIBPOSTFIX "")
+ IF (MSVC)
+ SET (CMAKE_MFC_FLAG 0)
+ FOREACH (flag_var
+ CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
+ CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO
+ CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
+ CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
+ IF (${flag_var} MATCHES "/MD")
+ STRING (REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
+ ENDIF (${flag_var} MATCHES "/MD")
+ ENDFOREACH (flag_var)
+ ENDIF (MSVC)
+ENDIF (BUILD_SHARED_LIBS)
+
+#-----------------------------------------------------------------------------
+# Set the target names of all the libraries
+#-----------------------------------------------------------------------------
+SET (HDF5_LIB_TARGET ${HDF5_LIB_NAME}${LIBPOSTFIX})
+SET (HDF5_TEST_LIB_TARGET ${HDF5_TEST_LIB_NAME}${LIBPOSTFIX})
+SET (HDF5_CPP_LIB_TARGET ${HDF5_CPP_LIB_NAME}${LIBPOSTFIX})
+SET (HDF5_HL_LIB_TARGET ${HDF5_HL_LIB_NAME}${LIBPOSTFIX})
+SET (HDF5_HL_CPP_LIB_TARGET ${HDF5_HL_CPP_LIB_NAME}${LIBPOSTFIX})
+SET (HDF5_TOOLS_LIB_TARGET ${HDF5_TOOLS_LIB_NAME}${LIBPOSTFIX})
+SET (HDF5_F90_LIB_TARGET ${HDF5_F90_LIB_NAME}${LIBPOSTFIX})
+SET (HDF5_F90_C_LIB_TARGET ${HDF5_F90_C_LIB_NAME}${LIBPOSTFIX})
+SET (HDF5_F90_TEST_LIB_TARGET ${HDF5_F90_TEST_LIB_NAME}${LIBPOSTFIX})
+SET (HDF5_F90_C_TEST_LIB_TARGET ${HDF5_F90_C_TEST_LIB_NAME}${LIBPOSTFIX})
+SET (HDF5_HL_F90_LIB_TARGET ${HDF5_HL_F90_LIB_NAME}${LIBPOSTFIX})
+SET (HDF5_HL_F90_C_LIB_TARGET ${HDF5_HL_F90_C_LIB_NAME}${LIBPOSTFIX})
+
+#-----------------------------------------------------------------------------
+# Include the main src and config directories
+#-----------------------------------------------------------------------------
+SET (HDF5_INCLUDE_DIRECTORIES
+ ${HDF5_SRC_DIR}
+ ${HDF5_SOURCE_DIR}
+ ${HDF5_BINARY_DIR}
+)
+INCLUDE_DIRECTORIES (${HDF5_INCLUDE_DIRECTORIES})
+
+#-----------------------------------------------------------------------------
+# 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
+# and we need to call the executable from inside the CMake configuration
+#-----------------------------------------------------------------------------
+SET (EXE_EXT "")
+IF (WIN32)
+ SET (EXE_EXT ".exe")
+ ADD_DEFINITIONS (-DBIND_TO_CURRENT_VCLIBS_VERSION=1)
+ ADD_DEFINITIONS (-D_CRT_SECURE_NO_WARNINGS)
+ENDIF (WIN32)
+
+SET (MAKE_SYSTEM)
+IF (CMAKE_BUILD_TOOL MATCHES "make")
+ SET (MAKE_SYSTEM 1)
+ENDIF (CMAKE_BUILD_TOOL MATCHES "make")
+
+SET (CFG_INIT "/${CMAKE_CFG_INTDIR}")
+IF (MAKE_SYSTEM)
+ SET (CFG_INIT "")
+ENDIF (MAKE_SYSTEM)
+
+#-----------------------------------------------------------------------------
+# Add some definitions for Debug Builds
+#-----------------------------------------------------------------------------
+IF (CMAKE_BUILD_TYPE MATCHES Debug)
+ ADD_DEFINITIONS (-DDEBUG)
+ ADD_DEFINITIONS (
+ -DH5_DEBUG_API -DH5Z_DEBUG -DH5V_DEBUG -DH5T_DEBUG
+ -DH5S_DEBUG -DH5P_DEBUG -DH5O_DEBUG -DH5MM_DEBUG -DH5MF_DEBUG
+ -DH5I_DEBUG -DH5HL_DEBUG -DH5HG_DEBUG -DH5G_DEBUG -DH5F_DEBUG
+ -DH5E_DEBUG -DH5D_DEBUG -DH5B_DEBUG -DH5AC_DEBUG -UNDEBUG
+ )
+ #-- NMake Makefiles will overwhelm the console with warnings if -Wall is used.
+ IF (NOT WIN32)
+ ADD_DEFINITIONS (-Wall)
+ ENDIF (NOT WIN32)
+ELSE (CMAKE_BUILD_TYPE MATCHES Debug)
+ ADD_DEFINITIONS (-UH5_DEBUG_API -DNDEBUG)
+ENDIF (CMAKE_BUILD_TYPE MATCHES Debug)
+
+#-----------------------------------------------------------------------------
+# Compiler specific flags : Shouldn't there be compiler tests for these
+#-----------------------------------------------------------------------------
+IF (NOT WIN32)
+ SET (CMAKE_C_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_C_FLAGS} -std=c99 -fomit-frame-pointer -finline-functions -fno-common")
+ENDIF (NOT WIN32)
+
+#-----------------------------------------------------------------------------
+# Option to allow the user to disable compiler warnings
+#-----------------------------------------------------------------------------
+OPTION (HDF5_DISABLE_COMPILER_WARNINGS "Disable compiler warnings" OFF)
+IF (HDF5_DISABLE_COMPILER_WARNINGS)
+ # MSVC uses /w to suppress warnings. It also complains if another
+ # warning level is given, so remove it.
+ IF (MSVC)
+ SET (HDF5_WARNINGS_BLOCKED 1)
+ STRING (REGEX REPLACE "(^| )([/-])W[0-9]( |$)" " "
+ CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
+ SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /w")
+ ENDIF (MSVC)
+ IF(WIN32)
+ ADD_DEFINITIONS (-D_CRT_SECURE_NO_WARNINGS)
+ ENDIF(WIN32)
+ # Borland uses -w- to suppress warnings.
+ IF (BORLAND)
+ SET (HDF5_WARNINGS_BLOCKED 1)
+ SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w-")
+ ENDIF (BORLAND)
+
+ # Most compilers use -w to suppress warnings.
+ IF (NOT HDF5_WARNINGS_BLOCKED)
+ SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w")
+ ENDIF (NOT HDF5_WARNINGS_BLOCKED)
+ENDIF (HDF5_DISABLE_COMPILER_WARNINGS)
+
+#-----------------------------------------------------------------------------
+# This is in here to help some of the GCC based IDES like Eclipse
+# and code blocks parse the compiler errors and warnings better.
+#-----------------------------------------------------------------------------
+IF (CMAKE_COMPILER_IS_GNUCC)
+ SET (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fmessage-length=0")
+ENDIF (CMAKE_COMPILER_IS_GNUCC)
+IF (CMAKE_COMPILER_IS_GNUCXX)
+ SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fmessage-length=0")
+ENDIF (CMAKE_COMPILER_IS_GNUCXX)
+
+#-----------------------------------------------------------------------------
+# Option to Enable MPI Parallel
+#-----------------------------------------------------------------------------
+OPTION (HDF5_ENABLE_PARALLEL "Enable parallel build (requires MPI)" OFF)
+IF (HDF5_ENABLE_PARALLEL)
+ INCLUDE (FindMPI)
+ INCLUDE_DIRECTORIES (${MPI_INCLUDE_PATH})
+ IF (MPI_FOUND)
+ SET (H5_HAVE_PARALLEL 1)
+ ENDIF (MPI_FOUND)
+ENDIF (HDF5_ENABLE_PARALLEL)
+
+# Parallel IO usage requires MPI to be Linked and Included
+IF (H5_HAVE_PARALLEL)
+ SET (LINK_LIBS ${LINK_LIBS} ${MPI_LIBRARY})
+ IF (MPI_LINK_FLAGS)
+ SET (CMAKE_EXE_LINKER_FLAGS ${MPI_LINK_FLAGS} ${CMAKE_EXE_LINKER_FLAGS})
+ ENDIF (MPI_LINK_FLAGS)
+ IF (MPI_EXTRA_LIBRARY)
+ SET (LINK_LIBS ${LINK_LIBS} ${MPI_EXTRA_LIBRARY})
+ ENDIF (MPI_EXTRA_LIBRARY)
+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)
+IF (HDF5_USE_16_API_DEFAULT)
+ SET (H5_USE_16_API_DEFAULT 1)
+ENDIF (HDF5_USE_16_API_DEFAULT)
+
+#-----------------------------------------------------------------------------
+# Options for HDF5 Filters
+#-----------------------------------------------------------------------------
+MACRO (HDF5_SETUP_FILTERS FILTER)
+ OPTION (HDF5_USE_FILTER_${FILTER} "Use the ${FILTER} Filter" ON)
+ IF (HDF5_USE_FILTER_${FILTER})
+ SET (H5_HAVE_FILTER_${FILTER} 1)
+ ENDIF (HDF5_USE_FILTER_${FILTER})
+ # MESSAGE (STATUS "Filter ${FILTER} is ${HDF5_USE_FILTER_${FILTER}}")
+ENDMACRO (HDF5_SETUP_FILTERS)
+
+HDF5_SETUP_FILTERS (SHUFFLE)
+HDF5_SETUP_FILTERS (FLETCHER32)
+HDF5_SETUP_FILTERS (NBIT)
+HDF5_SETUP_FILTERS (SCALEOFFSET)
+
+#-----------------------------------------------------------------------------
+# Option for ZLib support
+#-----------------------------------------------------------------------------
+OPTION (HDF5_ENABLE_Z_LIB_SUPPORT "Enable Zlib Filters" OFF)
+IF (HDF5_ENABLE_Z_LIB_SUPPORT)
+ IF (NOT H5_ZLIB_HEADER)
+ FIND_PACKAGE (ZLIB REQUIRED)
+ IF (ZLIB_FOUND)
+ SET (H5_HAVE_FILTER_DEFLATE 1)
+ SET (H5_HAVE_ZLIB_H 1)
+ SET (H5_HAVE_LIBZ 1)
+ SET (H5_ZLIB_HEADER "zlib.h")
+ ELSE (ZLIB_FOUND)
+ MESSAGE (FATAL " ZLib is Required for ZLib support in HDF5")
+ ENDIF (ZLIB_FOUND)
+ ELSE (NOT H5_ZLIB_HEADER)
+ # This project is being called from within another and ZLib is already configured
+ SET (H5_HAVE_FILTER_DEFLATE 1)
+ SET (H5_HAVE_ZLIB_H 1)
+ SET (H5_HAVE_LIBZ 1)
+ ENDIF (NOT H5_ZLIB_HEADER)
+ CONFIGURE_FILE (${HDF5_SOURCE_DIR}/Resources/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")
+ENDIF (HDF5_ENABLE_Z_LIB_SUPPORT)
+
+#-----------------------------------------------------------------------------
+# Option for SzLib support
+#-----------------------------------------------------------------------------
+SET (CMAKE_MODULE_PATH ${HDF5_SOURCE_DIR}/Resources/CMake ${CMAKE_MODULE_PATH})
+OPTION (HDF5_ENABLE_SZIP_SUPPORT "Use SZip Filter" OFF)
+IF (HDF5_ENABLE_SZIP_SUPPORT)
+ FIND_PACKAGE (SZIP REQUIRED)
+ IF (SZIP_FOUND)
+ SET (H5_HAVE_FILTER_SZIP 1)
+ SET (H5_HAVE_SZLIB_H 1)
+ SET (H5_HAVE_LIBSZ 1)
+ SET (LINK_LIBS ${LINK_LIBS} ${SZIP_LIBRARIES})
+ INCLUDE_DIRECTORIES (${SZIP_INCLUDE_DIRS})
+# MESSAGE (STATUS "SZIP_INCLUDE_DIRS: ${SZIP_INCLUDE_DIRS}")
+# MESSAGE (STATUS "SZIP_INCLUDE_DIR: ${SZIP_INCLUDE_DIR}")
+ MESSAGE (STATUS "Filter SZIP is ON")
+ OPTION (HDF5_ENABLE_SZIP_ENCODING "Use SZip Encoding" OFF)
+ IF (HDF5_ENABLE_SZIP_ENCODING)
+ SET (H5_HAVE_SZIP_ENCODER 1)
+ ENDIF (HDF5_ENABLE_SZIP_ENCODING)
+ ELSE (SZIP_FOUND)
+ MESSAGE (FATAL_ERROR "SZIP is Required for SZIP support in HDF5")
+ ENDIF (SZIP_FOUND)
+ENDIF (HDF5_ENABLE_SZIP_SUPPORT)
+
+#-----------------------------------------------------------------------------
+# Option to use PACKED BITS SUPPORT
+#-----------------------------------------------------------------------------
+OPTION (HDF5_USE_H5DUMP_PACKED_BITS "Use the PACKED BITS feature in h5dump" OFF)
+SET (H5_HAVE_H5DUMP_PACKED_BITS 0)
+IF (HDF5_USE_H5DUMP_PACKED_BITS)
+ SET (H5_HAVE_H5DUMP_PACKED_BITS 1)
+ENDIF (HDF5_USE_H5DUMP_PACKED_BITS)
+
+#-----------------------------------------------------------------------------
+# Add the HDF5 Library Target to the build
+#-----------------------------------------------------------------------------
+ADD_SUBDIRECTORY (${HDF5_SOURCE_DIR}/src ${PROJECT_BINARY_DIR}/src)
+
+#-----------------------------------------------------------------------------
+# Build utility to copy and strip X lines of file
+#-----------------------------------------------------------------------------
+SET (XLATE_UTILITY "xlatefile")
+ADD_EXECUTABLE(${XLATE_UTILITY} ${HDF5_SOURCE_DIR}/Resources/xlatefile.c)
+
+#-----------------------------------------------------------------------------
+# Dashboard and Testing Settings
+#-----------------------------------------------------------------------------
+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)")
+ 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)
+ ENDIF (NOT HDF5_EXTERNALLY_CONFIGURED)
+ INCLUDE (${HDF5_SOURCE_DIR}/CTestConfig.cmake)
+ENDIF (BUILD_TESTING)
+
+#-----------------------------------------------------------------------------
+# Option to build Fortran bindings/tests/examples
+# 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)
+
+#-----------------------------------------------------------------------------
+# 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)
+
+#-----------------------------------------------------------------------------
+# 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)
+
+#-----------------------------------------------------------------------------
+# 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)
+
+#-----------------------------------------------------------------------------
+# 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)
+
+#-----------------------------------------------------------------------------
+# Generate the H5pubconf.h file containing user settings needed by compilation
+#-----------------------------------------------------------------------------
+CONFIGURE_FILE (${HDF5_SOURCE_DIR}/Resources/H5pubconf.h.in ${HDF5_BINARY_DIR}/H5pubconf.h @ONLY)
+
+#-----------------------------------------------------------------------------
+# Add file(s) to CMake Install
+#-----------------------------------------------------------------------------
+INSTALL (
+ FILES
+ ${PROJECT_BINARY_DIR}/H5pubconf.h
+ DESTINATION
+ include
+)
+
+#-----------------------------------------------------------------------------
+# Add Target(s) to CMake Install for import into other projects
+#-----------------------------------------------------------------------------
+INSTALL (
+ EXPORT
+ ${HDF5_EXPORTED_TARGETS}
+ DESTINATION
+ lib
+ FILE
+ HDF5-config.cmake
+)
+
+#-----------------------------------------------------------------------------
+# Export all exported targets to the build tree for use by parent project
+#-----------------------------------------------------------------------------
+EXPORT (
+ TARGETS
+ ${HDF5_LIBRARIES_TO_EXPORT} ${HDF5_LIB_DEPENDENCIES}
+ FILE
+ HDF5-config.cmake
+)