From 02501aae258e8db3bb95ba2bf378809a92ee4613 Mon Sep 17 00:00:00 2001 From: Larry Knox Date: Mon, 26 Jan 2026 10:34:05 -0600 Subject: [PATCH 1/2] Fix CMake config file install paths to follow platform conventions Update HDF_DIR_PATHS macro to install hdf5-config.cmake and related files to platform-appropriate locations: - Windows (not Cygwin): /cmake/ - Linux/Unix/Cygwin: //cmake/hdf5/ - macOS Frameworks: /hdf5.framework/Resources/CMake/ Co-Authored-By: Claude Opus 4.5 --- config/HDFMacros.cmake | 36 ++++++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/config/HDFMacros.cmake b/config/HDFMacros.cmake index 4091df70230..804d6661a06 100644 --- a/config/HDFMacros.cmake +++ b/config/HDFMacros.cmake @@ -421,6 +421,14 @@ endmacro () # HDF_DIR_PATHS: Set up install directory variables and RPATHs. macro (HDF_DIR_PATHS package_prefix) option (HDF5_USE_GNU_DIRS "ON to use GNU Coding Standard install directory variables, OFF to use historical settings" OFF) + + if (APPLE) + option (${package_prefix}_BUILD_FRAMEWORKS "ON to build as frameworks libraries, OFF to build according to BUILD_SHARED_LIBS" OFF) + endif () + + # Derive lowercase package name for cmake config directory + string (TOLOWER ${package_prefix} ${package_prefix}_PACKAGE_NAME_LOWER) + if (HDF5_USE_GNU_DIRS) include(GNUInstallDirs) if (NOT ${package_prefix}_INSTALL_BIN_DIR) @@ -442,7 +450,17 @@ macro (HDF_DIR_PATHS package_prefix) set (${package_prefix}_INSTALL_DATA_DIR ${CMAKE_INSTALL_DATADIR}) endif () if (NOT ${package_prefix}_INSTALL_CMAKE_DIR) - set (${package_prefix}_INSTALL_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake) + # CMake config install directory: + # - Frameworks: /Resources/CMake/ + # - Windows (not Cygwin): cmake/ + # - Linux/Unix/Cygwin: ${CMAKE_INSTALL_LIBDIR}/cmake// + if (${package_prefix}_BUILD_FRAMEWORKS) + set (${package_prefix}_INSTALL_CMAKE_DIR ${CMAKE_INSTALL_FRAMEWORK_PREFIX}/${${package_prefix}_PACKAGE_NAME_LOWER}.framework/Resources/CMake) + elseif (WIN32 AND NOT CYGWIN) + set (${package_prefix}_INSTALL_CMAKE_DIR cmake) + else () + set (${package_prefix}_INSTALL_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/${${package_prefix}_PACKAGE_NAME_LOWER}) + endif () endif () if (NOT ${package_prefix}_INSTALL_DOC_DIR) set (${package_prefix}_INSTALL_DOC_DIR ${CMAKE_INSTALL_DOCDIR}) @@ -450,10 +468,6 @@ macro (HDF_DIR_PATHS package_prefix) message(STATUS "GNU: ${${package_prefix}_INSTALL_DOC_DIR}") endif () - if (APPLE) - option (${package_prefix}_BUILD_FRAMEWORKS "ON to build as frameworks libraries, OFF to build according to BUILD_SHARED_LIBS" OFF) - endif () - if (NOT ${package_prefix}_INSTALL_BIN_DIR) set (${package_prefix}_INSTALL_BIN_DIR bin) endif () @@ -492,7 +506,17 @@ macro (HDF_DIR_PATHS package_prefix) endif () endif () if (NOT ${package_prefix}_INSTALL_CMAKE_DIR) - set (${package_prefix}_INSTALL_CMAKE_DIR cmake) + # CMake config install directory: + # - Frameworks: /Resources/CMake/ + # - Windows (not Cygwin): cmake/ + # - Linux/Unix/Cygwin: /cmake// + if (${package_prefix}_BUILD_FRAMEWORKS) + set (${package_prefix}_INSTALL_CMAKE_DIR ${CMAKE_INSTALL_FRAMEWORK_PREFIX}/${${package_prefix}_PACKAGE_NAME_LOWER}.framework/Resources/CMake) + elseif (WIN32 AND NOT CYGWIN) + set (${package_prefix}_INSTALL_CMAKE_DIR cmake) + else () + set (${package_prefix}_INSTALL_CMAKE_DIR ${${package_prefix}_INSTALL_LIB_DIR}/cmake/${${package_prefix}_PACKAGE_NAME_LOWER}) + endif () endif () if (NOT ${package_prefix}_INSTALL_DOC_DIR) set (${package_prefix}_INSTALL_DOC_DIR ${${package_prefix}_INSTALL_DATA_DIR}) From b4e4b18fc1795f8ee3cfae69c704e361c42ac8e1 Mon Sep 17 00:00:00 2001 From: Larry Knox Date: Mon, 26 Jan 2026 14:35:02 -0600 Subject: [PATCH 2/2] Remove unnecessary code per review comment. Add similar change to HDF5Examples/config/HDFMacros.cmake. --- HDF5Examples/config/HDFMacros.cmake | 14 ++++++++++++-- config/HDFMacros.cmake | 12 +----------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/HDF5Examples/config/HDFMacros.cmake b/HDF5Examples/config/HDFMacros.cmake index 981f7165035..2f80f665df2 100644 --- a/HDF5Examples/config/HDFMacros.cmake +++ b/HDF5Examples/config/HDFMacros.cmake @@ -112,7 +112,7 @@ macro (HDF_DIR_PATHS package_prefix) set (${package_prefix}_INSTALL_DATA_DIR ${CMAKE_INSTALL_DATADIR}) endif () if (NOT ${package_prefix}_INSTALL_CMAKE_DIR) - set (${package_prefix}_INSTALL_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake) + set (${package_prefix}_INSTALL_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/${${package_prefix}_PACKAGE_NAME_LOWER}) endif () if (NOT ${package_prefix}_INSTALL_DOC_DIR) set (${package_prefix}_INSTALL_DOC_DIR ${CMAKE_INSTALL_DOCDIR}) @@ -162,7 +162,17 @@ macro (HDF_DIR_PATHS package_prefix) endif () endif () if (NOT ${package_prefix}_INSTALL_CMAKE_DIR) - set (${package_prefix}_INSTALL_CMAKE_DIR cmake) + # CMake config install directory: + # - Frameworks: /Resources/CMake/ + # - Windows (not Cygwin): cmake/ + # - Linux/Unix/Cygwin: /cmake// + if (${package_prefix}_BUILD_FRAMEWORKS) + set (${package_prefix}_INSTALL_CMAKE_DIR ${CMAKE_INSTALL_FRAMEWORK_PREFIX}/${${package_prefix}_PACKAGE_NAME_LOWER}.framework/Resources/CMake) + elseif (WIN32 AND NOT CYGWIN) + set (${package_prefix}_INSTALL_CMAKE_DIR cmake) + else () + set (${package_prefix}_INSTALL_CMAKE_DIR ${${package_prefix}_INSTALL_LIB_DIR}/cmake/${${package_prefix}_PACKAGE_NAME_LOWER}) + endif () endif () if (NOT ${package_prefix}_INSTALL_DOC_DIR) set (${package_prefix}_INSTALL_DOC_DIR ${${package_prefix}_INSTALL_DATA_DIR}) diff --git a/config/HDFMacros.cmake b/config/HDFMacros.cmake index 804d6661a06..9da19896623 100644 --- a/config/HDFMacros.cmake +++ b/config/HDFMacros.cmake @@ -450,17 +450,7 @@ macro (HDF_DIR_PATHS package_prefix) set (${package_prefix}_INSTALL_DATA_DIR ${CMAKE_INSTALL_DATADIR}) endif () if (NOT ${package_prefix}_INSTALL_CMAKE_DIR) - # CMake config install directory: - # - Frameworks: /Resources/CMake/ - # - Windows (not Cygwin): cmake/ - # - Linux/Unix/Cygwin: ${CMAKE_INSTALL_LIBDIR}/cmake// - if (${package_prefix}_BUILD_FRAMEWORKS) - set (${package_prefix}_INSTALL_CMAKE_DIR ${CMAKE_INSTALL_FRAMEWORK_PREFIX}/${${package_prefix}_PACKAGE_NAME_LOWER}.framework/Resources/CMake) - elseif (WIN32 AND NOT CYGWIN) - set (${package_prefix}_INSTALL_CMAKE_DIR cmake) - else () - set (${package_prefix}_INSTALL_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/${${package_prefix}_PACKAGE_NAME_LOWER}) - endif () + set (${package_prefix}_INSTALL_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/${${package_prefix}_PACKAGE_NAME_LOWER}) endif () if (NOT ${package_prefix}_INSTALL_DOC_DIR) set (${package_prefix}_INSTALL_DOC_DIR ${CMAKE_INSTALL_DOCDIR})