summaryrefslogtreecommitdiffstats
path: root/config/cmake/HDF5Macros.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'config/cmake/HDF5Macros.cmake')
-rw-r--r--config/cmake/HDF5Macros.cmake121
1 files changed, 98 insertions, 23 deletions
diff --git a/config/cmake/HDF5Macros.cmake b/config/cmake/HDF5Macros.cmake
index 3e6ee18..54543e0 100644
--- a/config/cmake/HDF5Macros.cmake
+++ b/config/cmake/HDF5Macros.cmake
@@ -1,31 +1,106 @@
+#
+# Copyright by The HDF Group.
+# All rights reserved.
+#
+# This file is part of HDF5. The full HDF5 copyright notice, including
+# terms governing use, modification, and redistribution, is contained in
+# the COPYING file, which can be found at the root of the source code
+# distribution tree, or in https://www.hdfgroup.org/licenses.
+# If you do not have access to either file, you may request a copy from
+# help@hdfgroup.org.
+#
#-------------------------------------------------------------------------------
-MACRO (H5_SET_LIB_OPTIONS libtarget libname libtype)
- SET (LIB_OUT_NAME "${libname}")
- IF (${libtype} MATCHES "SHARED")
- IF (WIN32)
- SET (LIBHDF_VERSION ${HDF5_PACKAGE_VERSION_MAJOR})
- ELSE (WIN32)
- SET (LIBHDF_VERSION ${HDF5_PACKAGE_VERSION})
- ENDIF (WIN32)
- SET_TARGET_PROPERTIES (${libtarget} PROPERTIES VERSION ${LIBHDF_VERSION})
- IF (WIN32)
- SET (${LIB_OUT_NAME} "${LIB_OUT_NAME}-${HDF5_PACKAGE_SOVERSION}")
- ELSE (WIN32)
- SET_TARGET_PROPERTIES (${libtarget} PROPERTIES SOVERSION ${HDF5_PACKAGE_SOVERSION})
- ENDIF (WIN32)
- ENDIF (${libtype} MATCHES "SHARED")
+macro (H5_SET_LIB_OPTIONS libtarget libname libtype libpackage)
+ set (LIB_OUT_NAME "${libname}")
+ # SOVERSION passed in ARGN when shared
+ if (${libtype} MATCHES "SHARED")
+ set (PACKAGE_SOVERSION ${HDF5_${libpackage}_PACKAGE_SOVERSION})
+ set (PACKAGE_COMPATIBILITY ${H5_${libpackage}_SOVERS_INTERFACE}.0.0)
+ set (PACKAGE_CURRENT ${H5_${libpackage}_SOVERS_INTERFACE}.${H5_${libpackage}_SOVERS_MINOR}.0)
+ if (WIN32)
+ set (LIBHDF_VERSION ${HDF5_PACKAGE_VERSION_MAJOR})
+ else ()
+ set (LIBHDF_VERSION ${HDF5_${libpackage}_PACKAGE_SOVERSION_MAJOR})
+ endif ()
+ set_target_properties (${libtarget} PROPERTIES VERSION ${PACKAGE_SOVERSION})
+ if (WIN32)
+ set (${LIB_OUT_NAME} "${LIB_OUT_NAME}-${LIBHDF_VERSION}")
+ else ()
+ set_target_properties (${libtarget} PROPERTIES SOVERSION ${LIBHDF_VERSION})
+ endif ()
+ if (CMAKE_C_OSX_CURRENT_VERSION_FLAG)
+ set_property(TARGET ${libtarget} APPEND PROPERTY
+ LINK_FLAGS "${CMAKE_C_OSX_CURRENT_VERSION_FLAG}${PACKAGE_CURRENT} ${CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG}${PACKAGE_COMPATIBILITY}"
+ )
+ endif ()
+ endif ()
HDF_SET_LIB_OPTIONS (${libtarget} ${LIB_OUT_NAME} ${libtype})
#-- Apple Specific install_name for libraries
- IF (APPLE)
- OPTION (HDF5_BUILD_WITH_INSTALL_NAME "Build with library install_name set to the installation path" OFF)
- IF (HDF5_BUILD_WITH_INSTALL_NAME)
- SET_TARGET_PROPERTIES(${libtarget} PROPERTIES
- LINK_FLAGS "-current_version ${HDF5_PACKAGE_VERSION} -compatibility_version ${HDF5_PACKAGE_VERSION}"
+ if (APPLE)
+ option (HDF5_BUILD_WITH_INSTALL_NAME "Build with library install_name set to the installation path" OFF)
+ if (HDF5_BUILD_WITH_INSTALL_NAME)
+ set_target_properties (${libtarget} PROPERTIES
INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib"
BUILD_WITH_INSTALL_RPATH ${HDF5_BUILD_WITH_INSTALL_NAME}
)
- ENDIF (HDF5_BUILD_WITH_INSTALL_NAME)
- ENDIF (APPLE)
+ endif ()
+ if (HDF5_BUILD_FRAMEWORKS)
+ if (${libtype} MATCHES "SHARED")
+ # adapt target to build frameworks instead of dylibs
+ set_target_properties(${libtarget} PROPERTIES
+ XCODE_ATTRIBUTE_INSTALL_PATH "@rpath"
+ FRAMEWORK TRUE
+ FRAMEWORK_VERSION ${HDF5_PACKAGE_VERSION_MAJOR}
+ MACOSX_FRAMEWORK_IDENTIFIER org.hdfgroup.${libtarget}
+ MACOSX_FRAMEWORK_SHORT_VERSION_STRING ${HDF5_PACKAGE_VERSION_MAJOR}
+ MACOSX_FRAMEWORK_BUNDLE_VERSION ${HDF5_PACKAGE_VERSION_MAJOR})
+ endif ()
+ endif ()
+ endif ()
+endmacro ()
+
+# Initialize the list of VFDs to be used for testing and create a test folder for each VFD
+macro (H5_SET_VFD_LIST)
+ set (VFD_LIST
+ sec2
+ stdio
+ core
+ core_paged
+ split
+ multi
+ family
+ splitter
+ #log - log VFD currently has file space allocation bugs
+ )
+
+ if (H5_HAVE_DIRECT)
+ list (APPEND VFD_LIST direct)
+ endif ()
+ if (H5_HAVE_PARALLEL)
+ # MPI I/O VFD is currently incompatible with too many tests in the VFD test set
+ # list (APPEND VFD_LIST mpio)
+ endif ()
+ if (H5_HAVE_MIRROR_VFD)
+ list (APPEND VFD_LIST mirror)
+ endif ()
+ if (H5_HAVE_ROS3_VFD)
+ list (APPEND VFD_LIST ros3)
+ endif ()
+ if (H5_HAVE_LIBHDFS)
+ list (APPEND VFD_LIST hdfs)
+ endif ()
+ if (H5_HAVE_SUBFILING_VFD)
+ list (APPEND VFD_LIST subfiling)
+ endif ()
+ if (H5_HAVE_WINDOWS)
+ list (APPEND VFD_LIST windows)
+ endif ()
+endmacro ()
-ENDMACRO (H5_SET_LIB_OPTIONS)
+# Initialize the list of VFDs to be used for testing and create a test folder for each VFD
+macro (H5_CREATE_VFD_DIR)
+ foreach (vfdtest ${VFD_LIST})
+ file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/${vfdtest}")
+ endforeach ()
+endmacro ()