Fix CMake builds when Subfiling VFD isn't enabled (#3250)

* Fix CMake builds when Subfiling VFD isn't enabled

* Add Subfiling VFD entry to hdf5-config.cmake.in
This commit is contained in:
jhendersonHDF 2023-07-17 11:47:06 -05:00 committed by GitHub
parent 426a7f82f6
commit 919ce7adc2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 42 additions and 34 deletions

View File

@ -45,6 +45,7 @@ set (${HDF5_PACKAGE_NAME}_ENABLE_Z_LIB_SUPPORT @HDF5_ENABLE_Z_LIB_SUPPORT@)
set (${HDF5_PACKAGE_NAME}_ENABLE_SZIP_SUPPORT @HDF5_ENABLE_SZIP_SUPPORT@)
set (${HDF5_PACKAGE_NAME}_ENABLE_SZIP_ENCODING @HDF5_ENABLE_SZIP_ENCODING@)
set (${HDF5_PACKAGE_NAME}_ENABLE_ROS3_VFD @HDF5_ENABLE_ROS3_VFD@)
set (${HDF5_PACKAGE_NAME}_ENABLE_SUBFILING_VFD @HDF5_ENABLE_SUBFILING_VFD@)
set (${HDF5_PACKAGE_NAME}_BUILD_SHARED_LIBS @H5_ENABLE_SHARED_LIB@)
set (${HDF5_PACKAGE_NAME}_BUILD_STATIC_LIBS @H5_ENABLE_STATIC_LIB@)
set (${HDF5_PACKAGE_NAME}_PACKAGE_EXTLIBS @HDF5_PACKAGE_EXTLIBS@)

View File

@ -280,10 +280,10 @@ set (H5FD_HDRS
${HDF5_SRC_DIR}/H5FDwindows.h
)
# Append Subfiling VFD and Mercury sources to H5FD interface if Subfiling VFD is built
if (HDF5_ENABLE_SUBFILING_VFD)
add_subdirectory (${H5FD_SUBFILING_DIR})
endif()
# Append Subfiling VFD and Mercury sources to H5FD
# interface if Subfiling VFD is built. Append Subfiling
# VFD public headers to H5FD_HDRS regardless.
add_subdirectory (${H5FD_SUBFILING_DIR})
IDE_GENERATED_PROPERTIES ("H5FD" "${H5FD_HDRS}" "${H5FD_SOURCES}" )

View File

@ -2,49 +2,56 @@ cmake_minimum_required (VERSION 3.18)
project (HDF5_H5FD_SUBFILING C)
# Sanity checking
if (NOT H5FD_SOURCES)
message (FATAL_ERROR "internal configure error - H5FD_SOURCES not set")
endif ()
if (NOT H5FD_HDRS)
message (FATAL_ERROR "internal configure error - H5FD_HDRS not set")
endif ()
if (NOT H5FD_SUBFILING_DIR)
message (FATAL_ERROR "internal configure error - H5FD_SUBFILING_DIR not set")
endif ()
if (NOT H5FD_SUBFILING_MERCURY_DIR)
message (FATAL_ERROR "internal configure error - H5FD_SUBFILING_MERCURY_DIR not set")
if (HDF5_ENABLE_SUBFILING_VFD)
# Sanity checking
if (NOT H5FD_SOURCES)
message (FATAL_ERROR "internal configure error - H5FD_SOURCES not set")
endif ()
if (NOT H5FD_SUBFILING_MERCURY_DIR)
message (FATAL_ERROR "internal configure error - H5FD_SUBFILING_MERCURY_DIR not set")
endif ()
# Add mercury util sources to Subfiling VFD sources
set (MERCURY_UTIL_SOURCES
${H5FD_SUBFILING_MERCURY_DIR}/mercury_thread.c
${H5FD_SUBFILING_MERCURY_DIR}/mercury_thread_condition.c
${H5FD_SUBFILING_MERCURY_DIR}/mercury_thread_pool.c
${H5FD_SUBFILING_MERCURY_DIR}/mercury_thread_mutex.c
)
set (HDF5_H5FD_SUBFILING_SOURCES
${H5FD_SUBFILING_DIR}/H5FDioc.c
${H5FD_SUBFILING_DIR}/H5FDioc_int.c
${H5FD_SUBFILING_DIR}/H5FDioc_threads.c
${H5FD_SUBFILING_DIR}/H5FDsubfiling.c
${H5FD_SUBFILING_DIR}/H5FDsubfile_int.c
${H5FD_SUBFILING_DIR}/H5subfiling_common.c
${MERCURY_UTIL_SOURCES}
)
# Add Subfiling VFD sources to HDF5 library's H5FD sources
set (H5FD_SOURCES
${H5FD_SOURCES}
${HDF5_H5FD_SUBFILING_SOURCES}
PARENT_SCOPE
)
endif ()
# Add mercury util sources to Subfiling VFD sources
set (MERCURY_UTIL_SOURCES
${H5FD_SUBFILING_MERCURY_DIR}/mercury_thread.c
${H5FD_SUBFILING_MERCURY_DIR}/mercury_thread_condition.c
${H5FD_SUBFILING_MERCURY_DIR}/mercury_thread_pool.c
${H5FD_SUBFILING_MERCURY_DIR}/mercury_thread_mutex.c
)
set (HDF5_H5FD_SUBFILING_SOURCES
${H5FD_SUBFILING_DIR}/H5FDioc.c
${H5FD_SUBFILING_DIR}/H5FDioc_int.c
${H5FD_SUBFILING_DIR}/H5FDioc_threads.c
${H5FD_SUBFILING_DIR}/H5FDsubfiling.c
${H5FD_SUBFILING_DIR}/H5FDsubfile_int.c
${H5FD_SUBFILING_DIR}/H5subfiling_common.c
${MERCURY_UTIL_SOURCES}
)
# Add Subfiling VFD public headers to HDF5 library's
# public H5FD headers, even if the Subfiling VFD isn't
# enabled and built
set (HDF5_H5FD_SUBFILING_HEADERS
${H5FD_SUBFILING_DIR}/H5FDsubfiling.h
${H5FD_SUBFILING_DIR}/H5FDioc.h
)
# Add Subfiling VFD sources to HDF5 library's H5FD sources
set (H5FD_SOURCES
${H5FD_SOURCES}
${HDF5_H5FD_SUBFILING_SOURCES}
PARENT_SCOPE
)
# Add Subfiling VFD public headers to HDF5 library's public H5FD headers
set (H5FD_HDRS
${H5FD_HDRS}