2020-02-22 06:16:06 +08:00
cmake_minimum_required ( VERSION 3.12 )
2018-04-20 23:11:55 +08:00
project ( HDF5 C )
2010-05-14 00:01:50 +08:00
2020-01-29 03:14:59 +08:00
if ( POLICY CMP0074 )
cmake_policy ( SET CMP0074 NEW )
endif ( )
2019-09-06 05:54:24 +08:00
2020-02-22 06:16:06 +08:00
if ( POLICY CMP0083 )
cmake_policy ( SET CMP0083 NEW )
endif ( )
2010-05-14 00:01:50 +08:00
#-----------------------------------------------------------------------------
# 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.
#
2019-02-16 05:48:24 +08:00
if ( CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR )
2020-01-29 03:14:59 +08:00
message ( FATAL_ERROR "\nERROR! ${PROJECT_NAME} DOES NOT SUPPORT IN SOURCE BUILDS!\n"
2015-04-23 23:41:22 +08:00
" C M A K E _ C U R R E N T _ S O U R C E _ D I R = $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } "
" = = C M A K E _ C U R R E N T _ B I N A R Y _ D I R = $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } \ n "
" N E X T S T E P S : \ n "
" ( 1 ) D e l e t e t h e C M a k e C a c h e . t x t f i l e a n d t h e C M a k e F i l e s / d i r e c t o r y \ n "
" u n d e r t h e s o u r c e d i r e c t o r y f o r $ { P R O J E C T _ N A M E } , o t h e r w i s e y o u \ n "
" w i l l n o t b e a b l e t o c o n f i g u r e $ { P R O J E C T _ N A M E } c o r r e c t l y ! \ n "
" * F o r e x a m p l e , o n l i n u x m a c h i n e s d o : \ n "
" $ r m - r C M a k e C a c h e . t x t C M a k e F i l e s / \ n "
" ( 2 ) C r e a t e a d i f f e r e n t d i r e c t o r y a n d c o n f i g u r e $ { P R O J E C T _ N A M E } i n t h a t d i r e c t o r y . \ n "
" * F o r e x a m p l e , o n l i n u x m a c h i n e s d o : \ n "
" $ m k d i r M Y _ B U I L D \ n "
" $ c d M Y _ B U I L D \ n "
" $ c m a k e [ O P T I O N S ] . . \ n "
)
endif ( )
2019-07-17 00:38:10 +08:00
# CMake version 3.14 added option --ignore-eol to compare files
# cmake -E compare_files --ignore-eol file1 file2
2020-02-22 06:16:06 +08:00
set ( CMAKE_IGNORE_EOL "--ignore-eol" )
if ( CMAKE_VERSION VERSION_LESS "3.14.0" )
set ( CMAKE_IGNORE_EOL "" )
if ( WIN32 )
message ( FATAL_ERROR "Windows builds requires a minimum of CMake 3.14" )
endif ( )
else ( )
endif ( )
2019-07-17 00:38:10 +08:00
2010-05-14 00:01:50 +08:00
#-----------------------------------------------------------------------------
# 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
2014-03-12 05:14:57 +08:00
# install (EXPORT target...) syntax), then targets are not configured
2010-05-14 00:01:50 +08:00
# 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
#
2018-09-25 03:38:46 +08:00
#option (HDF5_EXTERNAL_LIB_PREFIX "Use prefix for custom library naming." "")
set ( HDF5_EXTERNAL_LIB_PREFIX "" CACHE STRING "Use prefix for custom library naming." )
mark_as_advanced ( HDF5_EXTERNAL_LIB_PREFIX )
2010-05-14 00:01:50 +08:00
# HDF5_EXTERNAL_LIB_PREFIX :
2015-05-15 00:51:20 +08:00
# If the parent project needs to install hdf libraries, but avoid
2010-05-14 00:01:50 +08:00
# name conflicts with system versions, then a prefix may be added
# to ensure that the correct versions configured are used.
#
2010-12-09 04:55:25 +08:00
# HDF5_INSTALL_BIN_DIR, HDF5_INSTALL_LIB_DIR, HDF5_INSTALL_INCLUDE_DIR, HDF5_INSTALL_DATA_DIR :
# Customize the 'bin', 'lib', 'include', and 'share' installation directories.
2010-08-20 23:37:50 +08:00
#
# HDF5_INSTALL_NO_DEVELOPMENT :
# Set to true to skip installation of headers and CMake package files.
#
2010-05-14 00:01:50 +08:00
# 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
2014-03-12 05:14:57 +08:00
# set (HDF5_EXTERNALLY_CONFIGURED 1)
2010-05-14 00:01:50 +08:00
# # Avoid duplicating names of installed libraries
2014-03-12 05:14:57 +08:00
# set (HDF5_EXTERNAL_LIB_PREFIX "vtk")
2010-05-14 00:01:50 +08:00
# # Export configuration to this export variable
2014-03-12 05:14:57 +08:00
# set (HDF5_EXPORTED_TARGETS "paraview-targets")
2010-05-14 00:01:50 +08:00
#
# # Setup all necessary overrides for zlib so that HDF5 uses our
# # internally compiled zlib rather than any other version
2014-03-19 00:21:46 +08:00
# if (HDF5_ENABLE_Z_LIB_SUPPORT)
2015-05-15 00:51:20 +08:00
# # We must tell the main HDF5 library that it depends on our zlib
# set (HDF5_LIB_DEPENDENCIES vtkzlib)
2010-05-14 00:01:50 +08:00
# # Override the zlib header file
2014-03-19 00:21:46 +08:00
# if (VTK_USE_SYSTEM_ZLIB)
2014-03-12 05:14:57 +08:00
# set (H5_ZLIB_HEADER "zlib.h")
2017-01-11 07:09:53 +08:00
# else ()
2014-03-12 05:14:57 +08:00
# set (H5_ZLIB_HEADER "vtk_zlib.h")
2010-05-14 00:01:50 +08:00
# # Set vars that FindZlib would have set if used in sub project
2014-03-12 05:14:57 +08:00
# set (ZLIB_INCLUDE_DIRS "${VTK_ZLIB_INCLUDE_DIRS}")
# set (ZLIB_LIBRARIES vtkzlib)
2017-01-11 07:09:53 +08:00
# endif ()
# endif ()
2015-05-15 00:51:20 +08:00
#
2010-05-14 00:01:50 +08:00
# # Add the sub project
2014-03-19 00:21:46 +08:00
# add_subdirectory (Utilities/hdf5-1.8)
2010-05-14 00:01:50 +08:00
#-----------------------------------------------------------------------------
2020-01-29 03:14:59 +08:00
string ( TIMESTAMP CONFIG_DATE "%Y-%m-%d" )
2011-10-26 00:52:58 +08:00
#-----------------------------------------------------------------------------
# Allow Visual Studio solution directories
#-----------------------------------------------------------------------------
# Provide a way for Visual Studio Express users to turn OFF the new FOLDER
# organization feature. Default to ON for non-Express users. Express users must
# explicitly turn off this option to build HDF5 in the Express IDE...
#
2014-03-12 05:14:57 +08:00
option ( HDF5_USE_FOLDERS "Enable folder grouping of projects in IDEs." ON )
2014-03-19 00:21:46 +08:00
mark_as_advanced ( HDF5_USE_FOLDERS )
2014-03-12 05:14:57 +08:00
if ( HDF5_USE_FOLDERS )
set_property ( GLOBAL PROPERTY USE_FOLDERS ON )
2017-01-11 07:09:53 +08:00
endif ( )
2014-03-12 05:14:57 +08:00
option ( HDF5_NO_PACKAGES "CPACK - Disable packaging" OFF )
2014-03-19 00:21:46 +08:00
mark_as_advanced ( HDF5_NO_PACKAGES )
2015-08-27 00:48:42 +08:00
option ( ALLOW_UNSUPPORTED "Allow unsupported combinations of configure options" OFF )
mark_as_advanced ( ALLOW_UNSUPPORTED )
2011-10-26 00:52:58 +08:00
2010-05-14 00:01:50 +08:00
#-----------------------------------------------------------------------------
# Set the core names of all the libraries
#-----------------------------------------------------------------------------
2014-03-12 05:14:57 +08:00
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" )
2020-03-14 06:13:17 +08:00
set ( HDF5_UTILS_LIB_CORENAME "hdf5_utils" )
2014-03-12 05:14:57 +08:00
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" )
2016-02-29 10:43:00 +08:00
set ( HDF5_JAVA_JNI_LIB_CORENAME "hdf5_java" )
set ( HDF5_JAVA_HDF5_LIB_CORENAME "jarhdf5" )
set ( HDF5_JAVA_TEST_LIB_CORENAME "jartest5" )
2010-05-14 00:01:50 +08:00
#-----------------------------------------------------------------------------
# Set the true names of all the libraries if customized by external project
#-----------------------------------------------------------------------------
2014-03-12 05:14:57 +08:00
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}" )
2020-03-14 06:13:17 +08:00
set ( HDF5_UTILS_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_UTILS_LIB_CORENAME}" )
2014-03-12 05:14:57 +08:00
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}" )
2016-02-29 10:43:00 +08:00
set ( HDF5_JAVA_JNI_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_JAVA_JNI_LIB_CORENAME}" )
set ( HDF5_JAVA_HDF5_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_JAVA_HDF5_LIB_CORENAME}" )
set ( HDF5_JAVA_TEST_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${HDF5_JAVA_TEST_LIB_CORENAME}" )
2010-05-14 00:01:50 +08:00
2010-07-21 22:00:47 +08:00
#-----------------------------------------------------------------------------
# Set the target names of all the libraries
#-----------------------------------------------------------------------------
2015-08-06 05:01:07 +08:00
set ( HDF5_LIB_TARGET "${HDF5_LIB_CORENAME}-static" )
set ( HDF5_TEST_LIB_TARGET "${HDF5_TEST_LIB_CORENAME}-static" )
set ( HDF5_CPP_LIB_TARGET "${HDF5_CPP_LIB_CORENAME}-static" )
set ( HDF5_HL_LIB_TARGET "${HDF5_HL_LIB_CORENAME}-static" )
set ( HDF5_HL_CPP_LIB_TARGET "${HDF5_HL_CPP_LIB_CORENAME}-static" )
set ( HDF5_TOOLS_LIB_TARGET "${HDF5_TOOLS_LIB_CORENAME}-static" )
2020-03-14 06:13:17 +08:00
set ( HDF5_UTILS_LIB_TARGET "${HDF5_UTILS_LIB_CORENAME}-static" )
2015-08-06 05:01:07 +08:00
set ( HDF5_F90_LIB_TARGET "${HDF5_F90_LIB_CORENAME}-static" )
set ( HDF5_F90_C_LIB_TARGET "${HDF5_F90_C_LIB_CORENAME}-static" )
set ( HDF5_F90_TEST_LIB_TARGET "${HDF5_F90_TEST_LIB_CORENAME}-static" )
set ( HDF5_F90_C_TEST_LIB_TARGET "${HDF5_F90_C_TEST_LIB_CORENAME}-static" )
set ( HDF5_HL_F90_LIB_TARGET "${HDF5_HL_F90_LIB_CORENAME}-static" )
set ( HDF5_HL_F90_C_LIB_TARGET "${HDF5_HL_F90_C_LIB_CORENAME}-static" )
2016-02-29 10:43:00 +08:00
set ( HDF5_JAVA_JNI_LIB_TARGET "${HDF5_JAVA_JNI_LIB_CORENAME}" )
set ( HDF5_JAVA_HDF5_LIB_TARGET "${HDF5_JAVA_HDF5_LIB_CORENAME}" )
set ( HDF5_JAVA_TEST_LIB_TARGET "${HDF5_JAVA_TEST_LIB_CORENAME}" )
2015-08-06 05:01:07 +08:00
set ( HDF5_LIBSH_TARGET "${HDF5_LIB_CORENAME}-shared" )
set ( HDF5_TEST_LIBSH_TARGET "${HDF5_TEST_LIB_CORENAME}-shared" )
set ( HDF5_CPP_LIBSH_TARGET "${HDF5_CPP_LIB_CORENAME}-shared" )
set ( HDF5_HL_LIBSH_TARGET "${HDF5_HL_LIB_CORENAME}-shared" )
set ( HDF5_HL_CPP_LIBSH_TARGET "${HDF5_HL_CPP_LIB_CORENAME}-shared" )
set ( HDF5_TOOLS_LIBSH_TARGET "${HDF5_TOOLS_LIB_CORENAME}-shared" )
2020-03-14 06:13:17 +08:00
set ( HDF5_UTILS_LIBSH_TARGET "${HDF5_UTILS_LIB_CORENAME}-shared" )
2015-08-06 05:01:07 +08:00
set ( HDF5_F90_LIBSH_TARGET "${HDF5_F90_LIB_CORENAME}-shared" )
set ( HDF5_F90_C_LIBSH_TARGET "${HDF5_F90_C_LIB_CORENAME}-shared" )
set ( HDF5_F90_TEST_LIBSH_TARGET "${HDF5_F90_TEST_LIB_CORENAME}-shared" )
set ( HDF5_F90_C_TEST_LIBSH_TARGET "${HDF5_F90_C_TEST_LIB_CORENAME}-shared" )
set ( HDF5_HL_F90_LIBSH_TARGET "${HDF5_HL_F90_LIB_CORENAME}-shared" )
set ( HDF5_HL_F90_C_LIBSH_TARGET "${HDF5_HL_F90_C_LIB_CORENAME}-shared" )
2010-07-21 22:00:47 +08:00
2010-05-14 00:01:50 +08:00
#-----------------------------------------------------------------------------
# Define some CMake variables for use later in the project
#-----------------------------------------------------------------------------
2014-05-15 03:50:28 +08:00
set ( HDF_RESOURCES_DIR ${ HDF5_SOURCE_DIR } /config/cmake )
set ( HDF_RESOURCES_EXT_DIR ${ HDF5_SOURCE_DIR } /config/cmake_ext_mod )
2014-03-12 05:14:57 +08:00
set ( HDF5_SRC_DIR ${ HDF5_SOURCE_DIR } /src )
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++ )
2016-05-04 23:06:05 +08:00
set ( HDF5_HL_TOOLS_DIR ${ HDF5_SOURCE_DIR } /hl/tools )
set ( HDF5_TOOLS_DIR ${ HDF5_SOURCE_DIR } /tools )
2016-10-27 23:12:39 +08:00
set ( HDF5_TOOLS_SRC_DIR ${ HDF5_SOURCE_DIR } /tools/src )
set ( HDF5_PERFORM_SRC_DIR ${ HDF5_SOURCE_DIR } /tools/src/perform )
2020-03-14 06:13:17 +08:00
set ( HDF5_UTILS_DIR ${ HDF5_SOURCE_DIR } /utils )
2014-03-12 05:14:57 +08:00
set ( HDF5_F90_SRC_DIR ${ HDF5_SOURCE_DIR } /fortran )
2016-02-29 10:43:00 +08:00
set ( HDF5_JAVA_JNI_SRC_DIR ${ HDF5_SOURCE_DIR } /java/src/jni )
set ( HDF5_JAVA_HDF5_SRC_DIR ${ HDF5_SOURCE_DIR } /java/src/hdf )
set ( HDF5_JAVA_TEST_SRC_DIR ${ HDF5_SOURCE_DIR } /java/test )
set ( HDF5_JAVA_LIB_DIR ${ HDF5_SOURCE_DIR } /java/lib )
2018-06-28 06:53:30 +08:00
set ( HDF5_JAVA_LOGGING_JAR ${ HDF5_SOURCE_DIR } /java/lib/slf4j-api-1.7.25.jar )
set ( HDF5_JAVA_LOGGING_NOP_JAR ${ HDF5_SOURCE_DIR } /java/lib/ext/slf4j-nop-1.7.25.jar )
set ( HDF5_JAVA_LOGGING_SIMPLE_JAR ${ HDF5_SOURCE_DIR } /java/lib/ext/slf4j-simple-1.7.25.jar )
2020-11-04 00:42:09 +08:00
set ( HDF5_DOXYGEN_DIR ${ HDF5_SOURCE_DIR } /doxygen )
2016-02-29 10:43:00 +08:00
2010-07-21 22:00:47 +08:00
#-----------------------------------------------------------------------------
# parse the full version number from H5public.h and include in H5_VERS_INFO
#-----------------------------------------------------------------------------
2014-03-19 00:21:46 +08:00
file ( READ ${ HDF5_SRC_DIR } /H5public.h _h5public_h_contents )
2014-03-12 05:14:57 +08:00
string ( REGEX REPLACE ".*#define[ \t]+H5_VERS_MAJOR[ \t]+([0-9]*).*$"
2010-07-21 22:00:47 +08:00
" \ \ 1 " H 5 _ V E R S _ M A J O R $ { _ h 5 p u b l i c _ h _ c o n t e n t s } )
2014-03-12 05:14:57 +08:00
string ( REGEX REPLACE ".*#define[ \t]+H5_VERS_MINOR[ \t]+([0-9]*).*$"
2010-07-21 22:00:47 +08:00
" \ \ 1 " H 5 _ V E R S _ M I N O R $ { _ h 5 p u b l i c _ h _ c o n t e n t s } )
2014-03-12 05:14:57 +08:00
string ( REGEX REPLACE ".*#define[ \t]+H5_VERS_RELEASE[ \t]+([0-9]*).*$"
2010-07-21 22:00:47 +08:00
" \ \ 1 " H 5 _ V E R S _ R E L E A S E $ { _ h 5 p u b l i c _ h _ c o n t e n t s } )
2020-08-24 03:58:09 +08:00
string ( REGEX REPLACE ".*#define[ \t]+H5_VERS_SUBRELEASE[ \t]+\" ( [0-9A-Za-z._\-]* ) \".*$"
2012-05-22 05:32:21 +08:00
" \ \ 1 " H 5 _ V E R S _ S U B R E L E A S E $ { _ h 5 p u b l i c _ h _ c o n t e n t s } )
2014-03-12 05:14:57 +08:00
#message (STATUS "VERSION: ${H5_VERS_MAJOR}.${H5_VERS_MINOR}.${H5_VERS_RELEASE}-${H5_VERS_SUBRELEASE}")
2010-07-21 22:00:47 +08:00
2011-05-25 22:57:16 +08:00
#-----------------------------------------------------------------------------
# parse the full soversion number from config/lt_vers.am and include in H5_SOVERS_INFO
#-----------------------------------------------------------------------------
2014-03-19 00:21:46 +08:00
file ( READ ${ HDF5_SOURCE_DIR } /config/lt_vers.am _lt_vers_am_contents )
2014-03-12 05:14:57 +08:00
string ( REGEX REPLACE ".*LT_VERS_INTERFACE[ \t]+=[ \t]+([0-9]*).*$"
2018-04-10 21:55:17 +08:00
" \ \ 1 " H 5 _ L I B _ S O V E R S _ I N T E R F A C E $ { _ l t _ v e r s _ a m _ c o n t e n t s } )
2014-03-12 05:14:57 +08:00
string ( REGEX REPLACE ".*LT_VERS_REVISION[ \t]+=[ \t]+([0-9]*).*$"
2018-04-10 21:55:17 +08:00
" \ \ 1 " H 5 _ L I B _ S O V E R S _ M I N O R $ { _ l t _ v e r s _ a m _ c o n t e n t s } )
2014-03-12 05:14:57 +08:00
string ( REGEX REPLACE ".*LT_VERS_AGE[ \t]+=[ \t]+([0-9]*).*$"
2018-04-10 21:55:17 +08:00
" \ \ 1 " H 5 _ L I B _ S O V E R S _ R E L E A S E $ { _ l t _ v e r s _ a m _ c o n t e n t s } )
math ( EXPR H5_LIB_SOVERS_MAJOR ${ H5_LIB_SOVERS_INTERFACE } - ${ H5_LIB_SOVERS_RELEASE } )
message ( STATUS "SOVERSION: ${H5_LIB_SOVERS_MAJOR}.${H5_LIB_SOVERS_RELEASE}.${H5_LIB_SOVERS_MINOR}" )
2016-02-29 10:43:00 +08:00
string ( REGEX MATCH ".*LT_TOOLS_VERS_INTERFACE[ \t]+=[ \t]+([0-9]*).*$" H5_TOOLS_SOVERS_EXISTS ${ _lt_vers_am_contents } )
2017-01-11 07:09:53 +08:00
if ( H5_TOOLS_SOVERS_EXISTS )
2016-02-29 10:43:00 +08:00
string ( REGEX REPLACE ".*LT_TOOLS_VERS_INTERFACE[ \t]+=[ \t]+([0-9]*).*$"
" \ \ 1 " H 5 _ T O O L S _ S O V E R S _ I N T E R F A C E $ { _ l t _ v e r s _ a m _ c o n t e n t s } )
string ( REGEX REPLACE ".*LT_TOOLS_VERS_REVISION[ \t]+=[ \t]+([0-9]*).*$"
" \ \ 1 " H 5 _ T O O L S _ S O V E R S _ M I N O R $ { _ l t _ v e r s _ a m _ c o n t e n t s } )
string ( REGEX REPLACE ".*LT_TOOLS_VERS_AGE[ \t]+=[ \t]+([0-9]*).*$"
" \ \ 1 " H 5 _ T O O L S _ S O V E R S _ R E L E A S E $ { _ l t _ v e r s _ a m _ c o n t e n t s } )
2017-03-03 02:20:26 +08:00
math ( EXPR H5_TOOLS_SOVERS_MAJOR ${ H5_TOOLS_SOVERS_INTERFACE } - ${ H5_TOOLS_SOVERS_RELEASE } )
2016-02-29 10:43:00 +08:00
message ( STATUS "SOVERSION_TOOLS: ${H5_TOOLS_SOVERS_MAJOR}.${H5_TOOLS_SOVERS_RELEASE}.${H5_TOOLS_SOVERS_MINOR}" )
2017-01-11 07:09:53 +08:00
endif ( )
2017-04-07 00:22:29 +08:00
string ( REGEX MATCH ".*LT_CXX_VERS_INTERFACE[ \t]+=[ \t]+([0-9]*).*$" H5_CXX_SOVERS_EXISTS ${ _lt_vers_am_contents } )
2017-01-11 07:09:53 +08:00
if ( H5_CXX_SOVERS_EXISTS )
2016-02-29 10:43:00 +08:00
string ( REGEX REPLACE ".*LT_CXX_VERS_INTERFACE[ \t]+=[ \t]+([0-9]*).*$"
" \ \ 1 " H 5 _ C X X _ S O V E R S _ I N T E R F A C E $ { _ l t _ v e r s _ a m _ c o n t e n t s } )
string ( REGEX REPLACE ".*LT_CXX_VERS_REVISION[ \t]+=[ \t]+([0-9]*).*$"
" \ \ 1 " H 5 _ C X X _ S O V E R S _ M I N O R $ { _ l t _ v e r s _ a m _ c o n t e n t s } )
string ( REGEX REPLACE ".*LT_CXX_VERS_AGE[ \t]+=[ \t]+([0-9]*).*$"
" \ \ 1 " H 5 _ C X X _ S O V E R S _ R E L E A S E $ { _ l t _ v e r s _ a m _ c o n t e n t s } )
2017-03-03 02:20:26 +08:00
math ( EXPR H5_CXX_SOVERS_MAJOR ${ H5_CXX_SOVERS_INTERFACE } - ${ H5_CXX_SOVERS_RELEASE } )
2016-02-29 10:43:00 +08:00
message ( STATUS "SOVERSION_CXX: ${H5_CXX_SOVERS_MAJOR}.${H5_CXX_SOVERS_RELEASE}.${H5_CXX_SOVERS_MINOR}" )
2017-01-11 07:09:53 +08:00
endif ( )
2017-04-07 00:22:29 +08:00
string ( REGEX MATCH ".*LT_F_VERS_INTERFACE[ \t]+=[ \t]+([0-9]*).*$" H5_F_SOVERS_EXISTS ${ _lt_vers_am_contents } )
2017-01-11 07:09:53 +08:00
if ( H5_F_SOVERS_EXISTS )
2016-02-29 10:43:00 +08:00
string ( REGEX REPLACE ".*LT_F_VERS_INTERFACE[ \t]+=[ \t]+([0-9]*).*$"
" \ \ 1 " H 5 _ F _ S O V E R S _ I N T E R F A C E $ { _ l t _ v e r s _ a m _ c o n t e n t s } )
string ( REGEX REPLACE ".*LT_F_VERS_REVISION[ \t]+=[ \t]+([0-9]*).*$"
" \ \ 1 " H 5 _ F _ S O V E R S _ M I N O R $ { _ l t _ v e r s _ a m _ c o n t e n t s } )
string ( REGEX REPLACE ".*LT_F_VERS_AGE[ \t]+=[ \t]+([0-9]*).*$"
" \ \ 1 " H 5 _ F _ S O V E R S _ R E L E A S E $ { _ l t _ v e r s _ a m _ c o n t e n t s } )
2017-03-03 02:20:26 +08:00
math ( EXPR H5_F_SOVERS_MAJOR ${ H5_F_SOVERS_INTERFACE } - ${ H5_F_SOVERS_RELEASE } )
2016-02-29 10:43:00 +08:00
message ( STATUS "SOVERSION_F: ${H5_F_SOVERS_MAJOR}.${H5_F_SOVERS_RELEASE}.${H5_F_SOVERS_MINOR}" )
2017-01-11 07:09:53 +08:00
endif ( )
2017-04-07 00:22:29 +08:00
string ( REGEX MATCH ".*LT_HL_VERS_INTERFACE[ \t]+=[ \t]+([0-9]*).*$" H5_HL_SOVERS_EXISTS ${ _lt_vers_am_contents } )
2017-01-11 07:09:53 +08:00
if ( H5_HL_SOVERS_EXISTS )
2016-02-29 10:43:00 +08:00
string ( REGEX REPLACE ".*LT_HL_VERS_INTERFACE[ \t]+=[ \t]+([0-9]*).*$"
" \ \ 1 " H 5 _ H L _ S O V E R S _ I N T E R F A C E $ { _ l t _ v e r s _ a m _ c o n t e n t s } )
string ( REGEX REPLACE ".*LT_HL_VERS_REVISION[ \t]+=[ \t]+([0-9]*).*$"
" \ \ 1 " H 5 _ H L _ S O V E R S _ M I N O R $ { _ l t _ v e r s _ a m _ c o n t e n t s } )
string ( REGEX REPLACE ".*LT_HL_VERS_AGE[ \t]+=[ \t]+([0-9]*).*$"
" \ \ 1 " H 5 _ H L _ S O V E R S _ R E L E A S E $ { _ l t _ v e r s _ a m _ c o n t e n t s } )
2017-03-03 02:20:26 +08:00
math ( EXPR H5_HL_SOVERS_MAJOR ${ H5_HL_SOVERS_INTERFACE } - ${ H5_HL_SOVERS_RELEASE } )
2016-02-29 10:43:00 +08:00
message ( STATUS "SOVERSION_HL: ${H5_HL_SOVERS_MAJOR}.${H5_HL_SOVERS_RELEASE}.${H5_HL_SOVERS_MINOR}" )
2017-01-11 07:09:53 +08:00
endif ( )
2017-04-07 00:22:29 +08:00
string ( REGEX MATCH ".*LT_HL_CXX_VERS_INTERFACE[ \t]+=[ \t]+([0-9]*).*$" H5_HL_CXX_SOVERS_EXISTS ${ _lt_vers_am_contents } )
2017-01-11 07:09:53 +08:00
if ( H5_HL_CXX_SOVERS_EXISTS )
2016-02-29 10:43:00 +08:00
string ( REGEX REPLACE ".*LT_HL_CXX_VERS_INTERFACE[ \t]+=[ \t]+([0-9]*).*$"
" \ \ 1 " H 5 _ H L _ C X X _ S O V E R S _ I N T E R F A C E $ { _ l t _ v e r s _ a m _ c o n t e n t s } )
string ( REGEX REPLACE ".*LT_HL_CXX_VERS_REVISION[ \t]+=[ \t]+([0-9]*).*$"
" \ \ 1 " H 5 _ H L _ C X X _ S O V E R S _ M I N O R $ { _ l t _ v e r s _ a m _ c o n t e n t s } )
string ( REGEX REPLACE ".*LT_HL_CXX_VERS_AGE[ \t]+=[ \t]+([0-9]*).*$"
" \ \ 1 " H 5 _ H L _ C X X _ S O V E R S _ R E L E A S E $ { _ l t _ v e r s _ a m _ c o n t e n t s } )
2017-03-03 02:20:26 +08:00
math ( EXPR H5_HL_CXX_SOVERS_MAJOR ${ H5_HL_CXX_SOVERS_INTERFACE } - ${ H5_HL_CXX_SOVERS_RELEASE } )
2016-02-29 10:43:00 +08:00
message ( STATUS "SOVERSION_HL_CXX: ${H5_HL_CXX_SOVERS_MAJOR}.${H5_HL_CXX_SOVERS_RELEASE}.${H5_HL_CXX_SOVERS_MINOR}" )
2017-01-11 07:09:53 +08:00
endif ( )
2017-04-07 00:22:29 +08:00
string ( REGEX MATCH ".*LT_HL_F_VERS_INTERFACE[ \t]+=[ \t]+([0-9]*).*$" H5_HL_F_SOVERS_EXISTS ${ _lt_vers_am_contents } )
2017-01-11 07:09:53 +08:00
if ( H5_HL_F_SOVERS_EXISTS )
2016-02-29 10:43:00 +08:00
string ( REGEX REPLACE ".*LT_HL_F_VERS_INTERFACE[ \t]+=[ \t]+([0-9]*).*$"
" \ \ 1 " H 5 _ H L _ F _ S O V E R S _ I N T E R F A C E $ { _ l t _ v e r s _ a m _ c o n t e n t s } )
string ( REGEX REPLACE ".*LT_HL_F_VERS_REVISION[ \t]+=[ \t]+([0-9]*).*$"
" \ \ 1 " H 5 _ H L _ F _ S O V E R S _ M I N O R $ { _ l t _ v e r s _ a m _ c o n t e n t s } )
string ( REGEX REPLACE ".*LT_HL_F_VERS_AGE[ \t]+=[ \t]+([0-9]*).*$"
" \ \ 1 " H 5 _ H L _ F _ S O V E R S _ R E L E A S E $ { _ l t _ v e r s _ a m _ c o n t e n t s } )
2017-03-03 02:20:26 +08:00
math ( EXPR H5_HL_F_SOVERS_MAJOR ${ H5_HL_F_SOVERS_INTERFACE } - ${ H5_HL_F_SOVERS_RELEASE } )
2016-02-29 10:43:00 +08:00
message ( STATUS "SOVERSION_HL_F: ${H5_HL_F_SOVERS_MAJOR}.${H5_HL_F_SOVERS_RELEASE}.${H5_HL_F_SOVERS_MINOR}" )
2017-01-11 07:09:53 +08:00
endif ( )
2017-04-07 00:22:29 +08:00
string ( REGEX MATCH ".*LT_JAVA_VERS_INTERFACE[ \t]+=[ \t]+([0-9]*).*$" H5_JAVA_SOVERS_EXISTS ${ _lt_vers_am_contents } )
2016-02-29 10:43:00 +08:00
if ( H5_JAVA_SOVERS_EXISTS )
string ( REGEX REPLACE ".*LT_JAVA_VERS_INTERFACE[ \t]+=[ \t]+([0-9]*).*$"
" \ \ 1 " H 5 _ J A V A _ S O V E R S _ I N T E R F A C E $ { _ l t _ v e r s _ a m _ c o n t e n t s } )
string ( REGEX REPLACE ".*LT_JAVA_VERS_REVISION[ \t]+=[ \t]+([0-9]*).*$"
" \ \ 1 " H 5 _ J A V A _ S O V E R S _ M I N O R $ { _ l t _ v e r s _ a m _ c o n t e n t s } )
string ( REGEX REPLACE ".*LT_JAVA_VERS_AGE[ \t]+=[ \t]+([0-9]*).*$"
" \ \ 1 " H 5 _ J A V A _ S O V E R S _ R E L E A S E $ { _ l t _ v e r s _ a m _ c o n t e n t s } )
2017-03-03 02:20:26 +08:00
math ( EXPR H5_JAVA_SOVERS_MAJOR ${ H5_JAVA_SOVERS_INTERFACE } - ${ H5_JAVA_SOVERS_RELEASE } )
2016-02-29 10:43:00 +08:00
message ( STATUS "SOVERSION_JAVA: ${H5_JAVA_SOVERS_MAJOR}.${H5_JAVA_SOVERS_RELEASE}.${H5_JAVA_SOVERS_MINOR}" )
2017-01-11 07:09:53 +08:00
endif ( )
2011-05-25 22:57:16 +08:00
2010-07-21 22:00:47 +08:00
#-----------------------------------------------------------------------------
# Basic HDF5 stuff here
#-----------------------------------------------------------------------------
2014-03-12 05:14:57 +08:00
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}" )
2020-08-24 19:55:00 +08:00
if ( H5_VERS_SUBRELEASE )
2020-08-26 22:03:43 +08:00
set ( HDF5_PACKAGE_VERSION_STRING "${HDF5_PACKAGE_VERSION}.${H5_VERS_SUBRELEASE}" )
set ( HDF5_RELEASE_VERSION_STRING "${HDF5_PACKAGE_VERSION}-${H5_VERS_SUBRELEASE}" )
2020-08-24 19:55:00 +08:00
else ( )
2020-08-24 21:01:01 +08:00
set ( HDF5_PACKAGE_VERSION_STRING "${HDF5_PACKAGE_VERSION}" )
2020-08-26 22:03:43 +08:00
set ( HDF5_RELEASE_VERSION_STRING "${HDF5_PACKAGE_VERSION}" )
2017-01-11 07:09:53 +08:00
endif ( )
2018-04-10 21:55:17 +08:00
set ( HDF5_LIB_PACKAGE_SOVERSION "${H5_LIB_SOVERS_MAJOR}.${H5_LIB_SOVERS_RELEASE}.${H5_LIB_SOVERS_MINOR}" )
set ( HDF5_LIB_PACKAGE_SOVERSION_MAJOR "${H5_LIB_SOVERS_MAJOR}" )
2017-01-11 07:09:53 +08:00
if ( H5_TOOLS_SOVERS_EXISTS )
2016-02-29 10:43:00 +08:00
set ( HDF5_TOOLS_PACKAGE_SOVERSION "${H5_TOOLS_SOVERS_MAJOR}.${H5_TOOLS_SOVERS_RELEASE}.${H5_TOOLS_SOVERS_MINOR}" )
2018-04-10 21:55:17 +08:00
set ( HDF5_TOOLS_PACKAGE_SOVERSION_MAJOR "${H5_TOOLS_SOVERS_MAJOR}" )
2017-01-11 07:09:53 +08:00
else ( )
2018-04-10 21:55:17 +08:00
set ( HDF5_TOOLS_PACKAGE_SOVERSION "${H5_LIB_SOVERS_MAJOR}.${H5_LIB_SOVERS_RELEASE}.${H5_LIB_SOVERS_MINOR}" )
set ( HDF5_TOOLS_PACKAGE_SOVERSION_MAJOR "${H5_LIB_SOVERS_MAJOR}" )
2017-01-11 07:09:53 +08:00
endif ( )
if ( H5_CXX_SOVERS_EXISTS )
2016-02-29 10:43:00 +08:00
set ( HDF5_CXX_PACKAGE_SOVERSION "${H5_CXX_SOVERS_MAJOR}.${H5_CXX_SOVERS_RELEASE}.${H5_CXX_SOVERS_MINOR}" )
2018-04-10 21:55:17 +08:00
set ( HDF5_CXX_PACKAGE_SOVERSION_MAJOR "${H5_CXX_SOVERS_MAJOR}" )
2017-01-11 07:09:53 +08:00
else ( )
2018-04-10 21:55:17 +08:00
set ( HDF5_CXX_PACKAGE_SOVERSION "${H5_LIB_SOVERS_MAJOR}.${H5_LIB_SOVERS_RELEASE}.${H5_LIB_SOVERS_MINOR}" )
set ( HDF5_CXX_PACKAGE_SOVERSION_MAJOR "${H5_LIB_SOVERS_MAJOR}" )
2017-01-11 07:09:53 +08:00
endif ( )
if ( H5_F_SOVERS_EXISTS )
2016-02-29 10:43:00 +08:00
set ( HDF5_F_PACKAGE_SOVERSION "${H5_F_SOVERS_MAJOR}.${H5_F_SOVERS_RELEASE}.${H5_F_SOVERS_MINOR}" )
2018-04-10 21:55:17 +08:00
set ( HDF5_F_PACKAGE_SOVERSION_MAJOR "${H5_F_SOVERS_MAJOR}" )
2017-01-11 07:09:53 +08:00
else ( )
2018-04-10 21:55:17 +08:00
set ( HDF5_F_PACKAGE_SOVERSION "${H5_LIB_SOVERS_MAJOR}.${H5_LIB_SOVERS_RELEASE}.${H5_LIB_SOVERS_MINOR}" )
set ( HDF5_F_PACKAGE_SOVERSION_MAJOR "${H5_LIB_SOVERS_MAJOR}" )
2017-01-11 07:09:53 +08:00
endif ( )
if ( H5_HL_SOVERS_EXISTS )
2016-02-29 10:43:00 +08:00
set ( HDF5_HL_PACKAGE_SOVERSION "${H5_HL_SOVERS_MAJOR}.${H5_HL_SOVERS_RELEASE}.${H5_HL_SOVERS_MINOR}" )
2018-04-10 21:55:17 +08:00
set ( HDF5_HL_PACKAGE_SOVERSION_MAJOR "${H5_HL_SOVERS_MAJOR}" )
2017-01-11 07:09:53 +08:00
else ( )
2018-04-10 21:55:17 +08:00
set ( HDF5_HL_PACKAGE_SOVERSION "${H5_LIB_SOVERS_MAJOR}.${H5_LIB_SOVERS_RELEASE}.${H5_LIB_SOVERS_MINOR}" )
set ( HDF5_HL_PACKAGE_SOVERSION_MAJOR "${H5_LIB_SOVERS_MAJOR}" )
2017-01-11 07:09:53 +08:00
endif ( )
if ( H5_HL_F_SOVERS_EXISTS )
2016-02-29 10:43:00 +08:00
set ( HDF5_HL_CXX_PACKAGE_SOVERSION "${H5_HL_CXX_SOVERS_MAJOR}.${H5_HL_CXX_SOVERS_RELEASE}.${H5_HL_CXX_SOVERS_MINOR}" )
2018-04-10 21:55:17 +08:00
set ( HDF5_HL_CXX_PACKAGE_SOVERSION_MAJOR "${H5_HL_CXX_SOVERS_MAJOR}" )
2017-01-11 07:09:53 +08:00
else ( )
2018-04-10 21:55:17 +08:00
set ( HDF5_HL_CXX_PACKAGE_SOVERSION "${H5_LIB_SOVERS_MAJOR}.${H5_LIB_SOVERS_RELEASE}.${H5_LIB_SOVERS_MINOR}" )
set ( HDF5_HL_CXX_PACKAGE_SOVERSION_MAJOR "${H5_LIB_SOVERS_MAJOR}" )
2017-01-11 07:09:53 +08:00
endif ( )
if ( H5_HL_F_SOVERS_EXISTS )
2016-02-29 10:43:00 +08:00
set ( HDF5_HL_F_PACKAGE_SOVERSION "${H5_HL_F_SOVERS_MAJOR}.${H5_HL_F_SOVERS_RELEASE}.${H5_HL_F_SOVERS_MINOR}" )
2018-04-10 21:55:17 +08:00
set ( HDF5_HL_F_PACKAGE_SOVERSION_MAJOR "${H5_HL_F_SOVERS_MAJOR}" )
2017-01-11 07:09:53 +08:00
else ( )
2018-04-10 21:55:17 +08:00
set ( HDF5_HL_F_PACKAGE_SOVERSION "${H5_LIB_SOVERS_MAJOR}.${H5_LIB_SOVERS_RELEASE}.${H5_LIB_SOVERS_MINOR}" )
set ( HDF5_HL_F_PACKAGE_SOVERSION_MAJOR "${H5_LIB_SOVERS_MAJOR}" )
2017-01-11 07:09:53 +08:00
endif ( )
if ( H5_JAVA_SOVERS_EXISTS )
2018-04-10 21:55:17 +08:00
set ( HDF5_JAVA_PACKAGE_SOVERSION "${H5_JAVA_SOVERS_MAJOR}.${H5_JAVA_SOVERS_RELEASE}.${H5_JAVA_SOVERS_MINOR}" )
set ( HDF5_JAVA_PACKAGE_SOVERSION_MAJOR "${H5_JAVA_SOVERS_MAJOR}" )
2017-01-11 07:09:53 +08:00
else ( )
2018-04-10 21:55:17 +08:00
set ( HDF5_JAVA_PACKAGE_SOVERSION "${H5_LIB_SOVERS_MAJOR}.${H5_LIB_SOVERS_RELEASE}.${H5_LIB_SOVERS_MINOR}" )
set ( HDF5_JAVA_PACKAGE_SOVERSION_MAJOR "${H5_LIB_SOVERS_MAJOR}" )
2017-01-11 07:09:53 +08:00
endif ( )
2014-03-12 05:14:57 +08:00
set ( HDF5_PACKAGE_STRING "${HDF5_PACKAGE_NAME} ${HDF5_PACKAGE_VERSION_STRING}" )
set ( HDF5_PACKAGE_TARNAME "${HDF5_PACKAGE}${HDF_PACKAGE_EXT}" )
set ( HDF5_PACKAGE_URL "http://www.hdfgroup.org" )
set ( HDF5_PACKAGE_BUGREPORT "help@hdfgroup.org" )
2010-07-21 22:00:47 +08:00
2010-05-14 00:01:50 +08:00
#-----------------------------------------------------------------------------
# Include some macros for reusable code
#-----------------------------------------------------------------------------
2014-05-15 03:50:28 +08:00
include ( ${ HDF_RESOURCES_EXT_DIR } /HDFMacros.cmake )
2010-05-14 00:01:50 +08:00
2018-01-30 00:27:32 +08:00
HDF_DIR_PATHS ( ${ HDF5_PACKAGE_NAME } )
2018-01-09 23:56:28 +08:00
2018-01-30 00:27:32 +08:00
include ( ${ HDF_RESOURCES_EXT_DIR } /HDFLibMacros.cmake )
2020-09-26 05:43:57 +08:00
include ( ${ HDF_RESOURCES_DIR } /HDF5PluginMacros.cmake )
2018-01-30 00:27:32 +08:00
include ( ${ HDF_RESOURCES_DIR } /HDF5Macros.cmake )
2010-05-14 00:01:50 +08:00
#-----------------------------------------------------------------------------
# Targets built within this project are exported at Install time for use
2018-01-30 00:27:32 +08:00
# by other projects.
2010-05-14 00:01:50 +08:00
#-----------------------------------------------------------------------------
2014-03-12 05:14:57 +08:00
if ( NOT HDF5_EXPORTED_TARGETS )
set ( HDF5_EXPORTED_TARGETS "hdf5-targets" )
2017-01-11 07:09:53 +08:00
endif ( )
2010-05-14 00:01:50 +08:00
#-----------------------------------------------------------------------------
# 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
#-----------------------------------------------------------------------------
2014-03-12 05:14:57 +08:00
set_global_variable ( HDF5_LIBRARIES_TO_EXPORT "" )
2016-10-15 00:22:22 +08:00
set_global_variable ( HDF5_UTILS_TO_EXPORT "" )
2014-03-12 05:14:57 +08:00
set ( EXTERNAL_HEADER_LIST "" )
set ( EXTERNAL_LIBRARY_LIST "" )
set ( EXTERNAL_LIBRARYDLL_LIST "" )
2010-05-14 00:01:50 +08:00
#-----------------------------------------------------------------------------
# Run all the CMake configuration tests for our build environment
#-----------------------------------------------------------------------------
2014-05-15 03:50:28 +08:00
include ( ${ HDF_RESOURCES_DIR } /ConfigureChecks.cmake )
2014-03-12 05:14:57 +08:00
set ( CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE ON )
2010-05-14 00:01:50 +08:00
2015-07-10 00:56:16 +08:00
#-----------------------------------------------------------------------------
# Mac OS X Options
#-----------------------------------------------------------------------------
if ( HDF5_BUILD_FRAMEWORKS AND NOT BUILD_SHARED_LIBS )
2019-06-18 20:46:25 +08:00
set ( BUILD_SHARED_LIBS ON CACHE BOOL "Build Shared Libraries" FORCE )
2017-01-11 07:09:53 +08:00
endif ( )
2015-07-10 00:56:16 +08:00
2010-05-14 00:01:50 +08:00
#-----------------------------------------------------------------------------
2017-02-03 03:47:39 +08:00
# Option to Build Shared and Static libs, default is both
2010-05-14 00:01:50 +08:00
#-----------------------------------------------------------------------------
2020-01-16 01:38:06 +08:00
option ( BUILD_STATIC_LIBS "Build Static Libraries" ON )
set ( H5_ENABLE_STATIC_LIB NO )
2015-08-06 05:01:07 +08:00
option ( BUILD_SHARED_LIBS "Build Shared Libraries" ON )
2014-03-12 05:14:57 +08:00
set ( H5_ENABLE_SHARED_LIB NO )
2020-01-16 01:38:06 +08:00
option ( ONLY_SHARED_LIBS "Only Build Shared Libraries" OFF )
2020-01-29 03:14:59 +08:00
mark_as_advanced ( ONLY_SHARED_LIBS )
2020-01-16 01:38:06 +08:00
if ( BUILD_STATIC_LIBS )
set ( H5_ENABLE_STATIC_LIB YES )
endif ( )
2014-03-12 05:14:57 +08:00
if ( BUILD_SHARED_LIBS )
set ( H5_ENABLE_SHARED_LIB YES )
2017-01-11 07:09:53 +08:00
endif ( )
2020-01-16 01:38:06 +08:00
# Force only shared libraries if all OFF
if ( NOT BUILD_STATIC_LIBS AND NOT BUILD_SHARED_LIBS )
set ( ONLY_SHARED_LIBS ON CACHE BOOL "Only Build Shared Libraries" FORCE )
endif ( )
if ( ONLY_SHARED_LIBS )
set ( H5_ENABLE_STATIC_LIB NO )
set ( BUILD_SHARED_LIBS ON CACHE BOOL "Build Shared Libraries" )
endif ( )
2015-03-26 06:08:46 +08:00
set ( CMAKE_POSITION_INDEPENDENT_CODE ON )
2010-05-14 00:01:50 +08:00
2020-01-29 03:14:59 +08:00
if ( NOT BUILD_SHARED_LIBS )
set ( tgt_file_ext "" )
else ( )
set ( tgt_file_ext "-shared" )
endif ( )
2011-02-22 22:55:04 +08:00
#-----------------------------------------------------------------------------
# Option to Build Static executables
#-----------------------------------------------------------------------------
2018-07-31 01:39:28 +08:00
option ( BUILD_STATIC_EXECS "Build Static Executables" OFF )
2014-03-12 05:14:57 +08:00
if ( BUILD_STATIC_EXECS )
if ( NOT WIN32 )
set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static" )
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static" )
2017-01-11 07:09:53 +08:00
endif ( )
endif ( )
2011-02-22 22:55:04 +08:00
2019-12-12 06:48:55 +08:00
if ( HDF5_ENABLE_ANALYZER_TOOLS )
include ( ${ HDF5_SOURCE_DIR } /config/sanitizer/tools.cmake )
endif ( )
if ( HDF5_ENABLE_SANITIZERS )
include ( ${ HDF5_SOURCE_DIR } /config/sanitizer/sanitizers.cmake )
endif ( )
2020-09-05 05:36:52 +08:00
if ( HDF5_ENABLE_FORMATTERS )
include ( ${ HDF5_SOURCE_DIR } /config/sanitizer/formatting.cmake )
endif ( )
2019-12-12 06:48:55 +08:00
2010-06-23 03:04:20 +08:00
#-----------------------------------------------------------------------------
# Option to use code coverage
#-----------------------------------------------------------------------------
2014-03-12 05:14:57 +08:00
option ( HDF5_ENABLE_COVERAGE "Enable code coverage for Libraries and Programs" OFF )
if ( HDF5_ENABLE_COVERAGE )
2019-12-12 06:48:55 +08:00
include ( ${ HDF5_SOURCE_DIR } /config/sanitizer/code-coverage.cmake )
if ( CODE_COVERAGE AND CODE_COVERAGE_ADDED )
2020-01-29 03:14:59 +08:00
add_code_coverage ( ) # Adds instrumentation to all targets
2018-08-09 23:59:32 +08:00
else ( )
2019-12-12 06:48:55 +08:00
set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0 --coverage -fprofile-arcs -ftest-coverage" )
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g --coverage -O0 -fprofile-arcs -ftest-coverage" )
if ( CMAKE_C_COMPILER_ID STREQUAL "GNU" )
set ( LDFLAGS "${LDFLAGS} -fprofile-arcs -ftest-coverage" )
link_libraries ( gcov )
else ( )
set ( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --coverage" )
endif ( )
2018-08-09 23:59:32 +08:00
endif ( )
2017-01-11 07:09:53 +08:00
endif ( )
2010-06-23 03:04:20 +08:00
2012-06-05 01:05:02 +08:00
#-----------------------------------------------------------------------------
# Option to indicate using dmalloc
#-----------------------------------------------------------------------------
2014-03-12 05:14:57 +08:00
# option (HDF5_ENABLE_USING_DMALLOC "Indicate that dmalloc is used" OFF)
# if (HDF5_ENABLE_USING_DMALLOC)
2014-03-19 00:21:46 +08:00
# find_package (DMALLOC)
2015-05-15 00:51:20 +08:00
# set (H5_HAVE_DMALLOC DMALLOC_FOUND)
2017-01-11 07:09:53 +08:00
# endif ()
2012-06-05 01:05:02 +08:00
2020-11-04 00:42:09 +08:00
#-----------------------------------------------------------------------------
# Option to build documentation
#-----------------------------------------------------------------------------
2020-11-09 21:55:52 +08:00
option ( HDF5_BUILD_DOC "Build documentation" OFF )
2020-11-04 00:42:09 +08:00
if ( HDF5_BUILD_DOC AND EXISTS "${HDF5_DOXYGEN_DIR}" AND IS_DIRECTORY "${HDF5_DOXYGEN_DIR}" )
# check if Doxygen is installed
find_package ( Doxygen )
if ( DOXYGEN_FOUND )
message ( STATUS "Doxygen version: ${DOXYGEN_VERSION}" )
else ( )
message ( STATUS "Doxygen needs to be installed to generate the doxygen documentation" )
endif ( )
endif ( )
2010-10-08 00:05:41 +08:00
#-----------------------------------------------------------------------------
# Option to indicate using a memory checker
#-----------------------------------------------------------------------------
2014-03-12 05:14:57 +08:00
option ( HDF5_ENABLE_USING_MEMCHECKER "Indicate that a memory checker is used" OFF )
if ( HDF5_ENABLE_USING_MEMCHECKER )
2015-05-15 00:51:20 +08:00
set ( H5_USING_MEMCHECKER 1 )
2017-01-11 07:09:53 +08:00
endif ( )
2010-10-08 00:05:41 +08:00
2016-01-04 06:06:52 +08:00
#-----------------------------------------------------------------------------
# Option to indicate internal memory allocation sanity checks are enabled
#-----------------------------------------------------------------------------
option ( HDF5_MEMORY_ALLOC_SANITY_CHECK "Indicate that internal memory allocation sanity checks are enabled" OFF )
if ( HDF5_MEMORY_ALLOC_SANITY_CHECK )
set ( H5_MEMORY_ALLOC_SANITY_CHECK 1 )
2017-01-11 07:09:53 +08:00
endif ( )
2016-01-04 06:06:52 +08:00
2019-01-31 09:32:40 +08:00
#-----------------------------------------------------------------------------
# Option to enable/disable using pread/pwrite for VFDs
#-----------------------------------------------------------------------------
option ( HDF5_ENABLE_PREADWRITE "Use pread/pwrite in sec2/log/core VFDs in place of read/write (when available)" ON )
mark_as_advanced ( HDF5_ENABLE_PREADWRITE )
2019-02-02 05:23:54 +08:00
if ( HDF5_ENABLE_PREADWRITE AND H5_HAVE_PREAD AND H5_HAVE_PWRITE )
2019-01-31 09:32:40 +08:00
set ( H5_HAVE_PREADWRITE 1 )
endif ( )
2010-11-17 00:38:40 +08:00
#-----------------------------------------------------------------------------
# Option to use deprecated public API symbols
#-----------------------------------------------------------------------------
2014-03-12 05:14:57 +08:00
option ( HDF5_ENABLE_DEPRECATED_SYMBOLS "Enable deprecated public API symbols" ON )
if ( HDF5_ENABLE_DEPRECATED_SYMBOLS )
2015-05-15 00:51:20 +08:00
set ( H5_NO_DEPRECATED_SYMBOLS 0 )
2017-01-11 07:09:53 +08:00
else ( )
2015-05-15 00:51:20 +08:00
set ( H5_NO_DEPRECATED_SYMBOLS 1 )
2017-01-11 07:09:53 +08:00
endif ( )
2010-11-17 00:38:40 +08:00
2010-05-14 00:01:50 +08:00
#-----------------------------------------------------------------------------
# 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
#-----------------------------------------------------------------------------
2020-10-30 20:09:23 +08:00
if ( WIN32 )
add_compile_definitions ( _CRT_SECURE_NO_WARNINGS )
if ( MSVC )
add_compile_definitions ( _BIND_TO_CURRENT_VCLIBS_VERSION=1 _CONSOLE )
endif ( )
2017-01-11 07:09:53 +08:00
endif ( )
2014-03-12 05:14:57 +08:00
2020-10-30 17:44:24 +08:00
option ( HDF5_MINGW_STATIC_GCC_LIBS "Statically link libgcc/libstdc++" OFF )
2014-03-12 05:14:57 +08:00
if ( MSVC )
set ( CMAKE_MFC_FLAG 0 )
set ( WIN_COMPILE_FLAGS "" )
set ( WIN_LINK_FLAGS "" )
2017-01-11 07:09:53 +08:00
endif ( )
2014-03-12 05:14:57 +08:00
set ( MAKE_SYSTEM )
2020-11-17 21:53:10 +08:00
if ( CMAKE_MAKE_PROGRAM MATCHES "make" )
2014-03-12 05:14:57 +08:00
set ( MAKE_SYSTEM 1 )
2017-01-11 07:09:53 +08:00
endif ( )
2014-03-12 05:14:57 +08:00
set ( CFG_INIT "/${CMAKE_CFG_INTDIR}" )
if ( MAKE_SYSTEM )
set ( CFG_INIT "" )
2017-01-11 07:09:53 +08:00
endif ( )
2010-05-14 00:01:50 +08:00
2017-09-12 22:24:37 +08:00
# Do not generate test programs by default
option ( HDF5_BUILD_GENERATORS "Build Test Generators" OFF )
2010-05-14 00:01:50 +08:00
#-----------------------------------------------------------------------------
# Add some definitions for Debug Builds
#-----------------------------------------------------------------------------
2015-03-18 02:59:19 +08:00
option ( HDF5_ENABLE_TRACE "Enable API tracing capability" OFF )
mark_as_advanced ( HDF5_ENABLE_TRACE )
2018-01-20 00:49:17 +08:00
if ( ${ HDF_CFG_NAME } MATCHES "Debug" )
2012-06-05 01:05:02 +08:00
# Enable instrumenting of the library's internal operations
2014-03-12 05:14:57 +08:00
option ( HDF5_ENABLE_INSTRUMENT "Instrument The library" OFF )
if ( HDF5_ENABLE_INSTRUMENT )
set ( H5_HAVE_INSTRUMENTED_LIBRARY 1 )
2017-01-11 07:09:53 +08:00
endif ( )
2015-03-18 02:59:19 +08:00
mark_as_advanced ( HDF5_ENABLE_INSTRUMENT )
2017-01-11 07:09:53 +08:00
endif ( )
2010-05-14 00:01:50 +08:00
2011-08-19 04:59:00 +08:00
#-----------------------------------------------------------------------------
# Option to embed library info into executables
#-----------------------------------------------------------------------------
2018-01-31 06:03:03 +08:00
if ( CMAKE_SYSTEM_NAME STREQUAL "Emscripten" )
set ( H5_HAVE_EMBEDDED_LIBINFO 0 )
else ( )
option ( HDF5_ENABLE_EMBEDDED_LIBINFO "embed library info into executables" ON )
if ( HDF5_ENABLE_EMBEDDED_LIBINFO )
set ( H5_HAVE_EMBEDDED_LIBINFO 1 )
endif ( )
2017-01-11 07:09:53 +08:00
endif ( )
2011-08-19 04:59:00 +08:00
2015-05-15 00:51:20 +08:00
include ( ${ HDF_RESOURCES_DIR } /HDFCompilerFlags.cmake )
2018-09-01 02:29:36 +08:00
set ( CMAKE_MODULE_PATH ${ HDF_RESOURCES_DIR } ${ HDF_RESOURCES_EXT_DIR } ${ CMAKE_MODULE_PATH } )
2010-05-14 00:01:50 +08:00
2019-07-26 00:36:37 +08:00
#-----------------------------------------------------------------------------
# Option to Enable HDFS
#-----------------------------------------------------------------------------
option ( HDF5_ENABLE_HDFS "Enable HDFS" OFF )
if ( HDF5_ENABLE_HDFS )
find_package ( JNI REQUIRED )
if ( JNI_FOUND )
set ( H5_HAVE_LIBJVM 1 )
endif ( )
find_package ( HDFS REQUIRED )
if ( HDFS_FOUND )
set ( H5_HAVE_LIBHDFS 1 )
set ( H5_HAVE_HDFS_H 1 )
if ( NOT MSVC )
list ( APPEND LINK_LIBS -pthread )
endif ( )
else ( )
message ( FATAL_ERROR "Set to use libhdfs library, but could not find or use libhdfs. Please verify that the path to HADOOP_HOME is valid, and/or reconfigure without HDF5_ENABLE_HDFS" )
endif ( )
endif ( )
2010-05-14 00:01:50 +08:00
#-----------------------------------------------------------------------------
# Option to Enable MPI Parallel
#-----------------------------------------------------------------------------
2014-03-12 05:14:57 +08:00
option ( HDF5_ENABLE_PARALLEL "Enable parallel build (requires MPI)" OFF )
if ( HDF5_ENABLE_PARALLEL )
2017-11-02 01:29:53 +08:00
find_package ( MPI REQUIRED )
2014-03-12 05:14:57 +08:00
if ( MPI_C_FOUND )
set ( H5_HAVE_PARALLEL 1 )
2011-11-03 04:39:31 +08:00
# MPI checks, only do these if MPI_C_FOUND is true, otherwise they always fail
2010-05-26 00:00:56 +08:00
# and once set, they are cached as false and not regenerated
2018-08-02 23:22:37 +08:00
set ( CMAKE_REQUIRED_LIBRARIES "${MPI_C_LIBRARIES}" )
set ( CMAKE_REQUIRED_INCLUDES "${MPI_C_INCLUDE_DIRS}" )
2010-05-26 00:00:56 +08:00
# Used by Fortran + MPI
2018-08-02 23:22:37 +08:00
CHECK_SYMBOL_EXISTS ( MPI_Comm_c2f "mpi.h" H5_HAVE_MPI_MULTI_LANG_Comm )
CHECK_SYMBOL_EXISTS ( MPI_Info_c2f "mpi.h" H5_HAVE_MPI_MULTI_LANG_Info )
2018-07-27 01:50:26 +08:00
# Used by Parallel Compression feature
2018-07-31 23:45:43 +08:00
set ( PARALLEL_FILTERED_WRITES ON )
2018-08-02 23:38:54 +08:00
CHECK_SYMBOL_EXISTS ( MPI_Mprobe "mpi.h" H5_HAVE_MPI_Mprobe )
2018-08-02 23:22:37 +08:00
CHECK_SYMBOL_EXISTS ( MPI_Imrecv "mpi.h" H5_HAVE_MPI_Imrecv )
2018-07-27 01:50:26 +08:00
if ( NOT H5_HAVE_MPI_Mprobe OR NOT H5_HAVE_MPI_Imrecv )
message ( WARNING " The MPI_Mprobe and/or MPI_Imrecv functions could not be located.
P a r a l l e l w r i t e s o f f i l t e r e d d a t a w i l l b e d i s a b l e d . " )
2018-07-31 23:45:43 +08:00
set ( PARALLEL_FILTERED_WRITES OFF )
2018-07-27 01:50:26 +08:00
endif ( )
2018-08-01 02:42:19 +08:00
# Used by big I/O feature
set ( LARGE_PARALLEL_IO ON )
2018-08-02 23:22:37 +08:00
CHECK_SYMBOL_EXISTS ( MPI_Get_elements_x "mpi.h" H5_HAVE_MPI_Get_elements_x )
CHECK_SYMBOL_EXISTS ( MPI_Type_size_x "mpi.h" H5_HAVE_MPI_Type_size_x )
2018-08-01 02:42:19 +08:00
if ( NOT H5_HAVE_MPI_Get_elements_x OR NOT H5_HAVE_MPI_Type_size_x )
message ( WARNING " The MPI_Get_elements_x and/or MPI_Type_size_x functions could not be located.
R e a d i n g / W r i t i n g > 2 G B o f d a t a i n a s i n g l e p a r a l l e l I / O o p e r a t i o n w i l l b e d i s a b l e d . " )
set ( LARGE_PARALLEL_IO OFF )
endif ( )
2017-01-11 07:09:53 +08:00
else ( )
2018-09-01 02:29:36 +08:00
message ( FATAL_ERROR "Parallel libraries not found" )
2017-01-11 07:09:53 +08:00
endif ( )
endif ( )
2010-05-14 00:01:50 +08:00
# Parallel IO usage requires MPI to be Linked and Included
2014-03-12 05:14:57 +08:00
if ( H5_HAVE_PARALLEL )
set ( LINK_LIBS ${ LINK_LIBS } ${ MPI_C_LIBRARIES } )
if ( MPI_C_LINK_FLAGS )
set ( CMAKE_EXE_LINKER_FLAGS "${MPI_C_LINK_FLAGS} ${CMAKE_EXE_LINKER_FLAGS}" )
2017-01-11 07:09:53 +08:00
endif ( )
endif ( )
2010-05-14 00:01:50 +08:00
2019-09-26 06:28:17 +08:00
#option (DEFAULT_API_VERSION "Enable v1.14 API (v16, v18, v110, v112, v114)" "v114")
set ( DEFAULT_API_VERSION "v114" CACHE STRING "Enable v1.14 API (v16, v18, v110, v112, v114)" )
set_property ( CACHE DEFAULT_API_VERSION PROPERTY STRINGS v16 v18 v110 v112 v114 )
2010-05-14 00:01:50 +08:00
#-----------------------------------------------------------------------------
# Option to use 1.6.x API
#-----------------------------------------------------------------------------
2014-03-12 05:14:57 +08:00
set ( H5_USE_16_API_DEFAULT 0 )
2019-08-13 01:45:29 +08:00
if ( DEFAULT_API_VERSION MATCHES "v16" )
2014-03-12 05:14:57 +08:00
set ( H5_USE_16_API_DEFAULT 1 )
2017-01-11 07:09:53 +08:00
endif ( )
2010-05-14 00:01:50 +08:00
2011-08-04 23:21:15 +08:00
#-----------------------------------------------------------------------------
# Option to use 1.8.x API
#-----------------------------------------------------------------------------
2014-03-12 05:14:57 +08:00
set ( H5_USE_18_API_DEFAULT 0 )
2019-08-13 01:45:29 +08:00
if ( DEFAULT_API_VERSION MATCHES "v18" )
2014-03-12 05:14:57 +08:00
set ( H5_USE_18_API_DEFAULT 1 )
2017-01-11 07:09:53 +08:00
endif ( )
2011-08-04 23:21:15 +08:00
2018-08-18 03:48:43 +08:00
#-----------------------------------------------------------------------------
# Option to use 1.10.x API
#-----------------------------------------------------------------------------
set ( H5_USE_110_API_DEFAULT 0 )
2019-08-13 01:45:29 +08:00
if ( DEFAULT_API_VERSION MATCHES "v110" )
2018-08-18 03:48:43 +08:00
set ( H5_USE_110_API_DEFAULT 1 )
endif ( )
#-----------------------------------------------------------------------------
# Option to use 1.12.x API
#-----------------------------------------------------------------------------
2019-08-13 01:45:29 +08:00
if ( NOT DEFAULT_API_VERSION )
set ( DEFAULT_API_VERSION "v112" )
2019-08-13 00:24:36 +08:00
endif ( )
2018-08-18 03:48:43 +08:00
set ( H5_USE_112_API_DEFAULT 0 )
2019-08-13 01:45:29 +08:00
if ( DEFAULT_API_VERSION MATCHES "v112" )
2018-08-18 03:48:43 +08:00
set ( H5_USE_112_API_DEFAULT 1 )
endif ( )
2013-06-11 01:46:48 +08:00
#-----------------------------------------------------------------------------
2019-09-26 06:28:17 +08:00
# Option to use 1.14.x API
#-----------------------------------------------------------------------------
if ( NOT DEFAULT_API_VERSION )
set ( DEFAULT_API_VERSION "v114" )
endif ( )
set ( H5_USE_114_API_DEFAULT 0 )
if ( DEFAULT_API_VERSION MATCHES "v114" )
set ( H5_USE_114_API_DEFAULT 1 )
endif ( )
#-----------------------------------------------------------------------------
2013-06-11 01:46:48 +08:00
# Include user macros
#-----------------------------------------------------------------------------
2014-03-12 05:14:57 +08:00
include ( UserMacros.cmake )
2013-06-11 01:46:48 +08:00
2015-03-18 02:59:19 +08:00
#-----------------------------------------------------------------------------
# Include filter (zlib, szip, etc.) macros
#-----------------------------------------------------------------------------
2014-03-12 05:14:57 +08:00
include ( CMakeFilters.cmake )
2010-05-14 00:01:50 +08:00
2010-09-03 05:00:43 +08:00
#-----------------------------------------------------------------------------
# Option for external libraries on windows
#-----------------------------------------------------------------------------
2014-03-12 05:14:57 +08:00
option ( HDF5_PACKAGE_EXTLIBS "CPACK - include external libraries" OFF )
if ( NOT HDF5_EXTERNALLY_CONFIGURED )
if ( HDF5_PACKAGE_EXTLIBS )
set ( HDF5_NO_PACKAGES OFF CACHE BOOL "CPACK - Disable packaging" FORCE )
if ( HDF5_ENABLE_Z_LIB_SUPPORT AND ZLIB_FOUND )
2011-12-21 00:11:07 +08:00
PACKAGE_ZLIB_LIBRARY ( ${ HDF5_ALLOW_EXTERNAL_SUPPORT } )
2017-01-11 07:09:53 +08:00
endif ( )
2015-05-15 00:51:20 +08:00
2014-03-12 05:14:57 +08:00
if ( HDF5_ENABLE_SZIP_SUPPORT AND SZIP_FOUND )
2011-12-21 00:11:07 +08:00
PACKAGE_SZIP_LIBRARY ( ${ HDF5_ALLOW_EXTERNAL_SUPPORT } )
2017-01-11 07:09:53 +08:00
endif ( )
endif ( )
endif ( )
2019-08-13 16:36:42 +08:00
2010-09-11 00:15:34 +08:00
#-----------------------------------------------------------------------------
# Option to use threadsafe
#-----------------------------------------------------------------------------
2015-10-27 04:09:22 +08:00
option ( HDF5_ENABLE_THREADSAFE "Enable thread-safety" OFF )
if ( HDF5_ENABLE_THREADSAFE )
# check for unsupported options
2020-10-30 20:09:23 +08:00
if ( WIN32 )
2019-02-22 06:39:37 +08:00
message ( STATUS " **** thread-safety option not supported with static library **** " )
message ( STATUS " **** thread-safety option will not be used building static library **** " )
endif ( )
2015-10-27 04:09:22 +08:00
if ( HDF5_ENABLE_PARALLEL )
if ( NOT ALLOW_UNSUPPORTED )
2020-04-25 05:23:28 +08:00
message ( FATAL_ERROR " **** parallel and thread-safety options are not supported, override with ALLOW_UNSUPPORTED option **** " )
2017-01-11 07:09:53 +08:00
else ( )
2015-10-27 04:09:22 +08:00
message ( STATUS " **** Allowing unsupported parallel and thread-safety options **** " )
2017-01-11 07:09:53 +08:00
endif ( )
endif ( )
2015-10-27 04:09:22 +08:00
if ( HDF5_BUILD_FORTRAN )
if ( NOT ALLOW_UNSUPPORTED )
2020-04-25 05:23:28 +08:00
message ( FATAL_ERROR " **** Fortran and thread-safety options are not supported, override with ALLOW_UNSUPPORTED option **** " )
2017-01-11 07:09:53 +08:00
else ( )
2015-10-27 04:09:22 +08:00
message ( STATUS " **** Allowing unsupported Fortran and thread-safety options **** " )
2017-01-11 07:09:53 +08:00
endif ( )
endif ( )
2015-10-27 04:09:22 +08:00
if ( HDF5_BUILD_CPP_LIB )
if ( NOT ALLOW_UNSUPPORTED )
2020-04-25 05:23:28 +08:00
message ( FATAL_ERROR " **** C++ and thread-safety options are not supported, override with ALLOW_UNSUPPORTED option **** " )
2017-01-11 07:09:53 +08:00
else ( )
2015-10-27 04:09:22 +08:00
message ( STATUS " **** Allowing unsupported C++ and thread-safety options **** " )
2017-01-11 07:09:53 +08:00
endif ( )
endif ( )
2015-10-27 04:09:22 +08:00
if ( HDF5_BUILD_HL_LIB )
if ( NOT ALLOW_UNSUPPORTED )
2020-04-25 05:23:28 +08:00
message ( FATAL_ERROR " **** HL and thread-safety options are not supported, override with ALLOW_UNSUPPORTED option **** " )
2017-01-11 07:09:53 +08:00
else ( )
2015-10-27 04:09:22 +08:00
message ( STATUS " **** Allowing unsupported HL and thread-safety options **** " )
2017-01-11 07:09:53 +08:00
endif ( )
endif ( )
2015-10-27 04:09:22 +08:00
if ( H5_HAVE_IOEO )
message ( STATUS " **** Win32 threads requires WINVER>=0x600 (Windows Vista/7/8) **** " )
set ( H5_HAVE_WIN_THREADS 1 )
2017-01-11 07:09:53 +08:00
else ( )
2015-10-27 04:09:22 +08:00
if ( NOT H5_HAVE_PTHREAD_H )
message ( FATAL_ERROR " **** thread-safe option requires Win32 threads or Pthreads **** " )
2017-01-11 07:09:53 +08:00
endif ( )
endif ( )
2020-01-29 03:14:59 +08:00
set ( THREADS_PREFER_PTHREAD_FLAG ON )
find_package ( Threads REQUIRED )
2019-02-22 06:39:37 +08:00
if ( Threads_FOUND )
set ( H5_HAVE_THREADSAFE 1 )
2017-01-11 07:09:53 +08:00
endif ( )
endif ( )
2010-09-11 00:15:34 +08:00
2019-08-13 16:36:42 +08:00
#-----------------------------------------------------------------------------
# Option to build the map API
#-----------------------------------------------------------------------------
option ( HDF5_ENABLE_MAP_API "Build the map API" OFF )
2019-08-13 23:53:09 +08:00
if ( HDF5_ENABLE_MAP_API )
set ( H5_HAVE_MAP_API 1 )
endif ( )
2019-08-13 16:36:42 +08:00
2010-05-14 00:01:50 +08:00
#-----------------------------------------------------------------------------
# Add the HDF5 Library Target to the build
#-----------------------------------------------------------------------------
2018-01-31 02:21:01 +08:00
add_subdirectory ( src )
2010-05-14 00:01:50 +08:00
2017-09-14 03:57:55 +08:00
if ( HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "GIT" OR HDF5_ALLOW_EXTERNAL_SUPPORT MATCHES "TGZ" )
2014-03-12 05:14:57 +08:00
if ( ZLIB_FOUND AND ZLIB_USE_EXTERNAL )
2019-06-18 20:46:25 +08:00
if ( NOT ONLY_SHARED_LIBS )
add_dependencies ( ${ HDF5_LIB_TARGET } ZLIB )
endif ( )
2015-08-06 05:01:07 +08:00
if ( BUILD_SHARED_LIBS )
add_dependencies ( ${ HDF5_LIBSH_TARGET } ZLIB )
2017-01-11 07:09:53 +08:00
endif ( )
endif ( )
2014-03-12 05:14:57 +08:00
if ( SZIP_FOUND AND SZIP_USE_EXTERNAL )
2019-06-18 20:46:25 +08:00
if ( NOT ONLY_SHARED_LIBS )
add_dependencies ( ${ HDF5_LIB_TARGET } SZIP )
endif ( )
2015-08-06 05:01:07 +08:00
if ( BUILD_SHARED_LIBS )
add_dependencies ( ${ HDF5_LIBSH_TARGET } SZIP )
2017-01-11 07:09:53 +08:00
endif ( )
endif ( )
endif ( )
2010-09-29 03:02:51 +08:00
2010-05-14 00:01:50 +08:00
#-----------------------------------------------------------------------------
# Dashboard and Testing Settings
#-----------------------------------------------------------------------------
2015-04-16 00:59:11 +08:00
option ( BUILD_TESTING "Build HDF5 Unit Testing" ON )
2014-03-12 05:14:57 +08:00
if ( BUILD_TESTING )
set ( DART_TESTING_TIMEOUT 1200
2019-04-03 01:30:16 +08:00
C A C H E S T R I N G
2010-08-10 01:20:38 +08:00
" T i m e o u t i n s e c o n d s f o r e a c h test ( default 1200=20minutes ) "
)
2015-09-01 04:08:56 +08:00
2019-02-07 06:41:58 +08:00
# Generate a list of timeouts based on DART_TESTING_TIMEOUT
math ( EXPR CTEST_SHORT_TIMEOUT "${DART_TESTING_TIMEOUT} / 2" )
math ( EXPR CTEST_LONG_TIMEOUT "${DART_TESTING_TIMEOUT} * 2" )
math ( EXPR CTEST_VERY_LONG_TIMEOUT "${DART_TESTING_TIMEOUT} * 3" )
2015-09-01 04:08:56 +08:00
option ( HDF5_TEST_VFD "Execute tests with different VFDs" OFF )
mark_as_advanced ( HDF5_TEST_VFD )
if ( HDF5_TEST_VFD )
option ( HDF5_TEST_FHEAP_VFD "Execute tests with different VFDs" ON )
mark_as_advanced ( HDF5_TEST_FHEAP_VFD )
2017-01-11 07:09:53 +08:00
endif ( )
2015-09-01 04:08:56 +08:00
2019-04-12 02:27:12 +08:00
option ( HDF5_TEST_PASSTHROUGH_VOL "Execute tests with different passthrough VOL connectors" OFF )
mark_as_advanced ( HDF5_TEST_PASSTHROUGH_VOL )
if ( HDF5_TEST_PASSTHROUGH_VOL )
option ( HDF5_TEST_FHEAP_PASSTHROUGH_VOL "Execute fheap test with different passthrough VOL connectors" ON )
mark_as_advanced ( HDF5_TEST_FHEAP_PASSTHROUGH VOL )
2018-12-21 05:11:17 +08:00
endif ( )
2015-09-01 04:08:56 +08:00
option ( HDF_TEST_EXPRESS "Control testing framework (0-3)" "0" )
mark_as_advanced ( HDF_TEST_EXPRESS )
2014-03-19 00:21:46 +08:00
enable_testing ( )
2014-03-12 05:14:57 +08:00
include ( CTest )
2015-09-01 04:08:56 +08:00
2015-09-04 02:28:47 +08:00
include ( ${ HDF5_SOURCE_DIR } /CTestConfig.cmake )
configure_file ( ${ HDF_RESOURCES_DIR } /CTestCustom.cmake ${ HDF5_BINARY_DIR } /CTestCustom.ctest @ONLY )
2020-01-16 01:38:06 +08:00
option ( HDF5_TEST_SERIAL "Execute non-parallel tests" ON )
mark_as_advanced ( HDF5_TEST_SERIAL )
option ( HDF5_TEST_TOOLS "Execute tools tests" ON )
mark_as_advanced ( HDF5_TEST_TOOLS )
option ( HDF5_TEST_EXAMPLES "Execute tests on examples" ON )
mark_as_advanced ( HDF5_TEST_EXAMPLES )
option ( HDF5_TEST_SWMR "Execute SWMR tests" ON )
mark_as_advanced ( HDF5_TEST_SWMR )
option ( HDF5_TEST_PARALLEL "Execute parallel tests" ON )
mark_as_advanced ( HDF5_TEST_PARALLEL )
option ( HDF5_TEST_FORTRAN "Execute fortran tests" ON )
mark_as_advanced ( HDF5_TEST_FORTRAN )
option ( HDF5_TEST_CPP "Execute cpp tests" ON )
mark_as_advanced ( HDF5_TEST_CPP )
option ( HDF5_TEST_JAVA "Execute java tests" ON )
mark_as_advanced ( HDF5_TEST_JAVA )
2014-03-12 05:14:57 +08:00
if ( NOT HDF5_EXTERNALLY_CONFIGURED )
if ( EXISTS "${HDF5_SOURCE_DIR}/test" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/test" )
2018-01-31 02:21:01 +08:00
add_subdirectory ( test )
2017-01-11 07:09:53 +08:00
endif ( )
2014-03-12 05:14:57 +08:00
if ( H5_HAVE_PARALLEL )
if ( EXISTS "${HDF5_SOURCE_DIR}/testpar" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/testpar" )
2018-01-31 02:21:01 +08:00
add_subdirectory ( testpar )
2017-01-11 07:09:53 +08:00
endif ( )
endif ( )
endif ( )
endif ( )
2010-05-14 00:01:50 +08:00
2020-03-14 06:13:17 +08:00
#-----------------------------------------------------------------------------
# Option to build HDF5 Utilities
#-----------------------------------------------------------------------------
if ( EXISTS "${HDF5_SOURCE_DIR}/utils" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/utils" )
option ( HDF5_BUILD_UTILS "Build HDF5 Utils" ON )
if ( HDF5_BUILD_UTILS )
add_subdirectory ( utils )
endif ( )
endif ( )
2015-04-29 05:32:17 +08:00
#-----------------------------------------------------------------------------
# Option to build HDF5 Tools
#-----------------------------------------------------------------------------
if ( EXISTS "${HDF5_SOURCE_DIR}/tools" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/tools" )
option ( HDF5_BUILD_TOOLS "Build HDF5 Tools" ON )
if ( HDF5_BUILD_TOOLS )
2018-01-31 02:21:01 +08:00
add_subdirectory ( tools )
2017-01-11 07:09:53 +08:00
endif ( )
endif ( )
2015-04-29 05:32:17 +08:00
2015-03-18 02:59:19 +08:00
#-----------------------------------------------------------------------------
2020-12-17 01:59:51 +08:00
# Include filter plugins
#-----------------------------------------------------------------------------
include ( CMakePlugins.cmake )
if ( HDF5_PACKAGE_EXTLIBS AND NOT HDF5_NO_PACKAGES )
if ( HDF5_ENABLE_PLUGIN_SUPPORT AND PLUGIN_FOUND )
PACKAGE_PLUGIN_LIBRARY ( ${ HDF5_ALLOW_EXTERNAL_SUPPORT } )
# option (HDF5_TEST_PLUGIN "Execute plugin tests" ON)
# mark_as_advanced (HDF5_TEST_PLUGIN)
# TEST_PLUGIN_LIBRARY ()
endif ( )
endif ( )
#-----------------------------------------------------------------------------
2015-03-18 02:59:19 +08:00
# Option to build examples
#-----------------------------------------------------------------------------
if ( EXISTS "${HDF5_SOURCE_DIR}/examples" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/examples" )
option ( HDF5_BUILD_EXAMPLES "Build HDF5 Library Examples" ON )
if ( HDF5_BUILD_EXAMPLES )
2018-01-31 02:21:01 +08:00
add_subdirectory ( examples )
2017-01-11 07:09:53 +08:00
endif ( )
endif ( )
2015-03-18 02:59:19 +08:00
#-----------------------------------------------------------------------------
# Option to build High Level API's
#-----------------------------------------------------------------------------
if ( EXISTS "${HDF5_SOURCE_DIR}/hl" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/hl" )
option ( HDF5_BUILD_HL_LIB "Build HIGH Level HDF5 Library" ON )
if ( HDF5_BUILD_HL_LIB )
set ( H5_INCLUDE_HL 1 )
2018-01-31 02:21:01 +08:00
add_subdirectory ( hl )
2017-01-11 07:09:53 +08:00
endif ( )
endif ( )
2015-03-18 02:59:19 +08:00
2010-05-14 00:01:50 +08:00
#-----------------------------------------------------------------------------
# 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
#-----------------------------------------------------------------------------
2010-08-11 23:06:50 +08:00
# Set default name mangling : overridden by Fortran detection in fortran dir
2014-03-12 05:14:57 +08:00
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 )
2014-05-15 03:50:28 +08:00
include ( ${ HDF_RESOURCES_EXT_DIR } /HDFUseFortran.cmake )
2015-09-04 02:28:47 +08:00
message ( STATUS "Fortran compiler ID is ${CMAKE_Fortran_COMPILER_ID}" )
2020-04-06 02:38:04 +08:00
include ( ${ HDF_RESOURCES_DIR } /HDFFortranCompilerFlags.cmake )
2015-08-11 22:35:30 +08:00
include ( ${ HDF_RESOURCES_DIR } /HDF5UseFortran.cmake )
2017-11-02 23:25:22 +08:00
set ( LINK_Fortran_LIBS ${ LINK_LIBS } )
2015-09-04 02:28:47 +08:00
2019-02-07 01:02:16 +08:00
if ( NOT H5_FORTRAN_HAVE_ISO_C_BINDING )
2019-02-07 00:10:46 +08:00
message ( FATAL_ERROR " **** Fortran compiler lacks required Fortran 2003 features; unsupported Fortran 2003 compiler, disable HDF5_BUILD_FORTRAN **** " )
2017-02-18 02:43:47 +08:00
endif ( )
# Parallel IO usage requires MPI to be Linked and Included
if ( H5_HAVE_PARALLEL )
2017-11-02 23:25:22 +08:00
set ( LINK_Fortran_LIBS ${ LINK_Fortran_LIBS } ${ MPI_Fortran_LIBRARIES } )
2017-02-18 02:43:47 +08:00
if ( MPI_Fortran_LINK_FLAGS )
set ( CMAKE_Fortran_EXE_LINKER_FLAGS "${MPI_Fortran_LINK_FLAGS} ${CMAKE_EXE_LINKER_FLAGS}" )
endif ( )
2017-01-11 07:09:53 +08:00
endif ( )
2012-06-14 04:59:24 +08:00
2020-07-10 02:03:58 +08:00
#option (HDF5_INSTALL_MOD_FORTRAN "Copy FORTRAN mod files to include directory (NO SHARED STATIC)" "NO")
set ( HDF5_INSTALL_MOD_FORTRAN "SHARED" CACHE STRING "Copy FORTRAN mod files to include directory (NO SHARED STATIC)" )
set_property ( CACHE HDF5_INSTALL_MOD_FORTRAN PROPERTY STRINGS NO SHARED STATIC )
if ( NOT HDF5_INSTALL_MOD_FORTRAN MATCHES "NO" )
if ( NOT BUILD_SHARED_LIBS AND BUILD_STATIC_LIBS )
set ( HDF5_INSTALL_MOD_FORTRAN "STATIC" )
elseif ( BUILD_SHARED_LIBS AND NOT BUILD_STATIC_LIBS )
set ( HDF5_INSTALL_MOD_FORTRAN "SHARED" )
endif ( )
endif ( )
2018-01-31 02:21:01 +08:00
add_subdirectory ( fortran )
2014-03-12 05:14:57 +08:00
if ( HDF5_BUILD_HL_LIB )
if ( EXISTS "${HDF5_SOURCE_DIR}/hl/fortran" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/hl/fortran" )
2010-08-11 23:06:50 +08:00
#-- Build the High Level Fortran source codes
2018-01-31 02:21:01 +08:00
add_subdirectory ( hl/fortran )
2017-01-11 07:09:53 +08:00
endif ( )
endif ( )
endif ( )
endif ( )
2010-05-14 00:01:50 +08:00
#-----------------------------------------------------------------------------
# Option to build HDF5 C++ Library
#-----------------------------------------------------------------------------
2014-03-12 05:14:57 +08:00
if ( EXISTS "${HDF5_SOURCE_DIR}/c++" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/c++" )
2015-03-18 02:59:19 +08:00
option ( HDF5_BUILD_CPP_LIB "Build HDF5 C++ Library" ON )
2014-03-12 05:14:57 +08:00
if ( HDF5_BUILD_CPP_LIB )
2010-11-16 00:35:29 +08:00
# check for unsupported options
2014-03-12 05:14:57 +08:00
if ( HDF5_ENABLE_PARALLEL )
2015-08-27 00:48:42 +08:00
if ( NOT ALLOW_UNSUPPORTED )
2020-04-25 05:23:28 +08:00
message ( FATAL_ERROR " **** Parallel and C++ options are mutually exclusive, override with ALLOW_UNSUPPORTED option **** " )
2017-01-11 07:09:53 +08:00
else ( )
2015-08-27 00:48:42 +08:00
message ( STATUS " **** Allowing unsupported Parallel and C++ options **** " )
2017-01-11 07:09:53 +08:00
endif ( )
endif ( )
2018-04-25 06:22:55 +08:00
include ( ${ HDF_RESOURCES_EXT_DIR } /HDFUseCXX.cmake )
2020-04-06 02:38:04 +08:00
include ( ${ HDF_RESOURCES_DIR } /HDFCXXCompilerFlags.cmake )
2018-04-25 06:22:55 +08:00
2014-03-12 05:14:57 +08:00
if ( CMAKE_NO_STD_NAMESPACE )
set ( H5_NO_STD 1 )
2017-01-11 07:09:53 +08:00
endif ( )
2018-01-31 02:21:01 +08:00
add_subdirectory ( c++ )
2015-03-18 02:59:19 +08:00
if ( HDF5_BUILD_HL_LIB )
if ( EXISTS "${HDF5_SOURCE_DIR}/hl/c++" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/hl/c++" )
#-- Build the High Level Fortran source codes
2018-01-31 02:21:01 +08:00
add_subdirectory ( hl/c++ )
2017-01-11 07:09:53 +08:00
endif ( )
endif ( )
endif ( )
endif ( )
2010-05-14 00:01:50 +08:00
2014-07-25 01:07:08 +08:00
#-----------------------------------------------------------------------------
2015-05-15 00:51:20 +08:00
# Check if Fortran's default real is double precision. If it is and HL is
2014-07-25 01:07:08 +08:00
# being built then configure should fail due to bug HDFFV-889.
#-----------------------------------------------------------------------------
2016-02-29 10:43:00 +08:00
if ( HDF5_BUILD_FORTRAN AND HDF5_BUILD_HL_LIB )
2018-04-25 06:22:55 +08:00
if ( NOT H5_FORTRAN_DEFAULT_REAL_NOT_DOUBLE )
2016-02-29 10:43:00 +08:00
message ( FATAL_ERROR " **** Fortran high-level routines are not supported when the default REAL is DOUBLE PRECISION, use HDF5_BUILD_HL_LIB:BOOL=OFF **** " )
2017-01-11 07:09:53 +08:00
endif ( )
endif ( )
2016-02-29 10:43:00 +08:00
#-----------------------------------------------------------------------------
# Option to build HDF5 Java Library
#-----------------------------------------------------------------------------
if ( EXISTS "${HDF5_SOURCE_DIR}/java" AND IS_DIRECTORY "${HDF5_SOURCE_DIR}/java" )
2016-03-01 01:25:27 +08:00
option ( HDF5_BUILD_JAVA "Build Java HDF5 Library" OFF )
2016-02-29 10:43:00 +08:00
if ( HDF5_BUILD_JAVA )
2018-01-31 02:21:01 +08:00
add_subdirectory ( java )
2017-01-11 07:09:53 +08:00
endif ( )
endif ( )
2014-07-25 01:07:08 +08:00
2010-05-14 00:01:50 +08:00
#-----------------------------------------------------------------------------
# Generate the H5pubconf.h file containing user settings needed by compilation
#-----------------------------------------------------------------------------
2020-09-26 05:43:57 +08:00
configure_file ( ${ HDF_RESOURCES_DIR } /H5pubconf.h.in ${ HDF5_SRC_BINARY_DIR } /H5pubconf.h @ONLY )
2010-05-14 00:01:50 +08:00
2018-10-20 02:34:31 +08:00
#-----------------------------------------------------------------------------
# Options for use by cross compiling and toolchains
#-----------------------------------------------------------------------------
option ( HDF5_USE_PREGEN "Use pre-generated Files" OFF )
option ( HDF5_BATCH_H5DETECT "Use a batch command for running h5detect" OFF )
2014-03-12 05:14:57 +08:00
include ( CMakeInstallation.cmake )