mirror of
https://github.com/HDFGroup/hdf5.git
synced 2026-09-25 04:09:44 +03:00
Fix various issues in package configuration file (#6617)
Fix find_dependency() calls so that PRIVATE-linked libraries are only propagated as transitive link requirements for static library targets Add missing find_dependency() calls for some PRIVATE-linked libraries Fix issue where parallel-enabled HDF5 can fail to locate MPI Fortran support, even when HDF5 Fortran support isn't requested Set HDF5_LIB_TYPE to only shared or static, depending on requested library type, rather than a list that could include both shared and static Fix HDF5_LIB_TYPE being undefined when components are specified, but shared/static isn't Reduce scope of modifications to CMAKE_MODULE_PATH so changes aren't propagated to consuming projects Add check for both shared and static libraries being requested and fail if so Remove enable_language() call in favor of checking enabled languages and failing if required language isn't enabled Add missing CMake variable for digitally signed plugins feature Fix CMake variable for HDF5_DIMENSION_SCALES_NEW_REF option
This commit is contained in:
+265
-177
@@ -16,11 +16,9 @@
|
|||||||
#-----------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------
|
||||||
@PACKAGE_INIT@
|
@PACKAGE_INIT@
|
||||||
|
|
||||||
include(CMakeFindDependencyMacro)
|
include (CMakeFindDependencyMacro)
|
||||||
|
|
||||||
set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_LIST_DIR}/Modules")
|
string (TOUPPER @HDF5_PACKAGE@ HDF5_PACKAGE_NAME)
|
||||||
|
|
||||||
string(TOUPPER @HDF5_PACKAGE@ HDF5_PACKAGE_NAME)
|
|
||||||
|
|
||||||
set (${HDF5_PACKAGE_NAME}_VALID_COMPONENTS
|
set (${HDF5_PACKAGE_NAME}_VALID_COMPONENTS
|
||||||
static
|
static
|
||||||
@@ -35,7 +33,15 @@ set (${HDF5_PACKAGE_NAME}_VALID_COMPONENTS
|
|||||||
Tools
|
Tools
|
||||||
)
|
)
|
||||||
|
|
||||||
set (${HDF5_PACKAGE_NAME}_BUILD_MODE @HDF_CFG_NAME@)
|
set (${HDF5_PACKAGE_NAME}_BUILD_MODE @HDF_CFG_NAME@)
|
||||||
|
|
||||||
|
#-----------------------------------------------------------------------------
|
||||||
|
# Version Strings
|
||||||
|
#-----------------------------------------------------------------------------
|
||||||
|
set (${HDF5_PACKAGE_NAME}_VERSION @HDF5_VERSION_STRING@)
|
||||||
|
set (${HDF5_PACKAGE_NAME}_VERSION_STRING @HDF5_VERSION_STRING@)
|
||||||
|
set (${HDF5_PACKAGE_NAME}_VERSION_MAJOR @HDF5_VERSION_MAJOR@)
|
||||||
|
set (${HDF5_PACKAGE_NAME}_VERSION_MINOR @HDF5_VERSION_MINOR@)
|
||||||
|
|
||||||
#-----------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------
|
||||||
# User Options
|
# User Options
|
||||||
@@ -46,29 +52,30 @@ set (${HDF5_PACKAGE_NAME}_PROVIDES_FORTRAN @HDF5_BUILD_FORTRAN@)
|
|||||||
set (${HDF5_PACKAGE_NAME}_PROVIDES_CPP_LIB @HDF5_BUILD_CPP_LIB@)
|
set (${HDF5_PACKAGE_NAME}_PROVIDES_CPP_LIB @HDF5_BUILD_CPP_LIB@)
|
||||||
set (${HDF5_PACKAGE_NAME}_PROVIDES_JAVA @HDF5_BUILD_JAVA@)
|
set (${HDF5_PACKAGE_NAME}_PROVIDES_JAVA @HDF5_BUILD_JAVA@)
|
||||||
set (${HDF5_PACKAGE_NAME}_PROVIDES_JNI @HDF5_ENABLE_JNI@)
|
set (${HDF5_PACKAGE_NAME}_PROVIDES_JNI @HDF5_ENABLE_JNI@)
|
||||||
set (${HDF5_PACKAGE_NAME}_PROVIDES_JAVA_COMPAT ON) # Always provide the Java compatibility API
|
set (${HDF5_PACKAGE_NAME}_PROVIDES_JAVA_COMPAT ON) # Always provide the Java compatibility API
|
||||||
set (${HDF5_PACKAGE_NAME}_INSTALL_MOD_FORTRAN "@HDF5_INSTALL_MOD_FORTRAN@")
|
set (${HDF5_PACKAGE_NAME}_INSTALL_MOD_FORTRAN "@HDF5_INSTALL_MOD_FORTRAN@")
|
||||||
#-----------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------
|
||||||
# Features:
|
# Features:
|
||||||
#-----------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------
|
||||||
set (${HDF5_PACKAGE_NAME}_PROVIDES_HL_LIB @HDF5_BUILD_HL_LIB@)
|
set (${HDF5_PACKAGE_NAME}_PROVIDES_SHARED_LIBS @H5_ENABLE_SHARED_LIB@)
|
||||||
set (${HDF5_PACKAGE_NAME}_PROVIDES_SHARED_LIBS @H5_ENABLE_SHARED_LIB@)
|
set (${HDF5_PACKAGE_NAME}_PROVIDES_STATIC_LIBS @H5_ENABLE_STATIC_LIB@)
|
||||||
set (${HDF5_PACKAGE_NAME}_PROVIDES_STATIC_LIBS @H5_ENABLE_STATIC_LIB@)
|
set (${HDF5_PACKAGE_NAME}_PROVIDES_HL_LIB @HDF5_BUILD_HL_LIB@)
|
||||||
set (${HDF5_PACKAGE_NAME}_PROVIDES_THREADS @HDF5_THREADS_ENABLED@)
|
set (${HDF5_PACKAGE_NAME}_PROVIDES_THREADS @HDF5_THREADS_ENABLED@)
|
||||||
set (${HDF5_PACKAGE_NAME}_PROVIDES_THREADSAFE @HDF5_ENABLE_THREADSAFE@)
|
set (${HDF5_PACKAGE_NAME}_PROVIDES_THREADSAFE @HDF5_ENABLE_THREADSAFE@)
|
||||||
set (${HDF5_PACKAGE_NAME}_PROVIDES_PARALLEL @HDF5_ENABLE_PARALLEL@)
|
set (${HDF5_PACKAGE_NAME}_PROVIDES_PARALLEL @HDF5_ENABLE_PARALLEL@)
|
||||||
set (${HDF5_PACKAGE_NAME}_DEFAULT_API_VERSION "@HDF5_DEFAULT_API_VERSION@")
|
set (${HDF5_PACKAGE_NAME}_DEFAULT_API_VERSION "@HDF5_DEFAULT_API_VERSION@")
|
||||||
set (${HDF5_PACKAGE_NAME}_PROVIDES_DEPRECATED_SYMBOLS @HDF5_ENABLE_DEPRECATED_SYMBOLS@)
|
set (${HDF5_PACKAGE_NAME}_PROVIDES_DEPRECATED_SYMBOLS @HDF5_ENABLE_DEPRECATED_SYMBOLS@)
|
||||||
set (${HDF5_PACKAGE_NAME}_PROVIDES_DIMENSION_SCALES_WITH_NEW_REF @DIMENSION_SCALES_WITH_NEW_REF@)
|
set (${HDF5_PACKAGE_NAME}_PROVIDES_DIMENSION_SCALES_WITH_NEW_REF @HDF5_DIMENSION_SCALES_NEW_REF@)
|
||||||
|
set (${HDF5_PACKAGE_NAME}_PROVIDES_PLUGIN_SIGNATURE_VERIFICATION @HDF5_REQUIRE_SIGNED_PLUGINS@)
|
||||||
#-----------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------
|
||||||
set (${HDF5_PACKAGE_NAME}_PROVIDES_TOOLS @HDF5_BUILD_TOOLS@)
|
set (${HDF5_PACKAGE_NAME}_PROVIDES_TOOLS @HDF5_BUILD_TOOLS@)
|
||||||
set (${HDF5_PACKAGE_NAME}_PROVIDES_STATIC_TOOLS @HDF5_BUILD_STATIC_TOOLS@)
|
set (${HDF5_PACKAGE_NAME}_PROVIDES_STATIC_TOOLS @HDF5_BUILD_STATIC_TOOLS@)
|
||||||
#-----------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------
|
||||||
set (${HDF5_PACKAGE_NAME}_PROVIDES_NONSTANDARD_FEATURE_FLOAT16 @HDF5_ENABLE_NONSTANDARD_FEATURE_FLOAT16@)
|
set (${HDF5_PACKAGE_NAME}_PROVIDES_NONSTANDARD_FEATURE_FLOAT16 @HDF5_ENABLE_NONSTANDARD_FEATURE_FLOAT16@)
|
||||||
#-----------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------
|
||||||
set (${HDF5_PACKAGE_NAME}_PROVIDES_ZLIB_SUPPORT @HDF5_ENABLE_ZLIB_SUPPORT@)
|
set (${HDF5_PACKAGE_NAME}_PROVIDES_ZLIB_SUPPORT @HDF5_ENABLE_ZLIB_SUPPORT@)
|
||||||
set (${HDF5_PACKAGE_NAME}_PROVIDES_SZIP_SUPPORT @HDF5_ENABLE_SZIP_SUPPORT@)
|
set (${HDF5_PACKAGE_NAME}_PROVIDES_SZIP_SUPPORT @HDF5_ENABLE_SZIP_SUPPORT@)
|
||||||
set (${HDF5_PACKAGE_NAME}_PROVIDES_SZIP_ENCODING @HDF5_ENABLE_SZIP_ENCODING@)
|
set (${HDF5_PACKAGE_NAME}_PROVIDES_SZIP_ENCODING @HDF5_ENABLE_SZIP_ENCODING@)
|
||||||
#-----------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------
|
||||||
set (${HDF5_PACKAGE_NAME}_PROVIDES_MAP_API @HDF5_ENABLE_MAP_API@)
|
set (${HDF5_PACKAGE_NAME}_PROVIDES_MAP_API @HDF5_ENABLE_MAP_API@)
|
||||||
set (${HDF5_PACKAGE_NAME}_PROVIDES_DIRECT_VFD @HDF5_ENABLE_DIRECT_VFD@)
|
set (${HDF5_PACKAGE_NAME}_PROVIDES_DIRECT_VFD @HDF5_ENABLE_DIRECT_VFD@)
|
||||||
@@ -78,70 +85,10 @@ set (${HDF5_PACKAGE_NAME}_PROVIDES_HDFS_VFD @HDF5_ENABLE_HDFS@)
|
|||||||
set (${HDF5_PACKAGE_NAME}_PROVIDES_SUBFILING_VFD @HDF5_ENABLE_SUBFILING_VFD@)
|
set (${HDF5_PACKAGE_NAME}_PROVIDES_SUBFILING_VFD @HDF5_ENABLE_SUBFILING_VFD@)
|
||||||
set (${HDF5_PACKAGE_NAME}_PROVIDES_PLUGIN_SUPPORT @HDF5_ENABLE_PLUGIN_SUPPORT@)
|
set (${HDF5_PACKAGE_NAME}_PROVIDES_PLUGIN_SUPPORT @HDF5_ENABLE_PLUGIN_SUPPORT@)
|
||||||
#-----------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------
|
||||||
set (${HDF5_PACKAGE_NAME}_PACKAGE_EXTLIBS @HDF5_PACKAGE_EXTLIBS@)
|
set (${HDF5_PACKAGE_NAME}_PACKAGE_EXTLIBS @HDF5_PACKAGE_EXTLIBS@)
|
||||||
set (${HDF5_PACKAGE_NAME}_EXPORT_LIBRARIES @HDF5_LIBRARIES_TO_EXPORT@)
|
set (${HDF5_PACKAGE_NAME}_EXPORT_LIBRARIES @HDF5_LIBRARIES_TO_EXPORT@)
|
||||||
set (${HDF5_PACKAGE_NAME}_ARCHITECTURE "@CMAKE_GENERATOR_ARCHITECTURE@")
|
set (${HDF5_PACKAGE_NAME}_ARCHITECTURE "@CMAKE_GENERATOR_ARCHITECTURE@")
|
||||||
set (${HDF5_PACKAGE_NAME}_TOOLSET "@CMAKE_GENERATOR_TOOLSET@")
|
set (${HDF5_PACKAGE_NAME}_TOOLSET "@CMAKE_GENERATOR_TOOLSET@")
|
||||||
|
|
||||||
#-----------------------------------------------------------------------------
|
|
||||||
# Dependencies
|
|
||||||
#-----------------------------------------------------------------------------
|
|
||||||
if (${HDF5_PACKAGE_NAME}_PROVIDES_PARALLEL)
|
|
||||||
set (${HDF5_PACKAGE_NAME}_MPI_C_INCLUDE_PATH "@MPI_C_INCLUDE_DIRS@")
|
|
||||||
set (${HDF5_PACKAGE_NAME}_MPI_C_LIBRARIES "@MPI_C_LIBRARIES@")
|
|
||||||
if (${HDF5_PACKAGE_NAME}_PROVIDES_FORTRAN)
|
|
||||||
set (${HDF5_PACKAGE_NAME}_MPI_Fortran_INCLUDE_PATH "@MPI_Fortran_INCLUDE_DIRS@")
|
|
||||||
set (${HDF5_PACKAGE_NAME}_MPI_Fortran_LIBRARIES "@MPI_Fortran_LIBRARIES@")
|
|
||||||
endif ()
|
|
||||||
set (${HDF5_PACKAGE_NAME}_PROVIDES_PARALLEL_FILTERED_WRITES @PARALLEL_FILTERED_WRITES@)
|
|
||||||
set (${HDF5_PACKAGE_NAME}_PROVIDES_LARGE_PARALLEL_IO @LARGE_PARALLEL_IO@)
|
|
||||||
|
|
||||||
enable_language(C) # for MPI::MPI_C
|
|
||||||
find_dependency(MPI QUIET REQUIRED)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if (${HDF5_PACKAGE_NAME}_PROVIDES_THREADS)
|
|
||||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
|
||||||
find_dependency(Threads QUIET REQUIRED)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if (${HDF5_PACKAGE_NAME}_PROVIDES_JAVA AND ${HDF5_PACKAGE_NAME}_PROVIDES_JNI)
|
|
||||||
set (${HDF5_PACKAGE_NAME}_JAVA_INCLUDE_DIRS
|
|
||||||
@PACKAGE_CURRENT_BUILD_DIR@/lib/@HDF5_JARHDF5_JAR_NAME@
|
|
||||||
@PACKAGE_CURRENT_BUILD_DIR@/lib/@HDF5_SLF4J_API_JAR_NAME@
|
|
||||||
@PACKAGE_CURRENT_BUILD_DIR@/lib/@HDF5_SLF4J_NOP_JAR_NAME@
|
|
||||||
)
|
|
||||||
else ()
|
|
||||||
set (${HDF5_PACKAGE_NAME}_JAVA_INCLUDE_DIRS
|
|
||||||
@PACKAGE_CURRENT_BUILD_DIR@/lib/@HDF5_JAVAHDF5_JAR_NAME@
|
|
||||||
@PACKAGE_CURRENT_BUILD_DIR@/lib/@HDF5_SLF4J_API_JAR_NAME@
|
|
||||||
@PACKAGE_CURRENT_BUILD_DIR@/lib/@HDF5_SLF4J_NOP_JAR_NAME@
|
|
||||||
)
|
|
||||||
if (${HDF5_PACKAGE_NAME}_PROVIDES_JAVA_COMPAT)
|
|
||||||
list (APPEND ${HDF5_PACKAGE_NAME}_JAVA_INCLUDE_DIRS
|
|
||||||
@PACKAGE_CURRENT_BUILD_DIR@/lib/@HDF5_JARHDF5_JAR_NAME@
|
|
||||||
)
|
|
||||||
endif ()
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if (${HDF5_PACKAGE_NAME}_PROVIDES_ZLIB_SUPPORT AND NOT @ZLIB_USE_EXTERNAL@)
|
|
||||||
if (NOT @HDF5_USE_ZLIB_NG@)
|
|
||||||
if (@HDF5_MODULE_MODE_ZLIB@)
|
|
||||||
# Expect that the default shared library is expected with FindZLIB.cmake
|
|
||||||
find_dependency (ZLIB MODULE)
|
|
||||||
else ()
|
|
||||||
find_dependency (ZLIB NAMES @Z_PACKAGE_NAME@ CONFIG OPTIONAL_COMPONENTS @ZLIB_SEARCH_TYPE@)
|
|
||||||
endif ()
|
|
||||||
else ()
|
|
||||||
find_dependency (@ZLIBNG_PACKAGE_NAME@ OPTIONAL_COMPONENTS @ZLIBNG_SEARCH_TYPE@)
|
|
||||||
endif ()
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
# If szip/libaec support was enabled and libaec was found on the system at build
|
|
||||||
# time, locate libaec to propagate the dependency
|
|
||||||
if (${HDF5_PACKAGE_NAME}_PROVIDES_SZIP_SUPPORT AND NOT @SZIP_USE_EXTERNAL@)
|
|
||||||
find_dependency (@LIBAEC_PACKAGE_NAME@ OPTIONAL_COMPONENTS @LIBAEC_SEARCH_TYPE@)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
#-----------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------
|
||||||
# Directories
|
# Directories
|
||||||
@@ -168,13 +115,189 @@ if (${HDF5_PACKAGE_NAME}_PROVIDES_TOOLS)
|
|||||||
set_and_check (${HDF5_PACKAGE_NAME}_TOOLS_DIR "@PACKAGE_CURRENT_BUILD_DIR@/bin")
|
set_and_check (${HDF5_PACKAGE_NAME}_TOOLS_DIR "@PACKAGE_CURRENT_BUILD_DIR@/bin")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
if (${HDF5_PACKAGE_NAME}_PROVIDES_JAVA AND ${HDF5_PACKAGE_NAME}_PROVIDES_JNI)
|
||||||
|
set (${HDF5_PACKAGE_NAME}_JAVA_INCLUDE_DIRS
|
||||||
|
@PACKAGE_CURRENT_BUILD_DIR@/lib/@HDF5_JARHDF5_JAR_NAME@
|
||||||
|
@PACKAGE_CURRENT_BUILD_DIR@/lib/@HDF5_SLF4J_API_JAR_NAME@
|
||||||
|
@PACKAGE_CURRENT_BUILD_DIR@/lib/@HDF5_SLF4J_NOP_JAR_NAME@
|
||||||
|
)
|
||||||
|
else ()
|
||||||
|
set (${HDF5_PACKAGE_NAME}_JAVA_INCLUDE_DIRS
|
||||||
|
@PACKAGE_CURRENT_BUILD_DIR@/lib/@HDF5_JAVAHDF5_JAR_NAME@
|
||||||
|
@PACKAGE_CURRENT_BUILD_DIR@/lib/@HDF5_SLF4J_API_JAR_NAME@
|
||||||
|
@PACKAGE_CURRENT_BUILD_DIR@/lib/@HDF5_SLF4J_NOP_JAR_NAME@
|
||||||
|
)
|
||||||
|
if (${HDF5_PACKAGE_NAME}_PROVIDES_JAVA_COMPAT)
|
||||||
|
list (APPEND ${HDF5_PACKAGE_NAME}_JAVA_INCLUDE_DIRS
|
||||||
|
@PACKAGE_CURRENT_BUILD_DIR@/lib/@HDF5_JARHDF5_JAR_NAME@
|
||||||
|
)
|
||||||
|
endif ()
|
||||||
|
endif ()
|
||||||
|
|
||||||
#-----------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------
|
||||||
# Version Strings
|
# Handle default components if none specified
|
||||||
#-----------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------
|
||||||
set (${HDF5_PACKAGE_NAME}_VERSION @HDF5_VERSION_STRING@)
|
if (NOT ${HDF5_PACKAGE_NAME}_FIND_COMPONENTS)
|
||||||
set (${HDF5_PACKAGE_NAME}_VERSION_STRING @HDF5_VERSION_STRING@)
|
set (${HDF5_PACKAGE_NAME}_FIND_COMPONENTS C HL)
|
||||||
set (${HDF5_PACKAGE_NAME}_VERSION_MAJOR @HDF5_VERSION_MAJOR@)
|
endif ()
|
||||||
set (${HDF5_PACKAGE_NAME}_VERSION_MINOR @HDF5_VERSION_MINOR@)
|
|
||||||
|
#-----------------------------------------------------------------------------
|
||||||
|
# Handle default shared/static libraries if none specified; prefer static
|
||||||
|
# libraries if available
|
||||||
|
#-----------------------------------------------------------------------------
|
||||||
|
if (NOT "shared" IN_LIST ${HDF5_PACKAGE_NAME}_FIND_COMPONENTS AND NOT "static" IN_LIST ${HDF5_PACKAGE_NAME}_FIND_COMPONENTS)
|
||||||
|
if (${HDF5_PACKAGE_NAME}_PROVIDES_STATIC_LIBS)
|
||||||
|
list (APPEND ${HDF5_PACKAGE_NAME}_FIND_COMPONENTS static)
|
||||||
|
set (${HDF5_PACKAGE_NAME}_FIND_REQUIRED_static_C true)
|
||||||
|
else ()
|
||||||
|
list (APPEND ${HDF5_PACKAGE_NAME}_FIND_COMPONENTS shared)
|
||||||
|
set (${HDF5_PACKAGE_NAME}_FIND_REQUIRED_shared_C true)
|
||||||
|
endif ()
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
#-----------------------------------------------------------------------------
|
||||||
|
# Resolve request for shared vs. static libraries before resolving
|
||||||
|
# dependencies
|
||||||
|
#-----------------------------------------------------------------------------
|
||||||
|
unset (${HDF5_PACKAGE_NAME}_LIB_TYPE)
|
||||||
|
list (REMOVE_DUPLICATES ${HDF5_PACKAGE_NAME}_FIND_COMPONENTS)
|
||||||
|
if ("shared" IN_LIST ${HDF5_PACKAGE_NAME}_FIND_COMPONENTS AND "static" IN_LIST ${HDF5_PACKAGE_NAME}_FIND_COMPONENTS)
|
||||||
|
set (${HDF5_PACKAGE_NAME}_FOUND FALSE)
|
||||||
|
set (${HDF5_PACKAGE_NAME}_NOT_FOUND_MESSAGE "The 'shared' and 'static' components are mutually exclusive; select only one.")
|
||||||
|
return ()
|
||||||
|
endif ()
|
||||||
|
if ("shared" IN_LIST ${HDF5_PACKAGE_NAME}_FIND_COMPONENTS)
|
||||||
|
if (NOT ${HDF5_PACKAGE_NAME}_PROVIDES_SHARED_LIBS)
|
||||||
|
set (${HDF5_PACKAGE_NAME}_FOUND FALSE)
|
||||||
|
set (${HDF5_PACKAGE_NAME}_NOT_FOUND_MESSAGE "Shared HDF5 libraries are not available.")
|
||||||
|
return ()
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
set (${HDF5_PACKAGE_NAME}_LIB_TYPE "shared")
|
||||||
|
if (${HDF5_PACKAGE_NAME}_PROVIDES_FORTRAN)
|
||||||
|
if (${HDF5_PACKAGE_NAME}_INSTALL_MOD_FORTRAN STREQUAL "SHARED")
|
||||||
|
set (${HDF5_PACKAGE_NAME}_INCLUDE_DIR_FORTRAN "@PACKAGE_INCLUDE_INSTALL_DIR@")
|
||||||
|
else ()
|
||||||
|
set (${HDF5_PACKAGE_NAME}_INCLUDE_DIR_FORTRAN "@PACKAGE_CURRENT_BUILD_DIR@/mod/shared")
|
||||||
|
endif ()
|
||||||
|
endif ()
|
||||||
|
elseif ("static" IN_LIST ${HDF5_PACKAGE_NAME}_FIND_COMPONENTS)
|
||||||
|
if (NOT ${HDF5_PACKAGE_NAME}_PROVIDES_STATIC_LIBS)
|
||||||
|
set (${HDF5_PACKAGE_NAME}_FOUND FALSE)
|
||||||
|
set (${HDF5_PACKAGE_NAME}_NOT_FOUND_MESSAGE "Static HDF5 libraries are not available.")
|
||||||
|
return ()
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
set (${HDF5_PACKAGE_NAME}_LIB_TYPE "static")
|
||||||
|
if (${HDF5_PACKAGE_NAME}_PROVIDES_FORTRAN)
|
||||||
|
if (${HDF5_PACKAGE_NAME}_INSTALL_MOD_FORTRAN STREQUAL "STATIC")
|
||||||
|
set (${HDF5_PACKAGE_NAME}_INCLUDE_DIR_FORTRAN "@PACKAGE_INCLUDE_INSTALL_DIR@")
|
||||||
|
else ()
|
||||||
|
set (${HDF5_PACKAGE_NAME}_INCLUDE_DIR_FORTRAN "@PACKAGE_CURRENT_BUILD_DIR@/mod/static")
|
||||||
|
endif ()
|
||||||
|
endif ()
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
#-----------------------------------------------------------------------------
|
||||||
|
# Resolve dependencies linked with PUBLIC scope
|
||||||
|
# - these should always be propagated with find_dependency() calls, unless
|
||||||
|
# they are only used by a component that wasn't requested
|
||||||
|
#-----------------------------------------------------------------------------
|
||||||
|
if (${HDF5_PACKAGE_NAME}_PROVIDES_PARALLEL)
|
||||||
|
unset (_hdf5_mpi_components)
|
||||||
|
|
||||||
|
get_property (_project_enabled_languages GLOBAL PROPERTY ENABLED_LANGUAGES)
|
||||||
|
if ("C" IN_LIST ${HDF5_PACKAGE_NAME}_FIND_COMPONENTS)
|
||||||
|
if (NOT "C" IN_LIST _project_enabled_languages)
|
||||||
|
set (${HDF5_PACKAGE_NAME}_FOUND FALSE)
|
||||||
|
set (${HDF5_PACKAGE_NAME}_NOT_FOUND_MESSAGE "C language was not enabled; enable C language with project() or enable_language() commands.")
|
||||||
|
unset (_project_enabled_languages)
|
||||||
|
return ()
|
||||||
|
endif ()
|
||||||
|
list (APPEND _hdf5_mpi_components "C")
|
||||||
|
endif ()
|
||||||
|
if ("Fortran" IN_LIST ${HDF5_PACKAGE_NAME}_FIND_COMPONENTS)
|
||||||
|
if (NOT "Fortran" IN_LIST _project_enabled_languages)
|
||||||
|
set (${HDF5_PACKAGE_NAME}_FOUND FALSE)
|
||||||
|
set (${HDF5_PACKAGE_NAME}_NOT_FOUND_MESSAGE "Fortran language was not enabled; enable Fortran language with project() or enable_language() commands.")
|
||||||
|
unset (_project_enabled_languages)
|
||||||
|
return ()
|
||||||
|
endif ()
|
||||||
|
list (APPEND _hdf5_mpi_components "Fortran")
|
||||||
|
endif ()
|
||||||
|
unset (_project_enabled_languages)
|
||||||
|
|
||||||
|
find_dependency (MPI QUIET REQUIRED COMPONENTS ${_hdf5_mpi_components})
|
||||||
|
|
||||||
|
if ("C" IN_LIST _hdf5_mpi_components)
|
||||||
|
set (${HDF5_PACKAGE_NAME}_MPI_C_INCLUDE_PATH "@MPI_C_INCLUDE_DIRS@")
|
||||||
|
set (${HDF5_PACKAGE_NAME}_MPI_C_LIBRARIES "@MPI_C_LIBRARIES@")
|
||||||
|
endif ()
|
||||||
|
if ("Fortran" IN_LIST _hdf5_mpi_components)
|
||||||
|
set (${HDF5_PACKAGE_NAME}_MPI_Fortran_INCLUDE_PATH "@MPI_Fortran_INCLUDE_DIRS@")
|
||||||
|
set (${HDF5_PACKAGE_NAME}_MPI_Fortran_LIBRARIES "@MPI_Fortran_LIBRARIES@")
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
set (${HDF5_PACKAGE_NAME}_PROVIDES_PARALLEL_FILTERED_WRITES @PARALLEL_FILTERED_WRITES@)
|
||||||
|
set (${HDF5_PACKAGE_NAME}_PROVIDES_LARGE_PARALLEL_IO @LARGE_PARALLEL_IO@)
|
||||||
|
|
||||||
|
unset (_hdf5_mpi_components)
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
#-----------------------------------------------------------------------------
|
||||||
|
# Resolve dependencies linked with PRIVATE scope
|
||||||
|
# - these should be propagated with find_dependency() calls when used by
|
||||||
|
# requested components that are static libraries
|
||||||
|
#-----------------------------------------------------------------------------
|
||||||
|
if (${HDF5_PACKAGE_NAME}_LIB_TYPE STREQUAL "static")
|
||||||
|
# Threads
|
||||||
|
if (${HDF5_PACKAGE_NAME}_PROVIDES_THREADS)
|
||||||
|
set (THREADS_PREFER_PTHREAD_FLAG ON)
|
||||||
|
find_dependency (Threads QUIET REQUIRED)
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
# zlib / zlib-ng
|
||||||
|
if (${HDF5_PACKAGE_NAME}_PROVIDES_ZLIB_SUPPORT AND NOT @ZLIB_USE_EXTERNAL@)
|
||||||
|
if (NOT @HDF5_USE_ZLIB_NG@)
|
||||||
|
if (@HDF5_MODULE_MODE_ZLIB@)
|
||||||
|
# Expect that the default shared library is expected with FindZLIB.cmake
|
||||||
|
find_dependency (ZLIB MODULE)
|
||||||
|
else ()
|
||||||
|
find_dependency (ZLIB NAMES @Z_PACKAGE_NAME@ CONFIG OPTIONAL_COMPONENTS @ZLIB_SEARCH_TYPE@)
|
||||||
|
endif ()
|
||||||
|
else ()
|
||||||
|
# Locate zlib-ng using installed FindZLIBNG.cmake module. If a CMake configuration
|
||||||
|
# file is available for zlib-ng, the module will prefer to use it.
|
||||||
|
set (_hdf5_cmake_module_path_saved ${CMAKE_MODULE_PATH})
|
||||||
|
set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_LIST_DIR}/Modules")
|
||||||
|
find_dependency (@ZLIBNG_PACKAGE_NAME@ OPTIONAL_COMPONENTS @ZLIBNG_SEARCH_TYPE@)
|
||||||
|
set (CMAKE_MODULE_PATH ${_hdf5_cmake_module_path_saved})
|
||||||
|
unset (_hdf5_cmake_module_path_saved)
|
||||||
|
endif ()
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
# libaec - if szip/libaec support was enabled and libaec was found on the system at build
|
||||||
|
# time, locate libaec to propagate the dependency
|
||||||
|
if (${HDF5_PACKAGE_NAME}_PROVIDES_SZIP_SUPPORT AND NOT @SZIP_USE_EXTERNAL@)
|
||||||
|
# Locate libaec using installed Findlibaec.cmake module. If a CMake configuration
|
||||||
|
# file is available for libaec, the module will prefer to use it.
|
||||||
|
set (_hdf5_cmake_module_path_saved ${CMAKE_MODULE_PATH})
|
||||||
|
set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_LIST_DIR}/Modules")
|
||||||
|
find_dependency (@LIBAEC_PACKAGE_NAME@ OPTIONAL_COMPONENTS @LIBAEC_SEARCH_TYPE@)
|
||||||
|
set (CMAKE_MODULE_PATH ${_hdf5_cmake_module_path_saved})
|
||||||
|
unset (_hdf5_cmake_module_path_saved)
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
# aws-c-s3 library for ROS3 VFD
|
||||||
|
if (${HDF5_PACKAGE_NAME}_PROVIDES_ROS3_VFD)
|
||||||
|
find_dependency (aws-c-s3)
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
# OpenSSL
|
||||||
|
if (${HDF5_PACKAGE_NAME}_PROVIDES_PLUGIN_SIGNATURE_VERIFICATION)
|
||||||
|
find_dependency (OpenSSL)
|
||||||
|
endif ()
|
||||||
|
endif ()
|
||||||
|
|
||||||
#-----------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------
|
||||||
# Don't include targets if this file is being picked up by another
|
# Don't include targets if this file is being picked up by another
|
||||||
@@ -199,7 +322,6 @@ if (NOT TARGET "@HDF5_PACKAGE@")
|
|||||||
endif ()
|
endif ()
|
||||||
include ("${_zlib_targets_file_name}" OPTIONAL RESULT_VARIABLE _zlib_loaded)
|
include ("${_zlib_targets_file_name}" OPTIONAL RESULT_VARIABLE _zlib_loaded)
|
||||||
unset (ZLIB_FIND_COMPONENTS)
|
unset (ZLIB_FIND_COMPONENTS)
|
||||||
unset (_zlib_targets_file_name)
|
|
||||||
if (NOT _zlib_loaded)
|
if (NOT _zlib_loaded)
|
||||||
if (@HDF5_USE_ZLIB_NG@)
|
if (@HDF5_USE_ZLIB_NG@)
|
||||||
set (_zlib_name "zlib-ng")
|
set (_zlib_name "zlib-ng")
|
||||||
@@ -208,10 +330,12 @@ if (NOT TARGET "@HDF5_PACKAGE@")
|
|||||||
endif ()
|
endif ()
|
||||||
set (${HDF5_PACKAGE_NAME}_FOUND FALSE)
|
set (${HDF5_PACKAGE_NAME}_FOUND FALSE)
|
||||||
set (${HDF5_PACKAGE_NAME}_NOT_FOUND_MESSAGE "Couldn't locate ${_zlib_name} targets file ${_zlib_targets_file_name}")
|
set (${HDF5_PACKAGE_NAME}_NOT_FOUND_MESSAGE "Couldn't locate ${_zlib_name} targets file ${_zlib_targets_file_name}")
|
||||||
|
unset (_zlib_targets_file_name)
|
||||||
unset (_zlib_name)
|
unset (_zlib_name)
|
||||||
unset (_zlib_loaded)
|
unset (_zlib_loaded)
|
||||||
return ()
|
return ()
|
||||||
endif ()
|
endif ()
|
||||||
|
unset (_zlib_targets_file_name)
|
||||||
unset (_zlib_loaded)
|
unset (_zlib_loaded)
|
||||||
endif ()
|
endif ()
|
||||||
# If szip/libaec support was enabled and libaec was built from an external source,
|
# If szip/libaec support was enabled and libaec was built from an external source,
|
||||||
@@ -226,9 +350,11 @@ if (NOT TARGET "@HDF5_PACKAGE@")
|
|||||||
if (NOT _libaec_loaded)
|
if (NOT _libaec_loaded)
|
||||||
set (${HDF5_PACKAGE_NAME}_FOUND FALSE)
|
set (${HDF5_PACKAGE_NAME}_FOUND FALSE)
|
||||||
set (${HDF5_PACKAGE_NAME}_NOT_FOUND_MESSAGE "Couldn't locate libaec targets file ${_libaec_targets_file_name}")
|
set (${HDF5_PACKAGE_NAME}_NOT_FOUND_MESSAGE "Couldn't locate libaec targets file ${_libaec_targets_file_name}")
|
||||||
|
unset (_libaec_targets_file_name)
|
||||||
unset (_libaec_loaded)
|
unset (_libaec_loaded)
|
||||||
return ()
|
return ()
|
||||||
endif ()
|
endif ()
|
||||||
|
unset (_libaec_targets_file_name)
|
||||||
unset (_libaec_loaded)
|
unset (_libaec_loaded)
|
||||||
endif ()
|
endif ()
|
||||||
include ("@PACKAGE_SHARE_INSTALL_DIR@/@HDF5_PACKAGE@@HDF_PACKAGE_EXT@-targets.cmake")
|
include ("@PACKAGE_SHARE_INSTALL_DIR@/@HDF5_PACKAGE@@HDF_PACKAGE_EXT@-targets.cmake")
|
||||||
@@ -250,102 +376,64 @@ if (NOT TARGET "@HDF5_PACKAGE@")
|
|||||||
endif ()
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# Handle default component(static) :
|
#-----------------------------------------------------------------------------
|
||||||
if (NOT ${HDF5_PACKAGE_NAME}_FIND_COMPONENTS)
|
# Handle all other requested components
|
||||||
if (${HDF5_PACKAGE_NAME}_PROVIDES_STATIC_LIBS)
|
#-----------------------------------------------------------------------------
|
||||||
set (${HDF5_PACKAGE_NAME}_LIB_TYPE)
|
set (libtype ${${HDF5_PACKAGE_NAME}_LIB_TYPE})
|
||||||
set (${HDF5_PACKAGE_NAME}_FIND_COMPONENTS C HL static)
|
|
||||||
set (${HDF5_PACKAGE_NAME}_FIND_REQUIRED_static_C true)
|
|
||||||
else ()
|
|
||||||
set (${HDF5_PACKAGE_NAME}_LIB_TYPE)
|
|
||||||
set (${HDF5_PACKAGE_NAME}_FIND_COMPONENTS C HL shared)
|
|
||||||
set (${HDF5_PACKAGE_NAME}_FIND_REQUIRED_shared_C true)
|
|
||||||
endif ()
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
# Handle requested components:
|
|
||||||
list (REMOVE_DUPLICATES ${HDF5_PACKAGE_NAME}_FIND_COMPONENTS)
|
|
||||||
foreach (comp IN LISTS ${HDF5_PACKAGE_NAME}_FIND_COMPONENTS)
|
foreach (comp IN LISTS ${HDF5_PACKAGE_NAME}_FIND_COMPONENTS)
|
||||||
if (comp STREQUAL "shared")
|
set (hdf5_comp2)
|
||||||
list (REMOVE_ITEM ${HDF5_PACKAGE_NAME}_FIND_COMPONENTS ${comp})
|
if (comp STREQUAL "C")
|
||||||
set (${HDF5_PACKAGE_NAME}_LIB_TYPE ${${HDF5_PACKAGE_NAME}_LIB_TYPE} ${comp})
|
set (hdf5_comp "hdf5")
|
||||||
|
elseif (comp STREQUAL "CXX")
|
||||||
if (${HDF5_PACKAGE_NAME}_PROVIDES_FORTRAN)
|
set (hdf5_comp "hdf5_cpp")
|
||||||
if (${HDF5_PACKAGE_NAME}_INSTALL_MOD_FORTRAN STREQUAL "SHARED")
|
elseif (comp STREQUAL "HL")
|
||||||
set (${HDF5_PACKAGE_NAME}_INCLUDE_DIR_FORTRAN "@PACKAGE_INCLUDE_INSTALL_DIR@")
|
set (hdf5_comp "hdf5_hl")
|
||||||
else ()
|
elseif (comp STREQUAL "CXX_HL")
|
||||||
set (${HDF5_PACKAGE_NAME}_INCLUDE_DIR_FORTRAN "@PACKAGE_CURRENT_BUILD_DIR@/mod/shared")
|
set (hdf5_comp "hdf5_hl_cpp")
|
||||||
endif ()
|
elseif (comp STREQUAL "Java")
|
||||||
endif ()
|
set (hdf5_comp "hdf5_java")
|
||||||
elseif (comp STREQUAL "static")
|
elseif (comp STREQUAL "Tools")
|
||||||
list (REMOVE_ITEM ${HDF5_PACKAGE_NAME}_FIND_COMPONENTS ${comp})
|
set (hdf5_comp "hdf5_tools")
|
||||||
set (${HDF5_PACKAGE_NAME}_LIB_TYPE ${${HDF5_PACKAGE_NAME}_LIB_TYPE} ${comp})
|
elseif (comp STREQUAL "Fortran")
|
||||||
|
set (hdf5_comp2 "hdf5_f90cstub")
|
||||||
if (${HDF5_PACKAGE_NAME}_PROVIDES_FORTRAN)
|
set (hdf5_comp "hdf5_fortran")
|
||||||
if (${HDF5_PACKAGE_NAME}_INSTALL_MOD_FORTRAN STREQUAL "STATIC")
|
elseif (comp STREQUAL "Fortran_HL")
|
||||||
set (${HDF5_PACKAGE_NAME}_INCLUDE_DIR_FORTRAN "@PACKAGE_INCLUDE_INSTALL_DIR@")
|
set (hdf5_comp2 "hdf5_hl_f90cstub")
|
||||||
else ()
|
set (hdf5_comp "hdf5_hl_fortran")
|
||||||
set (${HDF5_PACKAGE_NAME}_INCLUDE_DIR_FORTRAN "@PACKAGE_CURRENT_BUILD_DIR@/mod/static")
|
|
||||||
endif ()
|
|
||||||
endif ()
|
|
||||||
endif ()
|
endif ()
|
||||||
endforeach ()
|
if (comp STREQUAL "Java")
|
||||||
foreach (libtype IN LISTS ${HDF5_PACKAGE_NAME}_LIB_TYPE)
|
list (FIND ${HDF5_PACKAGE_NAME}_EXPORT_LIBRARIES "${hdf5_comp}" HAVE_COMP)
|
||||||
foreach (comp IN LISTS ${HDF5_PACKAGE_NAME}_FIND_COMPONENTS)
|
else ()
|
||||||
set (hdf5_comp2)
|
list (FIND ${HDF5_PACKAGE_NAME}_EXPORT_LIBRARIES "${hdf5_comp}-${libtype}" HAVE_COMP)
|
||||||
if (comp STREQUAL "C")
|
endif ()
|
||||||
set (hdf5_comp "hdf5")
|
if (${HAVE_COMP} LESS 0)
|
||||||
elseif (comp STREQUAL "CXX")
|
|
||||||
set (hdf5_comp "hdf5_cpp")
|
|
||||||
elseif (comp STREQUAL "HL")
|
|
||||||
set (hdf5_comp "hdf5_hl")
|
|
||||||
elseif (comp STREQUAL "CXX_HL")
|
|
||||||
set (hdf5_comp "hdf5_hl_cpp")
|
|
||||||
elseif (comp STREQUAL "Java")
|
|
||||||
set (hdf5_comp "hdf5_java")
|
|
||||||
elseif (comp STREQUAL "Tools")
|
|
||||||
set (hdf5_comp "hdf5_tools")
|
|
||||||
elseif (comp STREQUAL "Fortran")
|
|
||||||
set (hdf5_comp2 "hdf5_f90cstub")
|
|
||||||
set (hdf5_comp "hdf5_fortran")
|
|
||||||
elseif (comp STREQUAL "Fortran_HL")
|
|
||||||
set (hdf5_comp2 "hdf5_hl_f90cstub")
|
|
||||||
set (hdf5_comp "hdf5_hl_fortran")
|
|
||||||
endif ()
|
|
||||||
if (comp STREQUAL "Java")
|
if (comp STREQUAL "Java")
|
||||||
list (FIND ${HDF5_PACKAGE_NAME}_EXPORT_LIBRARIES "${hdf5_comp}" HAVE_COMP)
|
set (${HDF5_PACKAGE_NAME}_${comp}_FOUND 0)
|
||||||
else ()
|
else ()
|
||||||
list (FIND ${HDF5_PACKAGE_NAME}_EXPORT_LIBRARIES "${hdf5_comp}-${libtype}" HAVE_COMP)
|
set (${HDF5_PACKAGE_NAME}_${libtype}_${comp}_FOUND 0)
|
||||||
endif ()
|
endif ()
|
||||||
if (${HAVE_COMP} LESS 0)
|
else ()
|
||||||
if (comp STREQUAL "Java")
|
if (hdf5_comp2)
|
||||||
set (${HDF5_PACKAGE_NAME}_${comp}_FOUND 0)
|
list (FIND ${HDF5_PACKAGE_NAME}_EXPORT_LIBRARIES "${hdf5_comp2}-${libtype}" HAVE_COMP2)
|
||||||
else ()
|
if (${HAVE_COMP2} LESS 0)
|
||||||
set (${HDF5_PACKAGE_NAME}_${libtype}_${comp}_FOUND 0)
|
set (${HDF5_PACKAGE_NAME}_${libtype}_${comp}_FOUND 0)
|
||||||
endif ()
|
|
||||||
else ()
|
|
||||||
if (hdf5_comp2)
|
|
||||||
list (FIND ${HDF5_PACKAGE_NAME}_EXPORT_LIBRARIES "${hdf5_comp2}-${libtype}" HAVE_COMP2)
|
|
||||||
if (${HAVE_COMP2} LESS 0)
|
|
||||||
set (${HDF5_PACKAGE_NAME}_${libtype}_${comp}_FOUND 0)
|
|
||||||
else ()
|
|
||||||
set (${HDF5_PACKAGE_NAME}_${libtype}_${comp}_FOUND 1)
|
|
||||||
string(TOUPPER ${HDF5_PACKAGE_NAME}_${comp}_${libtype}_LIBRARY COMP_LIBRARY)
|
|
||||||
set (${COMP_LIBRARY} ${${COMP_LIBRARY}} @HDF_PACKAGE_NAMESPACE@${hdf5_comp2}-${libtype} @HDF_PACKAGE_NAMESPACE@${hdf5_comp}-${libtype})
|
|
||||||
endif ()
|
|
||||||
elseif (comp STREQUAL "Java")
|
|
||||||
set (${HDF5_PACKAGE_NAME}_${comp}_FOUND 1)
|
|
||||||
string(TOUPPER ${HDF5_PACKAGE_NAME}_${comp}_LIBRARY COMP_LIBRARY)
|
|
||||||
set (${COMP_LIBRARY} ${${COMP_LIBRARY}} @HDF_PACKAGE_NAMESPACE@${hdf5_comp})
|
|
||||||
else ()
|
else ()
|
||||||
set (${HDF5_PACKAGE_NAME}_${libtype}_${comp}_FOUND 1)
|
set (${HDF5_PACKAGE_NAME}_${libtype}_${comp}_FOUND 1)
|
||||||
string(TOUPPER ${HDF5_PACKAGE_NAME}_${comp}_${libtype}_LIBRARY COMP_LIBRARY)
|
string(TOUPPER ${HDF5_PACKAGE_NAME}_${comp}_${libtype}_LIBRARY COMP_LIBRARY)
|
||||||
set (${COMP_LIBRARY} ${${COMP_LIBRARY}} @HDF_PACKAGE_NAMESPACE@${hdf5_comp}-${libtype})
|
set (${COMP_LIBRARY} ${${COMP_LIBRARY}} @HDF_PACKAGE_NAMESPACE@${hdf5_comp2}-${libtype} @HDF_PACKAGE_NAMESPACE@${hdf5_comp}-${libtype})
|
||||||
endif ()
|
endif ()
|
||||||
|
elseif (comp STREQUAL "Java")
|
||||||
|
set (${HDF5_PACKAGE_NAME}_${comp}_FOUND 1)
|
||||||
|
string(TOUPPER ${HDF5_PACKAGE_NAME}_${comp}_LIBRARY COMP_LIBRARY)
|
||||||
|
set (${COMP_LIBRARY} ${${COMP_LIBRARY}} @HDF_PACKAGE_NAMESPACE@${hdf5_comp})
|
||||||
|
else ()
|
||||||
|
set (${HDF5_PACKAGE_NAME}_${libtype}_${comp}_FOUND 1)
|
||||||
|
string(TOUPPER ${HDF5_PACKAGE_NAME}_${comp}_${libtype}_LIBRARY COMP_LIBRARY)
|
||||||
|
set (${COMP_LIBRARY} ${${COMP_LIBRARY}} @HDF_PACKAGE_NAMESPACE@${hdf5_comp}-${libtype})
|
||||||
endif ()
|
endif ()
|
||||||
endforeach ()
|
endif ()
|
||||||
endforeach ()
|
endforeach ()
|
||||||
|
unset (libtype)
|
||||||
|
|
||||||
foreach (libtype IN LISTS ${HDF5_PACKAGE_NAME}_LIB_TYPE)
|
# Should be last
|
||||||
check_required_components(${HDF5_PACKAGE_NAME}_${libtype})
|
check_required_components (${HDF5_PACKAGE_NAME}_${${HDF5_PACKAGE_NAME}_LIB_TYPE})
|
||||||
endforeach ()
|
|
||||||
|
|||||||
@@ -43,6 +43,14 @@ We would like to thank the many HDF5 community members who contributed to this r
|
|||||||
|
|
||||||
# ⚠️ Breaking Changes
|
# ⚠️ Breaking Changes
|
||||||
|
|
||||||
|
- When a `find_package (HDF5 ...)` call within a CMake project uses HDF5's `hdf5-config.cmake`
|
||||||
|
configuration file (a Config mode search), requesting both "shared" and "static" components
|
||||||
|
simultaneously will now fail. Only one of the "shared" or "static" components should be requested
|
||||||
|
when locating HDF5. Consequently, the `HDF5_LIB_TYPE` CMake variable set by the configuration file
|
||||||
|
will only be set to one of "shared" or "static", depending on the requested library type, rather
|
||||||
|
than potentially being a list of both. For the time being, both sets of HDF5's "-shared" and
|
||||||
|
"-static" CMake targets will continue to be available after the `find_package (HDF5 ...)` call,
|
||||||
|
regardless of which library type was requested.
|
||||||
|
|
||||||
# 🪦 Deprecations
|
# 🪦 Deprecations
|
||||||
|
|
||||||
@@ -51,6 +59,24 @@ We would like to thank the many HDF5 community members who contributed to this r
|
|||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
|
|
||||||
|
### Various improvements in installed CMake package configuration file
|
||||||
|
|
||||||
|
- Fixed `find_dependency()` calls so that `PRIVATE`-linked libraries are only propagated as
|
||||||
|
transitive link requirements for static library targets (Fixes GitHub issue #6347)
|
||||||
|
- Added missing `find_dependency()` calls for some `PRIVATE`-linked libraries
|
||||||
|
- Fixed an issue where `find_package()` for parallel-enabled HDF5 installations may fail when
|
||||||
|
trying to locate MPI Fortran support, even if HDF5 Fortran support isn't requested (Fixes
|
||||||
|
GitHub issue #6366)
|
||||||
|
- Fixed an issue where the `HDF5_LIB_TYPE` CMake variable would be undefined if some HDF5
|
||||||
|
components were requested in a `find_package()` call, but "shared" or "static" was not requested
|
||||||
|
- Removed a call to `enable_language()` in favor of checking the currently enabled CMake languages
|
||||||
|
and failing if a required language isn't enabled
|
||||||
|
- Added a CMake variable for the enabled/disabled status of the "digitally signed plugins"
|
||||||
|
feature
|
||||||
|
- Fixed the CMake variable for the enabled/disabled status of the `HDF5_DIMENSION_SCALES_NEW_REF`
|
||||||
|
option
|
||||||
|
- Reduced the scope of some temporary variables and modifications so they don't propagate to
|
||||||
|
consuming CMake projects
|
||||||
|
|
||||||
## Library
|
## Library
|
||||||
|
|
||||||
|
|||||||
@@ -6,11 +6,49 @@ This document is a catch-all file with general notes for HDF5 library maintainer
|
|||||||
|
|
||||||
## Table of Contents
|
## Table of Contents
|
||||||
|
|
||||||
|
* [Updating the installed `hdf5-config.cmake` CMake configuration file](#updating-the-installed-hdf5-config-cmake-cmake-configuration-file)
|
||||||
|
* [CMake variables for new features](#cmake-variables-for-new-features)
|
||||||
|
* [PRIVATE dependencies](#private-dependencies)
|
||||||
* [Maintaining external libraries built with CMake FetchContent](#maintaining-external-libraries-built-with-cmake-fetchcontent)
|
* [Maintaining external libraries built with CMake FetchContent](#maintaining-external-libraries-built-with-cmake-fetchcontent)
|
||||||
* [Updating libraries to new versions](#updating-libraries-to-new-versions)
|
* [Updating libraries to new versions](#updating-libraries-to-new-versions)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Updating the installed `hdf5-config.cmake` CMake configuration file
|
||||||
|
|
||||||
|
### CMake variables for new features
|
||||||
|
|
||||||
|
When a new feature is added to the library, developers should consider whether the ability to check
|
||||||
|
for the existence of that feature should be programmatically available in the CMake logic for a
|
||||||
|
project which uses HDF5. If so, an entry should be added under the "User Options" section such that
|
||||||
|
the enabled/disabled status of that feature will be reflected in the installed file.
|
||||||
|
|
||||||
|
### PRIVATE dependencies
|
||||||
|
|
||||||
|
When `target_link_libraries()` is used to add linking against a library with `PRIVATE` scope for a
|
||||||
|
particular CMake target exposed by the installed `hdf5-config.cmake`, that dependency may need to be
|
||||||
|
propagated as a transitive link requirement with a call to `find_dependency()` if the target is a
|
||||||
|
static library. Otherwise, a CMake project trying to use that target may fail during configuration
|
||||||
|
with an error similar to:
|
||||||
|
|
||||||
|
```CMake
|
||||||
|
The link interface of target "hdf5-static" contains:
|
||||||
|
|
||||||
|
ZLIB::ZLIB
|
||||||
|
|
||||||
|
but the target was not found. Possible reasons include:
|
||||||
|
|
||||||
|
* There is a typo in the target name.
|
||||||
|
* A find_package call is missing for an IMPORTED target.
|
||||||
|
* An ALIAS target is missing.
|
||||||
|
```
|
||||||
|
|
||||||
|
Failing to propagate these dependencies creates a situation where the CMake project using HDF5 has
|
||||||
|
to know ahead of time which `find_package()` calls it needs to include in its own logic to satisfy the
|
||||||
|
requirements of HDF5's CMake targets. For testing, developers should use a standalone CMake project
|
||||||
|
which tries linking against one of an HDF5 installation's static library CMake targets that links
|
||||||
|
against the `PRIVATE` library.
|
||||||
|
|
||||||
## Maintaining external libraries built with CMake FetchContent
|
## Maintaining external libraries built with CMake FetchContent
|
||||||
|
|
||||||
### Updating libraries to new versions
|
### Updating libraries to new versions
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ Features:
|
|||||||
Parallel Filtered Dataset Writes: @PARALLEL_FILTERED_WRITES@
|
Parallel Filtered Dataset Writes: @PARALLEL_FILTERED_WRITES@
|
||||||
Large Parallel I/O: @LARGE_PARALLEL_IO@
|
Large Parallel I/O: @LARGE_PARALLEL_IO@
|
||||||
High-level library: @HDF5_BUILD_HL_LIB@
|
High-level library: @HDF5_BUILD_HL_LIB@
|
||||||
Dimension scales w/ new references: @DIMENSION_SCALES_WITH_NEW_REF@
|
Dimension scales w/ new references: @HDF5_DIMENSION_SCALES_NEW_REF@
|
||||||
Build HDF5 Tests: @BUILD_TESTING@
|
Build HDF5 Tests: @BUILD_TESTING@
|
||||||
Build HDF5 Tools: @HDF5_BUILD_TOOLS@
|
Build HDF5 Tools: @HDF5_BUILD_TOOLS@
|
||||||
Threads: @HDF5_THREADS_ENABLED@
|
Threads: @HDF5_THREADS_ENABLED@
|
||||||
|
|||||||
Reference in New Issue
Block a user