Add file header comments to CMake files (#5688)

This commit is contained in:
Allen Byrne
2025-08-13 07:19:57 -05:00
committed by GitHub
parent e05cff7391
commit 497b65ad0f
49 changed files with 460 additions and 53 deletions
+45 -12
View File
@@ -9,7 +9,33 @@
# If you do not have access to either file, you may request a copy from
# help@hdfgroup.org.
#
option (HDF5_USE_ZLIB_NG "Use zlib-ng library as zlib library" OFF)
# -----------------------------------------------------------------------------
# HDF5 CMake Filter Support Configuration
# -----------------------------------------------------------------------------
# This CMake module configures support for external compression filters in HDF5,
# specifically ZLIB (including zlib-ng) and SZIP (libaec). It provides options
# for enabling/disabling filter support, selecting static/shared builds, and
# controlling how dependencies are found or built (external, local, or via GIT/TGZ).
#
# Key Features:
# - Options to enable/disable ZLIB and SZIP support, and select static/shared linking.
# - Support for using zlib-ng as a drop-in replacement for zlib.
# - Support for building dependencies externally (via GIT or TGZ) or using system libraries.
# - Handles configuration of include directories, library targets, and CMake variables
# for downstream use.
# - Sets up required variables for HDF5 to use the DEFLATE and SZIP filters.
#
# Usage:
# HDF5 includes this file from the main CMakeLists.txt if ZLIB or SZIP filter support in HDF5
# is enabled. Configure options as needed before including this file.
#
# See comments throughout for details on each option and logic branch.
# -----------------------------------------------------------------------------
# Specify major options at the top of the file
# -----------------------------------------------------------------------------
cmake_dependent_option (HDF5_USE_ZLIB_NG "Use zlib-ng library as zlib library" OFF HDF5_ENABLE_ZLIB_SUPPORT OFF)
cmake_dependent_option (HDF5_USE_ZLIB_STATIC "Find static zlib library" OFF HDF5_ENABLE_ZLIB_SUPPORT OFF)
cmake_dependent_option (HDF5_USE_LIBAEC_STATIC "Find static AEC library" OFF HDF5_ENABLE_SZIP_SUPPORT OFF)
option (ZLIB_USE_EXTERNAL "Use External Library Building for ZLIB" OFF)
@@ -22,7 +48,12 @@ cmake_dependent_option (LIBAEC_USE_LOCALCONTENT "Use local file for LIBAEC Fetch
mark_as_advanced (LIBAEC_USE_LOCALCONTENT)
# -----------------------------------------------------------------------------
# the ExternalProject module is needed for building compression libraries from source
include (ExternalProject)
# If compression libraries will be built from source, then choose which method and
# source location.
#option (HDF5_ALLOW_EXTERNAL_SUPPORT "Allow External Library Building (NO GIT TGZ)" "NO")
set (HDF5_ALLOW_EXTERNAL_SUPPORT "NO" CACHE STRING "Allow External Library Building (NO GIT TGZ)")
set_property (CACHE HDF5_ALLOW_EXTERNAL_SUPPORT PROPERTY STRINGS NO GIT TGZ)
@@ -85,17 +116,18 @@ endif ()
#-----------------------------------------------------------------------------
# Option for ZLib support
#-----------------------------------------------------------------------------
set (H5_ZLIB_FOUND FALSE)
if (NOT DEFINED ZLIB_PACKAGE_NAME)
set (ZLIB_PACKAGE_NAME "zlib")
set(H5_ZLIB_FOUND FALSE)
# Choose which zlib package to use by name
if(NOT DEFINED ZLIB_PACKAGE_NAME)
set(ZLIB_PACKAGE_NAME "zlib")
endif ()
if (NOT DEFINED ZLIBNG_PACKAGE_NAME)
set (ZLIBNG_PACKAGE_NAME "zlib-ng")
endif ()
if (HDF5_ENABLE_ZLIB_SUPPORT)
if (NOT H5_ZLIB_HEADER)
if (NOT ZLIB_USE_EXTERNAL)
option (HDF5_MODULE_MODE_ZLIB "Prefer module mode to find ZLIB" ON)
if (NOT H5_ZLIB_HEADER) # This checks if zlib has already been found/built
if (NOT ZLIB_USE_EXTERNAL) # This checks if zlib should be found on the system or built from an external source
cmake_dependent_option (HDF5_MODULE_MODE_ZLIB "Prefer module mode to find ZLIB" ON "NOT ZLIB_USE_EXTERNAL" OFF)
mark_as_advanced (HDF5_MODULE_MODE_ZLIB)
if (HDF5_USE_ZLIB_NG)
set (HDF5_MODULE_MODE_ZLIB OFF CACHE BOOL "" FORCE)
@@ -171,13 +203,14 @@ endif ()
#-----------------------------------------------------------------------------
# Option for SzLib support
#-----------------------------------------------------------------------------
set (H5_SZIP_FOUND FALSE)
if (NOT DEFINED LIBAEC_PACKAGE_NAME)
set (LIBAEC_PACKAGE_NAME "libaec")
set(H5_SZIP_FOUND FALSE)
# Choose which szip package to use by name
if(NOT DEFINED LIBAEC_PACKAGE_NAME)
set(LIBAEC_PACKAGE_NAME "libaec")
endif ()
if (HDF5_ENABLE_SZIP_SUPPORT)
option (HDF5_ENABLE_SZIP_ENCODING "Use SZip Encoding" ON)
if (NOT SZIP_USE_EXTERNAL)
cmake_dependent_option (HDF5_ENABLE_SZIP_ENCODING "Use SZip Encoding" ON HDF5_ENABLE_SZIP_SUPPORT OFF)
if (NOT SZIP_USE_EXTERNAL) # This checks if szip should be found on the system or built from an external source
if (HDF5_USE_LIBAEC_STATIC)
set (LIBAEC_SEARCH_TYPE "static")
else ()
+25
View File
@@ -9,6 +9,29 @@
# If you do not have access to either file, you may request a copy from
# help@hdfgroup.org.
#
# -----------------------------------------------------------------------------
# HDF5 CMake Installation and Packaging Configuration
# -----------------------------------------------------------------------------
# This CMake module handles installation and packaging for the HDF5 library and
# its components. It configures install targets, generates CMake config files,
# sets up packaging with CPack, and manages platform-specific installer options.
#
# Key Features:
# - Installs HDF5 libraries, headers, utilities, documentation, and CMake config files.
# - Generates hdf5-config.cmake and version files for build and install trees.
# - Supports Windows (NSIS, WiX), macOS (DMG, Framework), and Linux (DEB, RPM, TGZ) packaging.
# - Handles installation of example files and release documentation.
# - Configures CPack variables and component groups for flexible packaging.
#
# Usage:
# HDF5 includes this file from the main CMakeLists.txt to enable installation and
# packaging for HDF5. Adjust options and variables as needed for your platform
# and distribution requirements.
#
# See comments throughout for details on each section and option.
# -----------------------------------------------------------------------------
include (CMakePackageConfigHelpers)
#-----------------------------------------------------------------------------
@@ -272,6 +295,7 @@ if (NOT HDF5_EXTERNALLY_CONFIGURED AND NOT HDF5_NO_PACKAGES)
set (CPACK_PRE_BUILD_SCRIPTS ${CMAKE_SOURCE_DIR}/config/install/SignPackageFiles.cmake)
endif ()
# Add the package types to the list of generators, TGZ is the default on all platforms
set (CPACK_GENERATOR "TGZ")
if (WIN32)
set (CPACK_GENERATOR "ZIP")
@@ -484,6 +508,7 @@ The HDF5 data model, file format, API, library, and tools are open and distribut
include (CPack)
# The following sets packaging specific categories and descriptions
cpack_add_install_type(Full DISPLAY_NAME "Everything")
cpack_add_install_type(Developer)
+29
View File
@@ -1,3 +1,32 @@
# -----------------------------------------------------------------------------
# HDF5 CMake Top-Level Build Configuration
# -----------------------------------------------------------------------------
# This is the main CMakeLists.txt file for configuring, building, and installing
# the HDF5 library and its components. It supports building HDF5 as a standalone
# project or as a subproject within a larger CMake build. Key features include:
#
# - Enforces out-of-source builds for safety and cleanliness.
# - Supports configuration as a subproject (HDF5_EXTERNALLY_CONFIGURED).
# - Provides options for building shared/static libraries, tools, examples, and bindings (C++, Fortran, Java).
# - Handles versioning, installation paths, and library naming customization.
# - Integrates with external dependencies (zlib, szip, MPI, HDFS, etc.).
# - Supports advanced features: thread-safety, concurrency, plugins, code coverage, and more.
# - Includes options for documentation and testing.
#
# Usage examples:
# 1. Presets:
# cd <path-to-hdf5-source>
# cmake --workflow --preset <preset-name>
#
# 2. Command line:
# mkdir build && cd build
# cmake [options] <path-to-hdf5-source>
# cmake --build .
# cmake --install .
#
# See comments throughout this file for details on configuration variables and options.
# -----------------------------------------------------------------------------
cmake_minimum_required (VERSION 3.18)
project (HDF5 C)
+28 -1
View File
@@ -9,10 +9,37 @@
# If you do not have access to either file, you may request a copy from
# help@hdfgroup.org.
#
# -----------------------------------------------------------------------------
# HDF5 CMake Filter Plugin Support Configuration
# -----------------------------------------------------------------------------
# This CMake module configures support for external filter plugins in HDF5.
# It provides options for enabling/disabling plugin support, selecting
# static/shared builds, and controlling how plugin dependencies are found or
# built (external, local, or via GIT/TGZ).
#
# Key Features:
# - Options to enable/disable plugin support and select external or local builds.
# - Support for building plugins externally (via GIT or TGZ) or using system libraries.
# - Handles configuration of plugin include directories, library targets, and CMake variables.
# - Sets up required variables for HDF5 to use filter plugins.
#
# Usage:
# HDF5 includes this file from the main CMakeLists.txt if filter plugin support
# in HDF5 is enabled (HDF5_ENABLE_PLUGIN_SUPPORT). Configure options as needed before
# including this file.
#
# See comments throughout for details on each option and logic branch.
# -----------------------------------------------------------------------------
option (PLUGIN_USE_EXTERNAL "Use External Library Building for filter PLUGIN else search" OFF)
cmake_dependent_option (PLUGIN_USE_LOCALCONTENT "Use local file for PLUGIN FetchContent" OFF PLUGIN_USE_EXTERNAL OFF)
include (ExternalProject)
# -----------------------------------------------------------------------------
# Option for enabling filter plugin support by building the plugins from external sources
# -----------------------------------------------------------------------------
#option (HDF5_ALLOW_EXTERNAL_SUPPORT "Allow External Library Building (NO GIT TGZ)" "NO")
set (HDF5_ALLOW_EXTERNAL_SUPPORT "NO" CACHE STRING "Allow External Library Building (NO GIT TGZ)")
set_property (CACHE HDF5_ALLOW_EXTERNAL_SUPPORT PROPERTY STRINGS NO GIT TGZ)
@@ -48,7 +75,7 @@ endif ()
# Option for PLUGIN support
#-----------------------------------------------------------------------------
if (HDF5_ENABLE_PLUGIN_SUPPORT)
if (NOT PLUGIN_USE_EXTERNAL)
if (NOT PLUGIN_USE_EXTERNAL) # This checks if plugins should be found on the system or built from an external source
find_package (PLUGIN NAMES ${PLUGIN_PACKAGE_NAME}${HDF_PACKAGE_EXT})
if (NOT PLUGIN_FOUND)
find_package (PLUGIN) # Legacy find
+23
View File
@@ -10,6 +10,29 @@
# help@hdfgroup.org.
#
# -----------------------------------------------------------------------------
# HDF5 CMake Testing and Dashboard Configuration
# -----------------------------------------------------------------------------
# This CMake module configures the testing and dashboard infrastructure for HDF5.
# It sets up test timeouts, test options, and enables/disables various test suites
# (API, VFD, VOL, serial, parallel, Fortran, C++, Java, tools, examples, SWMR, etc.).
# It also configures CTest integration, test express levels, and test directories.
#
# Key Features:
# - Configures DART/CTest timeouts and test express levels.
# - Provides options to enable/disable specific test suites and features.
# - Supports advanced test options (e.g., API async, driver, VFD lists, passthrough VOL).
# - Integrates with CTest and dashboard tools for automated testing.
# - Handles test directory setup for serial, parallel, and API tests.
#
# Usage:
# HDF5 includes this file from the main CMakeLists.txt to enable and configure
# HDF5 testing, if testing is enabled (BUILD_TESTING). Adjust options as needed
# for your build and test requirements.
#
# See comments throughout for details on each option and logic branch.
# -----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Dashboard and Testing Settings
#-----------------------------------------------------------------------------
+8 -1
View File
@@ -1,3 +1,11 @@
# Top-level CMake configuration for HDF5 Examples
# This file sets up build options, dependencies, and subdirectories for C, C++,
# Fortran, Java, and filter examples.
# It also handles MPI/parallel support, version parsing, and testing configuration.
#
# The option naming convention is H5EX_* for examples options and HDF5_* for HDF5
# library features.
cmake_minimum_required (VERSION 3.18)
project (H5EXAMPLES C)
@@ -222,4 +230,3 @@ endif ()
if (H5EX_BUILD_PYTHON)
add_subdirectory (PYTHON)
endif ()
+5
View File
@@ -1,3 +1,8 @@
#-----------------------------------------------------------------------------
# CMake configuration for HDF5 C++ library
# This file sets up the build, formatting, and installation rules for the HDF5 C++ library (static/shared).
# It handles C++ source/header definitions, compiler options, linking, export, and pkg-config file generation for the HDF5 C++ API.
#-----------------------------------------------------------------------------
cmake_minimum_required (VERSION 3.18)
project (HDF5_CPP_SRC CXX)
+6
View File
@@ -1,3 +1,9 @@
#-----------------------------------------------------------------------------
# CMake configuration for HDF5 C++ test suite
# This file sets up the build, formatting, and test execution rules for the HDF5 C++ test suite.
# It handles C++ test source grouping, test executable creation, compiler options, linking, and integration with the HDF5 C++ and core libraries.
#-----------------------------------------------------------------------------
cmake_minimum_required (VERSION 3.18)
project (HDF5_CPP_TEST CXX)
+6
View File
@@ -1,3 +1,9 @@
#-----------------------------------------------------------------------------
# CMake configuration for HDF5 Fortran library
# This file sets up the build, formatting, and installation rules for the HDF5 Fortran library (static/shared).
# It handles Fortran and C source/header definitions, compiler options, module generation, linking, export,
# and pkg-config file generation for the HDF5 Fortran API.
#-----------------------------------------------------------------------------
cmake_minimum_required (VERSION 3.18)
project (HDF5_F90_SRC C Fortran)
+6
View File
@@ -1,3 +1,9 @@
#-----------------------------------------------------------------------------
# CMake configuration for HDF5 Fortran test suite
# This file sets up the build, formatting, and test execution rules for the HDF5 Fortran test suite.
# It handles Fortran and C test source grouping, test library and executable creation, compiler options, module management,
# linking, and integration with the HDF5 Fortran and core libraries.
#-----------------------------------------------------------------------------
cmake_minimum_required (VERSION 3.18)
project (HDF5_FORTRAN_TESTS C Fortran)
+6
View File
@@ -1,3 +1,9 @@
#-----------------------------------------------------------------------------
# CMake configuration for HDF5 Fortran parallel test suite
# This file sets up the build, formatting, and test execution rules for the HDF5 Fortran parallel test suite.
# It handles Fortran and C test source grouping, test executable creation, compiler options, module management,
# linking, and integration with the HDF5 Fortran and core libraries for parallel HDF5 testing.
#-----------------------------------------------------------------------------
cmake_minimum_required (VERSION 3.18)
project (HDF5_FORTRAN_TESTPAR C Fortran)
+5
View File
@@ -1,3 +1,8 @@
#-----------------------------------------------------------------------------
# CMake configuration for HDF5 High-Level (HL) C++ library
# This file sets up the build, formatting, and installation rules for the HDF5 HL C++ library (static/shared).
# It handles HL C++ source/header definitions, compiler options, linking, export, pkg-config file generation, and integration with the HDF5 HL and core libraries.
#-----------------------------------------------------------------------------
cmake_minimum_required (VERSION 3.18)
project (HDF5_HL_CPP_SRC CXX)
+5
View File
@@ -1,3 +1,8 @@
#-----------------------------------------------------------------------------
# CMake configuration for HDF5 High-Level (HL) C++ test suite
# This file sets up the build, formatting, and test execution rules for the HDF5 HL C++ test suite.
# It handles HL C++ test source grouping, test executable creation, compiler options, linking, and integration with the HDF5 HL, HL C++, and core libraries.
#-----------------------------------------------------------------------------
cmake_minimum_required (VERSION 3.18)
project (HDF5_HL_CPP_TEST CXX)
+5
View File
@@ -1,3 +1,8 @@
#-----------------------------------------------------------------------------
# CMake configuration for HDF5 High-Level (HL) Fortran library
# This file sets up the build, formatting, and installation rules for the HDF5 HL Fortran library (static/shared).
# It handles HL Fortran and C source/header definitions, compiler options, module generation, linking, export, pkg-config file generation, and integration with the HDF5 HL and core libraries.
#-----------------------------------------------------------------------------
cmake_minimum_required (VERSION 3.18)
project (HDF5_HL_F90_SRC C Fortran)
+6
View File
@@ -1,3 +1,9 @@
#-----------------------------------------------------------------------------
# CMake configuration for HDF5 High-Level (HL) Fortran test suite
# This file sets up the build, formatting, and test execution rules for the HDF5 HL Fortran test suite.
# It handles HL Fortran and C test source grouping, test executable creation, compiler options, module management,
# linking, and integration with the HDF5 HL Fortran, HL, and core libraries.
#-----------------------------------------------------------------------------
cmake_minimum_required (VERSION 3.18)
project (HDF5_HL_FORTRAN_TESTS C Fortran)
+6
View File
@@ -1,3 +1,9 @@
#-----------------------------------------------------------------------------
# CMake configuration for HDF5 High-Level (HL) library
# This file sets up the build, formatting, and installation rules for the HDF5 HL library (static/shared).
# It handles HL C source/header definitions, compiler options, linking, export, pkg-config file generation, and optional documentation for the HDF5 HL API.
#-----------------------------------------------------------------------------
cmake_minimum_required (VERSION 3.18)
project (HDF5_HL_SRC C)
+5
View File
@@ -1,3 +1,8 @@
#-----------------------------------------------------------------------------
# CMake configuration for HDF5 High-Level (HL) test suite
# This file sets up the build, formatting, and test execution rules for the HDF5 HL test suite.
# It handles HL C test source grouping, test executable creation, compiler options, linking, and integration with the HDF5 HL and core libraries.
#-----------------------------------------------------------------------------
cmake_minimum_required (VERSION 3.18)
project (HDF5_HL_TEST C)
# --------------------------------------------------------------------
+6
View File
@@ -1,3 +1,9 @@
#-----------------------------------------------------------------------------
# CMake configuration for HDF5 High-Level (HL) h5watch tool
# This file sets up the build, formatting, and installation rules for the h5watch executable and its test utilities.
# It handles HL tool source grouping, test program creation, compiler options, linking, export, and integration with the HDF5 HL and core libraries.
#-----------------------------------------------------------------------------
cmake_minimum_required (VERSION 3.18)
project (HDF5_HL_TOOLS_H5WATCH C)
+6
View File
@@ -1,3 +1,9 @@
#-----------------------------------------------------------------------------
# CMake configuration for HDF5 Java hdf.hdf5lib package
# This file sets up the build, packaging, and installation rules for the HDF5 Java hdf.hdf5lib package.
# It handles Java source grouping, JAR creation, JNI dependencies, and formatting for the HDF5 Java bindings.
#-----------------------------------------------------------------------------
cmake_minimum_required (VERSION 3.18)
project (HDF5_JAVA_HDF_HDF5 Java)
+6
View File
@@ -1,3 +1,9 @@
#-----------------------------------------------------------------------------
# CMake configuration for HDF5 Java JNI library
# This file sets up the build, formatting, and installation rules for the HDF5 Java JNI shared library.
# It handles JNI C/C++ source and header definitions, compiler options, linking, export, and integration with the HDF5 shared library for Java bindings.
#-----------------------------------------------------------------------------
cmake_minimum_required (VERSION 3.18)
project (HDF5_JAVA_JNI C)
+7
View File
@@ -1,3 +1,10 @@
#-----------------------------------------------------------------------------
# CMake configuration for HDF5 Java test suite
# This file sets up the build, and test execution rules for the HDF5 Java test suite.
# It handles Java test source grouping, JAR creation, test data management, test execution (including VOL tests),
# and integration with the HDF5 Java JNI and core libraries.
#-----------------------------------------------------------------------------
cmake_minimum_required (VERSION 3.18)
project (HDF5_JAVA_TEST Java)
+7
View File
@@ -1,3 +1,10 @@
# -----------------------------------------------------------------------------
# HDF5 Core Library Source CMakeLists.txt
#
# This file configures the build for the HDF5 core library sources.
# It organizes source and header files for each module, sets up build targets,
# manages installation, pkg-config, and documentation generation.
# -----------------------------------------------------------------------------
cmake_minimum_required (VERSION 3.18)
project (HDF5_SRC C)
+6
View File
@@ -1,3 +1,9 @@
#-----------------------------------------------------------------------------
# CMake configuration for HDF5 test library and test executables
# This file sets up the build, formatting, and installation rules for the HDF5 test library (static/shared),
# test plugins, and all test executables. It handles source/header definitions, compiler options, linking,
# export, and test configuration for the HDF5 test suite, including plugin, VFD, VOL, SWMR, and use case tests.
#-----------------------------------------------------------------------------
cmake_minimum_required (VERSION 3.18)
project (HDF5_TEST C)
+5
View File
@@ -1,3 +1,8 @@
#-----------------------------------------------------------------------------
# CMake configuration for HDF5 parallel test library and test executables
# This file sets up the build, formatting, and installation rules for the HDF5 parallel test library (static/shared) and its test executables.
# It handles source/header definitions, compiler options, linking, export, and test configuration for parallel HDF5 testing.
#-----------------------------------------------------------------------------
cmake_minimum_required (VERSION 3.18)
project (HDF5_TEST_PAR C)
+13 -2
View File
@@ -1,8 +1,13 @@
#-----------------------------------------------------------------------------
# CMake configuration for HDF5 tools library
# This file sets up the build, formatting, and installation rules for the HDF5 tools library (static and shared).
# It handles source/header definitions, compiler options, linking, and export for the HDF5 tools suite.
#-----------------------------------------------------------------------------
cmake_minimum_required (VERSION 3.18)
project (HDF5_TOOLS_LIB C)
#-----------------------------------------------------------------------------
# Define Sources
# Define Sources and Headers for the HDF5 tools library
#-----------------------------------------------------------------------------
set (H5_TOOLS_LIB_SOURCES
@@ -35,6 +40,9 @@ set (H5_TOOLS_LIB_HDRS
)
if (BUILD_STATIC_LIBS)
#--------------------------------------------------------------------------
# Build the static HDF5 tools library
#--------------------------------------------------------------------------
add_library (${HDF5_TOOLS_LIB_TARGET} STATIC ${H5_TOOLS_LIB_SOURCES} ${H5_TOOLS_LIB_HDRS})
target_include_directories (${HDF5_TOOLS_LIB_TARGET}
PRIVATE "${HDF5_TOOLS_LIB_SOURCE_DIR};${HDF5_SRC_INCLUDE_DIRS};${HDF5_SRC_BINARY_DIR};$<$<BOOL:${HDF5_ENABLE_PARALLEL}>:${MPI_C_INCLUDE_DIRS}>"
@@ -55,6 +63,9 @@ if (BUILD_STATIC_LIBS)
endif ()
if (BUILD_SHARED_LIBS)
#--------------------------------------------------------------------------
# Build the shared HDF5 tools library
#--------------------------------------------------------------------------
add_library (${HDF5_TOOLS_LIBSH_TARGET} SHARED ${H5_TOOLS_LIB_SOURCES} ${H5_TOOLS_LIB_HDRS})
target_include_directories (${HDF5_TOOLS_LIBSH_TARGET}
PRIVATE "${HDF5_TOOLS_LIB_SOURCE_DIR};${HDF5_SRC_INCLUDE_DIRS};${HDF5_SRC_BINARY_DIR};$<$<BOOL:${HDF5_ENABLE_PARALLEL}>:${MPI_C_INCLUDE_DIRS}>"
@@ -78,7 +89,7 @@ if (BUILD_SHARED_LIBS)
endif ()
#-----------------------------------------------------------------------------
# Add Target to clang-format
# Add Target to clang-format if enabled
#-----------------------------------------------------------------------------
if (HDF5_ENABLE_FORMATTERS)
if (BUILD_STATIC_LIBS)
+8
View File
@@ -1,3 +1,8 @@
#-----------------------------------------------------------------------------
# CMake configuration for HDF5 h5tools_utils test utilities
# This file sets up the build, formatting, and test configuration for the h5tools_test_utils executable.
# It handles compiler options, linking, and export for the HDF5 tools test suite.
#-----------------------------------------------------------------------------
cmake_minimum_required (VERSION 3.18)
project (HDF5_TOOLS_LIBTEST C)
@@ -23,6 +28,9 @@ if (HDF5_ENABLE_FORMATTERS)
clang_format (HDF5_H5TOOLS_TEST_SRC_FORMAT h5tools_test_utils)
endif ()
#-----------------------------------------------------------------------------
# Include test configuration if tool and serial tests are enabled
#-----------------------------------------------------------------------------
if (HDF5_TEST_TOOLS AND HDF5_TEST_SERIAL)
include (CMakeTests.cmake)
endif ()
+8 -2
View File
@@ -1,6 +1,12 @@
cmake_minimum_required (VERSION 3.18)
project (HDF5_TOOLS_SRC_H5COPY C)
#-----------------------------------------------------------------------------
# CMake configuration for HDF5 h5copy tool
# This file sets up the build, formatting, and installation rules for the h5copy executable.
# It handles compiler options, linking, and export for the HDF5 tools suite.
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
# Add the h5copy and test executables
# --------------------------------------------------------------------
@@ -32,9 +38,9 @@ endif ()
##############################################################################
##############################################################################
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
# Rules for Installation of tools using make Install target
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
if (HDF5_EXPORTED_TARGETS)
foreach (exec ${H5_DEP_EXECUTABLES})
INSTALL_PROGRAM_PDB (${exec} ${HDF5_INSTALL_BIN_DIR} toolsapplications)
+11 -2
View File
@@ -1,6 +1,12 @@
cmake_minimum_required (VERSION 3.18)
project (HDF5_TOOLS_SRC_H5DIFF C)
#-----------------------------------------------------------------------------
# CMake configuration for HDF5 h5diff and ph5diff tools
# This file sets up the build, formatting, and installation rules for the h5diff and ph5diff executables.
# It handles compiler options, linking, and export for the HDF5 tools suite.
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
# Add the h5diff executables
# --------------------------------------------------------------------
@@ -31,6 +37,9 @@ if (HDF5_ENABLE_FORMATTERS)
clang_format (HDF5_H5DIFF_SRC_FORMAT h5diff)
endif ()
# --------------------------------------------------------------------
# Add the ph5diff executable if parallel support is enabled
# --------------------------------------------------------------------
if (H5_HAVE_PARALLEL)
add_executable (ph5diff
${HDF5_TOOLS_SRC_H5DIFF_SOURCE_DIR}/h5diff_common.c
@@ -56,9 +65,9 @@ endif ()
##############################################################################
##############################################################################
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
# Rules for Installation of tools using make Install target
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
if (HDF5_EXPORTED_TARGETS)
foreach (exec ${H5_DEP_EXECUTABLES})
INSTALL_PROGRAM_PDB (${exec} ${HDF5_INSTALL_BIN_DIR} toolsapplications)
+8 -2
View File
@@ -1,6 +1,12 @@
cmake_minimum_required (VERSION 3.18)
project (HDF5_TOOLS_SRC_H5DUMP C)
#-----------------------------------------------------------------------------
# CMake configuration for HDF5 h5dump tool
# This file sets up the build, formatting, and installation rules for the h5dump executable.
# It handles compiler options, linking, and export for the HDF5 tools suite.
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
# Add the h5dump executables
# --------------------------------------------------------------------
@@ -41,9 +47,9 @@ endif ()
##############################################################################
##############################################################################
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
# Rules for Installation of tools using make Install target
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
if (HDF5_EXPORTED_TARGETS)
foreach (exec ${H5_DEP_EXECUTABLES})
INSTALL_PROGRAM_PDB (${exec} ${HDF5_INSTALL_BIN_DIR} toolsapplications)
+8 -2
View File
@@ -1,6 +1,12 @@
cmake_minimum_required (VERSION 3.18)
project (HDF5_TOOLS_SRC_H5FC C)
#-----------------------------------------------------------------------------
# CMake configuration for HDF5 h5format_convert tool
# This file sets up the build, formatting, and installation rules for the h5format_convert executable.
# It handles compiler options, linking, and export for the HDF5 tools suite.
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
# Add the h5format_convert executables
# --------------------------------------------------------------------
@@ -32,9 +38,9 @@ endif ()
##############################################################################
##############################################################################
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
# Rules for Installation of tools using make Install target
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
if (HDF5_EXPORTED_TARGETS)
foreach (exec ${H5_DEP_EXECUTABLES})
INSTALL_PROGRAM_PDB (${exec} ${HDF5_INSTALL_BIN_DIR} toolsapplications)
+8 -2
View File
@@ -1,6 +1,12 @@
cmake_minimum_required (VERSION 3.18)
project (HDF5_TOOLS_SRC_H5IMPORT C)
#-----------------------------------------------------------------------------
# CMake configuration for HDF5 h5import tool
# This file sets up the build, formatting, and installation rules for the h5import executable.
# It handles compiler options, linking, and export for the HDF5 tools suite.
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
# Add the h5import executables
# --------------------------------------------------------------------
@@ -32,9 +38,9 @@ endif ()
##############################################################################
##############################################################################
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
# Rules for Installation of tools using make Install target
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
if (HDF5_EXPORTED_TARGETS)
foreach (exec ${H5_DEP_EXECUTABLES})
INSTALL_PROGRAM_PDB (${exec} ${HDF5_INSTALL_BIN_DIR} toolsapplications)
+10 -4
View File
@@ -1,6 +1,12 @@
cmake_minimum_required (VERSION 3.18)
project (HDF5_TOOLS_SRC_H5JAM C)
#-----------------------------------------------------------------------------
# CMake configuration for HDF5 h5jam and h5unjam tools
# This file sets up the build, formatting, and installation rules for the h5jam and h5unjam executables.
# It handles compiler options, linking, and export for the HDF5 tools suite.
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
# Add the h5jam executables
# --------------------------------------------------------------------
@@ -33,9 +39,9 @@ set (H5_DEP_EXECUTABLES
h5unjam
)
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
# Add Target to clang-format
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
if (HDF5_ENABLE_FORMATTERS)
clang_format (HDF5_H5JAM_SRC_FORMAT h5jam)
clang_format (HDF5_H5UNJAM_SRC_FORMAT h5unjam)
@@ -47,9 +53,9 @@ endif ()
##############################################################################
##############################################################################
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
# Rules for Installation of tools using make Install target
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
if (HDF5_EXPORTED_TARGETS)
foreach (exec ${H5_DEP_EXECUTABLES})
INSTALL_PROGRAM_PDB (${exec} ${HDF5_INSTALL_BIN_DIR} toolsapplications)
+13 -7
View File
@@ -1,9 +1,15 @@
cmake_minimum_required (VERSION 3.18)
project (HDF5_TOOLS_SRC_H5LS C)
#-----------------------------------------------------------------------------
# Add the h5ls executable
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
# CMake configuration for HDF5 h5ls tool
# This file sets up the build, formatting, and installation rules for the h5ls executable.
# It handles compiler options, linking, and export for the HDF5 tools suite.
# --------------------------------------------------------------------
# --------------------------------------------------------------------
# Add the h5ls executable and set up build options
# --------------------------------------------------------------------
add_executable (h5ls ${HDF5_TOOLS_SRC_H5LS_SOURCE_DIR}/h5ls.c)
target_include_directories (h5ls PRIVATE "${HDF5_TOOLS_ROOT_DIR}/lib;${HDF5_SRC_INCLUDE_DIRS};${HDF5_SRC_BINARY_DIR};$<$<BOOL:${HDF5_ENABLE_PARALLEL}>:${MPI_C_INCLUDE_DIRS}>")
target_compile_options(h5ls PRIVATE "${HDF5_CMAKE_C_FLAGS}")
@@ -20,9 +26,9 @@ set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h5ls")
set (H5_DEP_EXECUTABLES h5ls)
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
# Add Target to clang-format
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
if (HDF5_ENABLE_FORMATTERS)
clang_format (HDF5_H5LS_SRC_FORMAT h5ls)
endif ()
@@ -33,9 +39,9 @@ endif ()
##############################################################################
##############################################################################
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
# Rules for Installation of tools using make Install target
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
if (HDF5_EXPORTED_TARGETS)
foreach (exec ${H5_DEP_EXECUTABLES})
INSTALL_PROGRAM_PDB (${exec} ${HDF5_INSTALL_BIN_DIR} toolsapplications)
+13 -2
View File
@@ -1,6 +1,11 @@
cmake_minimum_required (VERSION 3.18)
project (HDF5_TOOLS_SRC_H5PERF C)
# --------------------------------------------------------------------
# CMake configuration for h5perf tool and its parallel variant
# Defines build, linking, formatting, and installation rules for h5perf tools
# --------------------------------------------------------------------
# --------------------------------------------------------------------
# h5perf_serial
# --------------------------------------------------------------------
@@ -53,9 +58,15 @@ if (H5_HAVE_PARALLEL)
endif ()
endif ()
#-----------------------------------------------------------------------------
##############################################################################
##############################################################################
### I N S T A L L A T I O N ###
##############################################################################
##############################################################################
# --------------------------------------------------------------------
# Rules for Installation of tools using make Install target
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
if (HDF5_EXPORTED_TARGETS)
foreach (exec ${H5_DEP_EXECUTABLES})
INSTALL_PROGRAM_PDB (${exec} ${HDF5_INSTALL_BIN_DIR} toolsapplications)
+11 -5
View File
@@ -2,7 +2,13 @@ cmake_minimum_required (VERSION 3.18)
project (HDF5_TOOLS_SRC_H5REPACK C)
# --------------------------------------------------------------------
# Add h5Repack executables
# CMake configuration for HDF5 h5repack tool
# This file sets up the build, formatting, and installation rules for the h5repack executable.
# It handles compiler options, linking, and export for the HDF5 tools suite.
# --------------------------------------------------------------------
# --------------------------------------------------------------------
# Add h5repack executable
# --------------------------------------------------------------------
set (REPACK_COMMON_SOURCES
${HDF5_TOOLS_SRC_H5REPACK_SOURCE_DIR}/h5repack_copy.c
@@ -30,9 +36,9 @@ set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h5repack")
set (H5_DEP_EXECUTABLES h5repack)
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
# Add Target to clang-format
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
if (HDF5_ENABLE_FORMATTERS)
clang_format (HDF5_H5REPACK_SRC_FORMAT h5repack)
endif ()
@@ -43,9 +49,9 @@ endif ()
##############################################################################
##############################################################################
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
# Rules for Installation of tools using make Install target
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
if (HDF5_EXPORTED_TARGETS)
foreach (exec ${H5_DEP_EXECUTABLES})
INSTALL_PROGRAM_PDB (${exec} ${HDF5_INSTALL_BIN_DIR} toolsapplications)
+10 -4
View File
@@ -1,6 +1,12 @@
cmake_minimum_required (VERSION 3.18)
project (HDF5_TOOLS_SRC_H5STAT C)
# --------------------------------------------------------------------
# CMake configuration for HDF5 h5stat tool
# This file sets up the build, formatting, and installation rules for the h5stat executable.
# It handles compiler options, linking, and export for the HDF5 tools suite.
# --------------------------------------------------------------------
# --------------------------------------------------------------------
# Add the h5stat executables
# --------------------------------------------------------------------
@@ -19,9 +25,9 @@ set_global_variable (HDF5_UTILS_TO_EXPORT "${HDF5_UTILS_TO_EXPORT};h5stat")
set (H5_DEP_EXECUTABLES h5stat)
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
# Add Target to clang-format
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
if (HDF5_ENABLE_FORMATTERS)
clang_format (HDF5_H5STAT_SRC_FORMAT h5stat)
endif ()
@@ -32,9 +38,9 @@ endif ()
##############################################################################
##############################################################################
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
# Rules for Installation of tools using make Install target
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
if (HDF5_EXPORTED_TARGETS)
foreach (exec ${H5_DEP_EXECUTABLES})
INSTALL_PROGRAM_PDB (${exec} ${HDF5_INSTALL_BIN_DIR} toolsapplications)
+10 -4
View File
@@ -1,6 +1,12 @@
cmake_minimum_required (VERSION 3.18)
project (HDF5_TOOLS_SRC_MISC C)
# --------------------------------------------------------------------
# CMake configuration for HDF5 h5debug, h5repart, h5mkgrp, h5clear and h5delete tools
# This file sets up the build, formatting, and installation rules for the h5debug, h5repart, h5mkgrp, h5clear and h5delete executables.
# It handles compiler options, linking, and export for the HDF5 tools suite.
# --------------------------------------------------------------------
# --------------------------------------------------------------------
# Add the misc executables
# --------------------------------------------------------------------
@@ -78,9 +84,9 @@ set (H5_DEP_EXECUTABLES
h5delete
)
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
# Add Target to clang-format
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
if (HDF5_ENABLE_FORMATTERS)
clang_format (HDF5_H5DEBUG_SRC_FORMAT h5debug)
clang_format (HDF5_H5REPART_SRC_FORMAT h5repart)
@@ -95,9 +101,9 @@ endif ()
##############################################################################
##############################################################################
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
# Rules for Installation of tools using make Install target
#-----------------------------------------------------------------------------
# --------------------------------------------------------------------
if (HDF5_EXPORTED_TARGETS)
foreach (exec ${H5_DEP_EXECUTABLES})
INSTALL_PROGRAM_PDB (${exec} ${HDF5_INSTALL_BIN_DIR} toolsapplications)
+13 -1
View File
@@ -1,3 +1,9 @@
#-----------------------------------------------------------------------------
# CMake configuration for HDF5 h5copy tool plugin tests
# This file sets up the build for the dynamic library plugin used in h5copy tests.
# It handles plugin compilation, formatting, and installation into the plugins directory.
# It also includes test configuration if enabled.
#-----------------------------------------------------------------------------
cmake_minimum_required (VERSION 3.18)
project (HDF5_TOOLS_TEST_H5COPY C)
@@ -5,14 +11,19 @@ project (HDF5_TOOLS_TEST_H5COPY C)
# If plugin library tests can be tested
#-----------------------------------------------------------------------------
if (BUILD_SHARED_LIBS)
# Set plugin library core name, target, and output name
set (H5COPY_TOOL_PLUGIN_LIB_CORENAME "dynlibcopy")
set (H5COPY_TOOL_PLUGIN_LIB_NAME "${HDF5_EXTERNAL_LIB_PREFIX}${H5COPY_TOOL_PLUGIN_LIB_CORENAME}")
set (H5COPY_TOOL_PLUGIN_LIB_TARGET ${H5COPY_TOOL_PLUGIN_LIB_CORENAME})
# Add the dynamic library for the h5copy tool plugin
add_library (${H5COPY_TOOL_PLUGIN_LIB_TARGET} SHARED dynlib_copy.c)
# Set include directories for the plugin build
target_include_directories (${H5COPY_TOOL_PLUGIN_LIB_TARGET} PRIVATE "${HDF5_SRC_INCLUDE_DIRS};${HDF5_SRC_BINARY_DIR};$<$<BOOL:${HDF5_ENABLE_PARALLEL}>:${MPI_C_INCLUDE_DIRS}>")
# Set C properties and link libraries
TARGET_C_PROPERTIES (${H5COPY_TOOL_PLUGIN_LIB_TARGET} SHARED)
target_link_libraries (${H5COPY_TOOL_PLUGIN_LIB_TARGET} PRIVATE ${HDF5_LIBSH_TARGET})
# Set library options for the plugin
H5_SET_LIB_OPTIONS (${H5COPY_TOOL_PLUGIN_LIB_TARGET} ${H5COPY_TOOL_PLUGIN_LIB_NAME} SHARED "LIB")
#-----------------------------------------------------------------------------
@@ -22,7 +33,7 @@ if (BUILD_SHARED_LIBS)
clang_format (HDF5_TOOLS_TEST_H5COPY_PLUGIN_FORMAT ${H5COPY_TOOL_PLUGIN_LIB_TARGET})
endif ()
# make plugins dir
# Make plugins directory for output
file (MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/plugins")
#-----------------------------------------------------------------------------
@@ -38,6 +49,7 @@ if (BUILD_SHARED_LIBS)
)
endif ()
# If tool and serial tests are enabled, include test configuration
if (HDF5_TEST_TOOLS AND HDF5_TEST_SERIAL)
include (CMakeTests.cmake)
endif ()
+5
View File
@@ -1,3 +1,8 @@
# CMake configuration for building and testing the h5diff tool
# Configures dynamic plugin library for h5diff if shared builds are enabled
# Sets up include directories, linking, and formatting for plugin targets
# Includes test scripts for h5diff if test tools are enabled
cmake_minimum_required (VERSION 3.18)
project (HDF5_TOOLS_TEST_H5DIFF C)
+5
View File
@@ -1,3 +1,8 @@
# CMake configuration for building and testing the h5dump tool
# Configures dynamic plugin library for h5dump if shared builds are enabled
# Sets up include directories, linking, and formatting for plugin targets
# Includes test scripts for h5dump, PBITS, VDS, and XML if test tools and serial tests are enabled
cmake_minimum_required (VERSION 3.18)
project (HDF5_TOOLS_TEST_H5DUMP C)
@@ -1,6 +1,11 @@
cmake_minimum_required (VERSION 3.18)
project (HDF5_TOOLS_TEST_H5FC C)
# CMake configuration for building and testing the h5format_convert tool
# Adds test executable for h5fc_chk_idx with proper include, linking, and formatting
# Includes test scripts if test tools and serial tests are enabled
# Supports both static and shared builds
# --------------------------------------------------------------------
# Add the h5format_convert test executables
# --------------------------------------------------------------------
+5
View File
@@ -1,3 +1,8 @@
# CMake configuration for building and testing the h5import tool
# Adds test executable for h5importtest with proper include, linking, and formatting
# Includes test scripts if test tools and serial tests are enabled
# Supports both static and shared builds
cmake_minimum_required (VERSION 3.18)
project (HDF5_TOOLS_TEST_H5IMPORT C)
+5
View File
@@ -1,3 +1,8 @@
# CMake configuration for building and testing the h5jam tool
# Adds test executables for getub and tellub, with proper include/linking/formatting
# Includes test scripts if test tools and serial tests are enabled
# Supports both static and shared builds
cmake_minimum_required (VERSION 3.18)
project (HDF5_TOOLS_TEST_H5JAM C)
+5
View File
@@ -1,6 +1,11 @@
cmake_minimum_required (VERSION 3.18)
project (HDF5_TOOLS_TEST_H5LS C)
# CMake configuration for building and testing the h5ls tool
# Configures dynamic plugin library for h5ls if shared builds are enabled
# Sets up include directories, linking, and formatting for plugin targets
# Includes test scripts for h5ls and VDS if test tools and serial tests are enabled
#-----------------------------------------------------------------------------
# If plugin library tests can be tested
#-----------------------------------------------------------------------------
+6
View File
@@ -1,3 +1,9 @@
# CMake configuration for building and testing the h5repack tool
# Adds test executables for h5repack, including SZIP detection and main test logic
# Configures plugin libraries for dynamic testing if shared builds are enabled
# Sets up include directories, linking, and formatting for all targets
# Includes test scripts if test tools and serial tests are enabled
cmake_minimum_required (VERSION 3.18)
project (HDF5_TOOLS_TEST_H5REPACK C)
+5
View File
@@ -1,3 +1,8 @@
# CMake configuration for building and testing miscellaneous HDF5 tool test executables
# Adds test binaries for h5clear, h5repart, and clear_open_chk, with proper include/linking/formatting
# Adds VDS subdirectory and includes test scripts for repart, clear, and mkgrp if serial tests are enabled
# Supports both static and shared builds, and conditional formatting
cmake_minimum_required (VERSION 3.18)
project (HDF5_TOOLS_TEST_MISC C)
+5
View File
@@ -1,3 +1,8 @@
# CMake configuration for building VDS (Virtual Dataset) generator test executables for HDF5 tools
# Defines a macro to add generator executables with proper include directories, linking, and formatting
# Lists all generator source files and iterates to create targets for each
# Supports both static and shared builds, and conditional formatting
cmake_minimum_required (VERSION 3.18)
project (HDF5_TOOLS_TEST_MISC_VDS C)
+5
View File
@@ -1,3 +1,8 @@
# CMake configuration for building and testing HDF5 performance test tools
# Configures build, linking, formatting, and test rules for various performance executables
# Supports static/shared builds and conditional test/formatting targets
# Tools covered: chunk, iopipe, chunk_cache, overhead, perf_meta, zip_perf
# Includes logic for ZLIB/NG support and test inclusion
cmake_minimum_required (VERSION 3.18)
project (HDF5_TOOLS_TEST_PERFORM C)
+3
View File
@@ -1,3 +1,6 @@
# CMake configuration for building and installing the HDF5 Mirror VFD utilities
# Defines build, linking, formatting, and installation rules for mirror_server and mirror_server_stop tools
# Includes support for formatting and conditional build options
cmake_minimum_required (VERSION 3.18)
project (HDF5_UTILS_MIRRORVFD C)