summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAllen Byrne <50328838+byrnHDF@users.noreply.github.com>2023-04-26 22:56:57 (GMT)
committerGitHub <noreply@github.com>2023-04-26 22:56:57 (GMT)
commitca27cf94a2832bc7eb06975070319f827bcf4bbd (patch)
tree9870c14b6c93b93e4bee83642ffc3889f54b60d4
parent7973707c86acbf67116261952fe36cdf658435bd (diff)
downloadhdf5-ca27cf94a2832bc7eb06975070319f827bcf4bbd.zip
hdf5-ca27cf94a2832bc7eb06975070319f827bcf4bbd.tar.gz
hdf5-ca27cf94a2832bc7eb06975070319f827bcf4bbd.tar.bz2
Add support for CMakePresets and fix example download (#2817)
-rw-r--r--.gitignore1
-rw-r--r--CMakeInstallation.cmake53
-rw-r--r--CMakePresets.json237
-rw-r--r--config/cmake-presets/hidden-presets.json491
-rw-r--r--config/cmake/ConfigureChecks.cmake3
-rw-r--r--release_docs/INSTALL_CMake.txt98
-rw-r--r--release_docs/RELEASE.txt9
7 files changed, 880 insertions, 12 deletions
diff --git a/.gitignore b/.gitignore
index 3caf16a..cbaccb2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -41,3 +41,4 @@ src/H5overflow.h
src/H5version.h
/.classpath
+/CMakeUserPresets.json
diff --git a/CMakeInstallation.cmake b/CMakeInstallation.cmake
index 00ed5cd..cc7d219 100644
--- a/CMakeInstallation.cmake
+++ b/CMakeInstallation.cmake
@@ -150,18 +150,55 @@ if (HDF5_PACK_EXAMPLES)
DESTINATION ${HDF5_INSTALL_DATA_DIR}
COMPONENT hdfdocuments
)
- if (EXISTS "${HDF5_EXAMPLES_COMPRESSED_DIR}/${HDF5_EXAMPLES_COMPRESSED}")
+
+ option (EXAMPLES_USE_RELEASE_NAME "Use the released examples artifact name" OFF)
+ option (EXAMPLES_DOWNLOAD "Download to use released examples files" OFF)
+ if (EXAMPLES_DOWNLOAD)
+ if (NOT EXAMPLES_USE_LOCALCONTENT)
+ set (EXAMPLES_URL ${EXAMPLES_TGZ_ORIGPATH}/${EXAMPLES_TGZ_ORIGNAME})
+ else ()
+ set (EXAMPLES_URL ${TGZPATH}/${EXAMPLES_TGZ_ORIGNAME})
+ endif ()
+ message (VERBOSE "Examples file is ${EXAMPLES_URL}")
+ file (DOWNLOAD ${EXAMPLES_URL} ${HDF5_BINARY_DIR}/${HDF5_EXAMPLES_COMPRESSED})
+ if (EXISTS "${HDF5_BINARY_DIR}/${HDF5_EXAMPLES_COMPRESSED}")
+ execute_process(
+ COMMAND ${CMAKE_COMMAND} -E tar xzf ${HDF5_EXAMPLES_COMPRESSED}
+ WORKING_DIRECTORY ${HDF5_BINARY_DIR}
+ COMMAND_ECHO STDOUT
+ )
+ endif ()
+ set (EXAMPLES_USE_RELEASE_NAME ON CACHE BOOL "" FORCE)
+ else ()
+ if (EXISTS "${HDF5_EXAMPLES_COMPRESSED_DIR}/${HDF5_EXAMPLES_COMPRESSED}")
+ execute_process(
+ COMMAND ${CMAKE_COMMAND} -E tar xzf ${HDF5_EXAMPLES_COMPRESSED_DIR}/${HDF5_EXAMPLES_COMPRESSED}
+ WORKING_DIRECTORY ${HDF5_BINARY_DIR}
+ COMMAND_ECHO STDOUT
+ )
+ endif ()
+ endif ()
+ if (EXAMPLES_USE_RELEASE_NAME)
+ get_filename_component (EX_LAST_EXT ${HDF5_EXAMPLES_COMPRESSED} LAST_EXT)
+ if (${EX_LAST_EXT} STREQUAL ".zip")
+ get_filename_component (EX_DIR_NAME ${HDF5_EXAMPLES_COMPRESSED} NAME_WLE)
+ else ()
+ get_filename_component (EX_DIR_NAME ${HDF5_EXAMPLES_COMPRESSED} NAME_WLE)
+ get_filename_component (EX_DIR_NAME ${EX_DIR_NAME} NAME_WLE)
+ endif ()
execute_process(
- COMMAND ${CMAKE_COMMAND} -E tar xzf ${HDF5_EXAMPLES_COMPRESSED_DIR}/${HDF5_EXAMPLES_COMPRESSED}
- )
- install (
- DIRECTORY ${HDF5_BINARY_DIR}/HDF5Examples
- DESTINATION ${HDF5_INSTALL_DATA_DIR}
- USE_SOURCE_PERMISSIONS
- COMPONENT hdfdocuments
+ COMMAND ${CMAKE_COMMAND} -E rename ${EX_DIR_NAME} HDF5Examples
+ WORKING_DIRECTORY ${HDF5_BINARY_DIR}
+ COMMAND_ECHO STDOUT
)
endif ()
install (
+ DIRECTORY ${HDF5_BINARY_DIR}/HDF5Examples
+ DESTINATION ${HDF5_INSTALL_DATA_DIR}
+ USE_SOURCE_PERMISSIONS
+ COMPONENT hdfdocuments
+ )
+ install (
FILES
${HDF5_SOURCE_DIR}/release_docs/USING_CMake_Examples.txt
DESTINATION ${HDF5_INSTALL_DATA_DIR}
diff --git a/CMakePresets.json b/CMakePresets.json
new file mode 100644
index 0000000..d861b44
--- /dev/null
+++ b/CMakePresets.json
@@ -0,0 +1,237 @@
+{
+ "version": 6,
+ "include": [
+ "config/cmake-presets/hidden-presets.json"
+ ],
+ "configurePresets": [
+ {
+ "name": "ci-base-tgz",
+ "hidden": true,
+ "inherits": "ci-base",
+ "cacheVariables": {
+ "HDF5_ALLOW_EXTERNAL_SUPPORT": "NO",
+ "TGZPATH": {"type": "STRING", "value": "${sourceParentDir}/temp"}
+ }
+ },
+ {
+ "name": "ci-StdCompression",
+ "hidden": true,
+ "inherits": "ci-base-tgz",
+ "cacheVariables": {
+ "HDF5_ENABLE_Z_LIB_SUPPORT": "ON",
+ "HDF5_ENABLE_SZIP_SUPPORT": "ON",
+ "HDF5_ENABLE_SZIP_ENCODING": "ON",
+ "BUILD_ZLIB_WITH_FETCHCONTENT": "ON",
+ "ZLIB_PACKAGE_NAME": {"type": "STRING", "value": "zlib"},
+ "ZLIB_TGZ_ORIGPATH": {"type": "STRING", "value": "https://github.com/madler/zlib/releases/download/v1.2.13"},
+ "ZLIB_TGZ_ORIGNAME": {"type": "STRING", "value": "zlib-1.2.13.tar.gz"},
+ "ZLIB_USE_LOCALCONTENT": "OFF",
+ "BUILD_SZIP_WITH_FETCHCONTENT": "ON",
+ "LIBAEC_PACKAGE_NAME": {"type": "STRING", "value": "libaec"},
+ "LIBAEC_TGZ_ORIGPATH": {"type": "STRING", "value": "https://github.com/MathisRosenhauer/libaec/releases/download/v1.0.6"},
+ "LIBAEC_TGZ_ORIGNAME": {"type": "STRING", "value": "libaec-1.0.6.tar.gz"},
+ "LIBAEC_USE_LOCALCONTENT": "OFF"
+ }
+ },
+ {
+ "name": "ci-base-plugins",
+ "hidden": true,
+ "inherits": "ci-base-tgz",
+ "cacheVariables": {
+ "PLUGIN_TGZ_NAME": {"type": "STRING", "value": "hdf5_plugins-1.14.0.tar.gz"},
+ "PLUGIN_PACKAGE_NAME": {"type": "STRING", "value": "pl"},
+ "BSHUF_TGZ_NAME": {"type": "STRING", "value": "bitshuffle.tar.gz"},
+ "BSHUF_PACKAGE_NAME": {"type": "STRING", "value": "bshuf"},
+ "BLOSC_TGZ_NAME": {"type": "STRING", "value": "c-blosc.tar.gz"},
+ "BLOSC_PACKAGE_NAME": {"type": "STRING", "value": "blosc"},
+ "BLOSC_ZLIB_TGZ_NAME": {"type": "STRING", "value": "ZLib.tar.gz"},
+ "BLOSC_ZLIB_PACKAGE_NAME": {"type": "STRING", "value": "zlib"},
+ "BZ2_TGZ_NAME": {"type": "STRING", "value": "BZ2.tar.gz"},
+ "BZ2_PACKAGE_NAME": {"type": "STRING", "value": "bz2"},
+ "FPZIP_TGZ_NAME": {"type": "STRING", "value": "fpzip.tar.gz"},
+ "FPZIP_PACKAGE_NAME": {"type": "STRING", "value": "fpzip"},
+ "JPEG_TGZ_NAME": {"type": "STRING", "value": "JPEG.tar.gz"},
+ "JPEG_PACKAGE_NAME": {"type": "STRING", "value": "jpeg"},
+ "BUILD_LZ4_LIBRARY_SOURCE": "ON",
+ "LZ4_TGZ_NAME": {"type": "STRING", "value": "lz4.tar.gz"},
+ "LZ4_PACKAGE_NAME": {"type": "STRING", "value": "lz4"},
+ "LZF_TGZ_NAME": {"type": "STRING", "value": "lzf.tar.gz"},
+ "LZF_PACKAGE_NAME": {"type": "STRING", "value": "lzf"},
+ "SZ_TGZ_NAME": {"type": "STRING", "value": "szf.tar.gz"},
+ "SZ_PACKAGE_NAME": {"type": "STRING", "value": "SZ"},
+ "ZFP_TGZ_NAME": {"type": "STRING", "value": "zfp.tar.gz"},
+ "ZFP_PACKAGE_NAME": {"type": "STRING", "value": "zfp"},
+ "ZSTD_TGZ_NAME": {"type": "STRING", "value": "zstd.tar.gz"},
+ "ZSTD_PACKAGE_NAME": {"type": "STRING", "value": "zstd"}
+ }
+ },
+ {
+ "name": "ci-StdPlugins",
+ "hidden": true,
+ "inherits": ["ci-base-plugins", "ci-base-tgz"],
+ "cacheVariables": {
+ "HDF5_ENABLE_PLUGIN_SUPPORT": "ON",
+ "PLUGIN_TGZ_ORIGPATH": {"type": "STRING", "value": "https://github.com/HDFGroup/hdf5_plugins/archive/refs/tags"},
+ "PLUGIN_TGZ_ORIGNAME": {"type": "STRING", "value": "hdf5_plugins-1.14.0.tar.gz"}
+ }
+ },
+ {
+ "name": "ci-StdExamples",
+ "hidden": true,
+ "inherits": "ci-base",
+ "cacheVariables": {
+ "HDF5_PACK_EXAMPLES": "ON",
+ "HDF5_EXAMPLES_COMPRESSED": {"type": "STRING", "value": "hdf5-examples-2.0.3.tar.gz"},
+ "HDF5_EXAMPLES_COMPRESSED_DIR": {"type": "STRING", "value": "${sourceParentDir}/temp"},
+ "EXAMPLES_TGZ_ORIGPATH": {"type": "STRING", "value": "https://github.com/HDFGroup/hdf5-examples/archive/refs/tags/"},
+ "EXAMPLES_TGZ_ORIGNAME": {"type": "STRING", "value": "2.0.3.tar.gz"},
+ "EXAMPLES_DOWNLOAD": "ON"
+ }
+ },
+ {
+ "name": "ci-StdShar",
+ "hidden": true,
+ "inherits": "ci-StdCompression",
+ "cacheVariables": {
+ "HDF_PACKAGE_NAMESPACE": {"type": "STRING", "value": "hdf5::"},
+ "HDF5_INSTALL_MOD_FORTRAN": "NO",
+ "HDF5_BUILD_GENERATORS": "ON",
+ "HDF5_ENABLE_ALL_WARNINGS": "ON",
+ "HDF5_MINGW_STATIC_GCC_LIBS": "ON",
+ "HDF_TEST_EXPRESS": "2"
+ }
+ },
+ {
+ "name": "ci-StdShar-MSVC",
+ "description": "MSVC Standard Config for x64 (Release)",
+ "inherits": [
+ "ci-x64-Release-MSVC",
+ "ci-CPP",
+ "ci-Fortran",
+ "ci-Java",
+ "ci-StdShar",
+ "ci-StdExamples"
+ ]
+ },
+ {
+ "name": "ci-StdShar-Clang",
+ "description": "Clang Standard Config for x64 (Release)",
+ "inherits": [
+ "ci-x64-Release-Clang",
+ "ci-CPP",
+ "ci-Fortran",
+ "ci-Java",
+ "ci-StdShar",
+ "ci-StdExamples"
+ ]
+ },
+ {
+ "name": "ci-StdShar-GNUC",
+ "description": "GNUC Standard Config for x64 (Release)",
+ "inherits": [
+ "ci-x64-Release-GNUC",
+ "ci-CPP",
+ "ci-Fortran",
+ "ci-Java",
+ "ci-StdShar",
+ "ci-StdExamples"
+ ]
+ }
+ ],
+ "buildPresets": [
+ {
+ "name": "ci-StdShar-MSVC",
+ "description": "MSVC Standard Build for x64 (Release)",
+ "configurePreset": "ci-StdShar-MSVC",
+ "inherits": [
+ "ci-x64-Release-MSVC"
+ ]
+ },
+ {
+ "name": "ci-StdShar-Clang",
+ "description": "Clang Standard Build for x64 (Release)",
+ "configurePreset": "ci-StdShar-Clang",
+ "inherits": [
+ "ci-x64-Release-Clang"
+ ]
+ },
+ {
+ "name": "ci-StdShar-GNUC",
+ "description": "GNUC Standard Build for x64 (Release)",
+ "configurePreset": "ci-StdShar-GNUC",
+ "verbose": false,
+ "inherits": [
+ "ci-x64-Release-GNUC"
+ ]
+ }
+ ],
+ "testPresets": [
+ {
+ "name": "ci-StdShar-MSVC",
+ "configurePreset": "ci-StdShar-MSVC",
+ "inherits": [
+ "ci-x64-Release-MSVC"
+ ]
+ },
+ {
+ "name": "ci-StdShar-Clang",
+ "configurePreset": "ci-StdShar-Clang",
+ "inherits": [
+ "ci-x64-Release-Clang"
+ ]
+ },
+ {
+ "name": "ci-StdShar-GNUC",
+ "configurePreset": "ci-StdShar-GNUC",
+ "inherits": [
+ "ci-x64-Release-GNUC"
+ ]
+ }
+ ],
+ "packagePresets": [
+ {
+ "name": "ci-StdShar-MSVC",
+ "configurePreset": "ci-StdShar-MSVC",
+ "inherits": "ci-x64-Release-MSVC"
+ },
+ {
+ "name": "ci-StdShar-Clang",
+ "configurePreset": "ci-StdShar-Clang",
+ "inherits": "ci-x64-Release-Clang"
+ },
+ {
+ "name": "ci-StdShar-GNUC",
+ "configurePreset": "ci-StdShar-GNUC",
+ "inherits": "ci-x64-Release-GNUC"
+ }
+ ],
+ "workflowPresets": [
+ {
+ "name": "ci-StdShar-MSVC",
+ "steps": [
+ {"type": "configure", "name": "ci-StdShar-MSVC"},
+ {"type": "build", "name": "ci-StdShar-MSVC"},
+ {"type": "test", "name": "ci-StdShar-MSVC"},
+ {"type": "package", "name": "ci-StdShar-MSVC"}
+ ]
+ },
+ {
+ "name": "ci-StdShar-Clang",
+ "steps": [
+ {"type": "configure", "name": "ci-StdShar-Clang"},
+ {"type": "build", "name": "ci-StdShar-Clang"},
+ {"type": "test", "name": "ci-StdShar-Clang"},
+ {"type": "package", "name": "ci-StdShar-Clang"}
+ ]
+ },
+ {
+ "name": "ci-StdShar-GNUC",
+ "steps": [
+ {"type": "configure", "name": "ci-StdShar-GNUC"},
+ {"type": "build", "name": "ci-StdShar-GNUC"},
+ {"type": "test", "name": "ci-StdShar-GNUC"},
+ {"type": "package", "name": "ci-StdShar-GNUC"}
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/config/cmake-presets/hidden-presets.json b/config/cmake-presets/hidden-presets.json
new file mode 100644
index 0000000..c616e7d
--- /dev/null
+++ b/config/cmake-presets/hidden-presets.json
@@ -0,0 +1,491 @@
+{
+ "version": 6,
+ "configurePresets": [
+ {
+ "name": "ci-base",
+ "displayName": "Basic Config",
+ "description": "Basic build using Ninja generator",
+ "generator": "Ninja",
+ "hidden": true,
+ "binaryDir": "${sourceParentDir}/build/${presetName}",
+ "installDir": "${sourceParentDir}/install/${presetName}"
+ },
+ {
+ "name": "ci-x64",
+ "architecture": {
+ "value": "x64",
+ "strategy": "external"
+ },
+ "hidden": true
+ },
+ {
+ "name": "ci-x86",
+ "architecture": {
+ "value": "x86",
+ "strategy": "external"
+ },
+ "hidden": true
+ },
+ {
+ "name": "ci-Debug",
+ "cacheVariables": {
+ "CMAKE_BUILD_TYPE": "Debug"
+ },
+ "hidden": true
+ },
+ {
+ "name": "ci-Release",
+ "cacheVariables": {
+ "CMAKE_BUILD_TYPE": "RelWithDebInfo",
+ "HDF5_BUILD_DOC": "ON"
+ },
+ "hidden": true
+ },
+ {
+ "name": "ci-MSVC",
+ "hidden": true,
+ "cacheVariables": {
+ "CMAKE_C_COMPILER": "cl",
+ "CMAKE_CXX_COMPILER": "cl"
+ },
+ "toolset": {
+ "value": "host=x64",
+ "strategy": "external"
+ },
+ "condition": {
+ "type": "equals",
+ "lhs": "${hostSystemName}",
+ "rhs": "Windows"
+ }
+ },
+ {
+ "name": "ci-Clang",
+ "hidden": true,
+ "cacheVariables": {
+ "CMAKE_TOOLCHAIN_FILE": "config/toolchain/clang.cmake"
+ },
+ "toolset": {
+ "value": "host=x64",
+ "strategy": "external"
+ }
+ },
+ {
+ "name": "ci-GNUC",
+ "hidden": true,
+ "cacheVariables": {
+ "CMAKE_TOOLCHAIN_FILE": "config/toolchain/gcc.cmake"
+ },
+ "condition": {
+ "type": "equals",
+ "lhs": "${hostSystemName}",
+ "rhs": "Linux"
+ },
+ "toolset": {
+ "value": "host=x64",
+ "strategy": "external"
+ }
+ },
+ {
+ "name": "ci-Intel",
+ "hidden": true,
+ "cacheVariables": {
+ "CMAKE_TOOLCHAIN_FILE": "config/toolchain/intel.cmake"
+ },
+ "toolset": {
+ "value": "host=x64",
+ "strategy": "external"
+ }
+ },
+ {
+ "name": "ci-Fortran-Clang",
+ "hidden": true,
+ "cacheVariables": {
+ "CMAKE_Fortran_COMPILER": "gfortran"
+ },
+ "condition": {
+ "type": "matches",
+ "string": "${presetName}",
+ "regex": ".*-Clang"
+ }
+ },
+ {
+ "name": "ci-Fortran",
+ "hidden": true,
+ "inherits": "ci-Fortran-Clang",
+ "cacheVariables": {
+ "HDF5_BUILD_FORTRAN": "ON"
+ },
+ "toolset": {
+ "value": "host=x64",
+ "strategy": "external"
+ }
+ },
+ {
+ "name": "ci-CPP",
+ "hidden": true,
+ "cacheVariables": {
+ "HDF5_BUILD_CPP_LIB": "ON"
+ }
+ },
+ {
+ "name": "ci-Java",
+ "hidden": true,
+ "cacheVariables": {
+ "HDF5_BUILD_JAVA": "ON"
+ },
+ "toolset": {
+ "value": "host=x64",
+ "strategy": "external"
+ }
+ },
+ {
+ "name": "ci-x64-Debug-MSVC",
+ "description": "MSVC for x64 (Debug)",
+ "hidden": true,
+ "inherits": [
+ "ci-base",
+ "ci-x64",
+ "ci-Debug",
+ "ci-MSVC"
+ ]
+ },
+ {
+ "name": "ci-x64-Release-MSVC",
+ "description": "MSVC for x64 (Release)",
+ "hidden": true,
+ "inherits": [
+ "ci-base",
+ "ci-x64",
+ "ci-Release",
+ "ci-MSVC"
+ ]
+ },
+ {
+ "name": "ci-x64-Debug-Clang",
+ "description": "Clang/LLVM for x64 (Debug)",
+ "hidden": true,
+ "inherits": [
+ "ci-base",
+ "ci-x64",
+ "ci-Debug",
+ "ci-Clang"
+ ]
+ },
+ {
+ "name": "ci-x64-Release-Clang",
+ "description": "Clang/LLVM for x64 (Release)",
+ "hidden": true,
+ "inherits": [
+ "ci-base",
+ "ci-x64",
+ "ci-Release",
+ "ci-Clang"
+ ]
+ },
+ {
+ "name": "ci-x64-Debug-GNUC",
+ "description": "GNUC for x64 (Debug)",
+ "hidden": true,
+ "inherits": [
+ "ci-base",
+ "ci-x64",
+ "ci-Debug",
+ "ci-GNUC"
+ ]
+ },
+ {
+ "name": "ci-x64-Release-GNUC",
+ "description": "GNUC for x64 (Release)",
+ "hidden": true,
+ "inherits": [
+ "ci-base",
+ "ci-x64",
+ "ci-Release",
+ "ci-GNUC"
+ ]
+ },
+ {
+ "name": "ci-x64-Debug-MSVC-asan",
+ "description": "x64-Debug-MSVC with /fsanitize=address",
+ "hidden": true,
+ "inherits": "ci-x64-Debug-MSVC",
+ "cacheVariables": {
+ "USE_SANITIZER": "Address",
+ "HDF5_ENABLE_SANITIZERS": "ON"
+ }
+ },
+ {
+ "name": "ci-x64-Debug-GNUC-asan",
+ "hidden": true,
+ "inherits": "ci-x64-Debug-GNUC",
+ "cacheVariables": {
+ "USE_SANITIZER": "Address",
+ "HDF5_ENABLE_SANITIZERS": "ON"
+ }
+ },
+ {
+ "name": "ci-x64-Debug-GNUC-tsan",
+ "hidden": true,
+ "inherits": "ci-x64-Debug-GNUC",
+ "cacheVariables": {
+ "USE_SANITIZER": "Thread",
+ "HDF5_ENABLE_SANITIZERS": "ON"
+ }
+ },
+ {
+ "name": "ci-x64-Debug-GNUC-lsan",
+ "hidden": true,
+ "inherits": "ci-x64-Debug-GNUC",
+ "cacheVariables": {
+ "USE_SANITIZER": "Leak",
+ "HDF5_ENABLE_SANITIZERS": "ON"
+ }
+ },
+ {
+ "name": "ci-x64-Debug-GNUC-ubsan",
+ "hidden": true,
+ "inherits": "ci-x64-Debug-GNUC",
+ "cacheVariables": {
+ "USE_SANITIZER": "Undefined",
+ "HDF5_ENABLE_SANITIZERS": "ON"
+ }
+ }
+ ],
+ "buildPresets": [
+ {
+ "name": "ci-base",
+ "configurePreset": "ci-base",
+ "hidden": true,
+ "verbose": true,
+ "jobs": 8
+ },
+ {
+ "name": "ci-x64-Debug-MSVC",
+ "configurePreset": "ci-x64-Debug-MSVC",
+ "hidden": true,
+ "inherits": [
+ "ci-base"
+ ]
+ },
+ {
+ "name": "ci-x64-Release-MSVC",
+ "configurePreset": "ci-x64-Release-MSVC",
+ "hidden": true,
+ "inherits": [
+ "ci-base"
+ ]
+ },
+ {
+ "name": "ci-x64-Debug-Clang",
+ "configurePreset": "ci-x64-Debug-Clang",
+ "hidden": true,
+ "inherits": [
+ "ci-base"
+ ]
+ },
+ {
+ "name": "ci-x64-Release-Clang",
+ "configurePreset": "ci-x64-Release-Clang",
+ "hidden": true,
+ "inherits": [
+ "ci-base"
+ ]
+ },
+ {
+ "name": "ci-x64-Debug-GNUC",
+ "configurePreset": "ci-x64-Debug-GNUC",
+ "hidden": true,
+ "inherits": [
+ "ci-base"
+ ]
+ },
+ {
+ "name": "ci-x64-Release-GNUC",
+ "configurePreset": "ci-x64-Release-GNUC",
+ "hidden": true,
+ "inherits": [
+ "ci-base"
+ ]
+ },
+ {
+ "name": "ci-x64-Debug-MSVC-asan",
+ "configurePreset": "ci-x64-Debug-MSVC-asan",
+ "hidden": true,
+ "inherits": [
+ "ci-base"
+ ]
+ },
+ {
+ "name": "ci-x64-Debug-GNUC-asan",
+ "configurePreset": "ci-x64-Debug-GNUC-asan",
+ "hidden": true,
+ "inherits": [
+ "ci-base"
+ ]
+ },
+ {
+ "name": "ci-x64-Debug-GNUC-tsan",
+ "configurePreset": "ci-x64-Debug-GNUC-tsan",
+ "hidden": true,
+ "inherits": [
+ "ci-base"
+ ]
+ },
+ {
+ "name": "ci-x64-Debug-GNUC-lsan",
+ "configurePreset": "ci-x64-Debug-GNUC-lsan",
+ "hidden": true,
+ "inherits": [
+ "ci-base"
+ ]
+ },
+ {
+ "name": "ci-x64-Debug-GNUC-ubsan",
+ "configurePreset": "ci-x64-Debug-GNUC-ubsan",
+ "hidden": true,
+ "inherits": [
+ "ci-base"
+ ]
+ }
+ ],
+ "testPresets": [
+ {
+ "name": "ci-base",
+ "configurePreset": "ci-base",
+ "output": {
+ "outputOnFailure": false,
+ "shortProgress": true,
+ "verbosity": "verbose"
+ },
+ "hidden": true,
+ "execution": {
+ "noTestsAction": "error",
+ "timeout": 180,
+ "jobs": 8
+ }
+ },
+ {
+ "name": "ci-x64-Debug-MSVC",
+ "configurePreset": "ci-x64-Debug-MSVC",
+ "hidden": true,
+ "inherits": [
+ "ci-base"
+ ]
+ },
+ {
+ "name": "ci-x64-Release-MSVC",
+ "configurePreset": "ci-x64-Release-MSVC",
+ "hidden": true,
+ "inherits": [
+ "ci-base"
+ ]
+ },
+ {
+ "name": "ci-x64-Debug-Clang",
+ "configurePreset": "ci-x64-Debug-Clang",
+ "hidden": true,
+ "inherits": [
+ "ci-base"
+ ]
+ },
+ {
+ "name": "ci-x64-Release-Clang",
+ "configurePreset": "ci-x64-Release-Clang",
+ "hidden": true,
+ "inherits": [
+ "ci-base"
+ ]
+ },
+ {
+ "name": "ci-x64-Debug-GNUC",
+ "configurePreset": "ci-x64-Debug-GNUC",
+ "hidden": true,
+ "inherits": [
+ "ci-base"
+ ]
+ },
+ {
+ "name": "ci-x64-Release-GNUC",
+ "configurePreset": "ci-x64-Release-GNUC",
+ "hidden": true,
+ "inherits": [
+ "ci-base"
+ ]
+ },
+ {
+ "name": "ci-x64-Debug-MSVC-asan",
+ "configurePreset": "ci-x64-Debug-MSVC-asan",
+ "hidden": true,
+ "inherits": [
+ "ci-base"
+ ]
+ },
+ {
+ "name": "ci-x64-Debug-GNUC-asan",
+ "configurePreset": "ci-x64-Debug-GNUC-asan",
+ "hidden": true,
+ "inherits": [
+ "ci-base"
+ ]
+ },
+ {
+ "name": "ci-x64-Debug-GNUC-tsan",
+ "configurePreset": "ci-x64-Debug-GNUC-tsan",
+ "hidden": true,
+ "inherits": [
+ "ci-base"
+ ]
+ },
+ {
+ "name": "ci-x64-Debug-GNUC-lsan",
+ "configurePreset": "ci-x64-Debug-GNUC-lsan",
+ "hidden": true,
+ "inherits": [
+ "ci-base"
+ ]
+ },
+ {
+ "name": "ci-x64-Debug-GNUC-ubsan",
+ "configurePreset": "ci-x64-Debug-GNUC-ubsan",
+ "inherits": [
+ "ci-base"
+ ]
+ }
+ ],
+ "packagePresets": [
+ {
+ "name": "ci-base",
+ "hidden": true,
+ "output": {
+ "verbose": true
+ }
+ },
+ {
+ "name": "ci-x64-Release-MSVC",
+ "configurePreset": "ci-x64-Release-MSVC",
+ "hidden": true,
+ "inherits": "ci-base",
+ "generators": [
+ "ZIP"
+ ]
+ },
+ {
+ "name": "ci-x64-Release-Clang",
+ "configurePreset": "ci-x64-Release-Clang",
+ "hidden": true,
+ "inherits": "ci-base",
+ "generators": [
+ "TGZ"
+ ]
+ },
+ {
+ "name": "ci-x64-Release-GNUC",
+ "configurePreset": "ci-x64-Release-GNUC",
+ "hidden": true,
+ "inherits": "ci-base",
+ "generators": [
+ "TGZ"
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/config/cmake/ConfigureChecks.cmake b/config/cmake/ConfigureChecks.cmake
index 869f5ea..b768928 100644
--- a/config/cmake/ConfigureChecks.cmake
+++ b/config/cmake/ConfigureChecks.cmake
@@ -131,7 +131,7 @@ CHECK_INCLUDE_FILE_CONCAT ("netdb.h" ${HDF_PREFIX}_HAVE_NETDB_H)
CHECK_INCLUDE_FILE_CONCAT ("arpa/inet.h" ${HDF_PREFIX}_HAVE_ARPA_INET_H)
if (WINDOWS)
CHECK_INCLUDE_FILE_CONCAT ("shlwapi.h" ${HDF_PREFIX}_HAVE_SHLWAPI_H)
- # Checking for StrStrIA in the library is not relaible for mingw32 to stdcall
+ # Checking for StrStrIA in the library is not reliable for mingw32 to stdcall
set (LINK_LIBS ${LINK_LIBS} "shlwapi")
endif ()
@@ -826,7 +826,6 @@ if (HDF5_BUILD_FORTRAN)
message (FATAL_ERROR "Compilation of C ${FUNCTION_NAME} - Failed")
endif ()
endmacro ()
-
set (PROG_SRC
"
#include <float.h>\n\
diff --git a/release_docs/INSTALL_CMake.txt b/release_docs/INSTALL_CMake.txt
index b9d8338..ac04855 100644
--- a/release_docs/INSTALL_CMake.txt
+++ b/release_docs/INSTALL_CMake.txt
@@ -14,6 +14,7 @@ Section VI: CMake option defaults for HDF5
Section VII: User Defined Options for HDF5 Libraries with CMake
Section VIII: User Defined Compile Flags for HDF5 Libraries with CMake
Section IX: Considerations for cross-compiling
+Section X: Using CMakePresets.json for compiling
************************************************************************
@@ -209,10 +210,10 @@ Notes: This short set of instructions is written for users who want to
5. Configure the C library, tools and tests with one of the following commands:
On Windows 32 bit
- cmake -G "Visual Studio 12 2013" -DCMAKE_BUILD_TYPE:STRING=Release -DBUILD_SHARED_LIBS:BOOL=OFF -DBUILD_TESTING:BOOL=ON -DHDF5_BUILD_TOOLS:BOOL=ON ..\hdf5-1.15."X"
+ cmake -G "Visual Studio 16 2019" -A Win32 -DCMAKE_BUILD_TYPE:STRING=Release -DBUILD_SHARED_LIBS:BOOL=OFF -DBUILD_TESTING:BOOL=ON -DHDF5_BUILD_TOOLS:BOOL=ON ..\hdf5-1.15."X"
On Windows 64 bit
- cmake -G "Visual Studio 12 2013 Win64" -DCMAKE_BUILD_TYPE:STRING=Release -DBUILD_SHARED_LIBS:BOOL=OFF -DBUILD_TESTING:BOOL=ON -DHDF5_BUILD_TOOLS:BOOL=ON ..\hdf5-1.15."X"
+ cmake -G "Visual Studio 16 2019 Win64" -A x64 -DCMAKE_BUILD_TYPE:STRING=Release -DBUILD_SHARED_LIBS:BOOL=OFF -DBUILD_TESTING:BOOL=ON -DHDF5_BUILD_TOOLS:BOOL=ON ..\hdf5-1.15."X"
On Linux and Mac
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE:STRING=Release -DBUILD_SHARED_LIBS:BOOL=OFF -DBUILD_TESTING:BOOL=ON -DHDF5_BUILD_TOOLS:BOOL=ON ../hdf5-1.15."X"
@@ -1042,6 +1043,99 @@ The HDF5 CMake variables;
HDF5_USE_PREGEN: set this to true
HDF5_USE_PREGEN_DIR: set this path to the preset H5Tinit.c file
+
+========================================================================
+X: Using CMakePresets.json for compiling
+========================================================================
+
+One problem that CMake users often face is sharing settings with other people for common
+ways to configure a project. This may be done to support CI builds, or for users who
+frequently use the same build. CMake supports two main files, CMakePresets.json and CMakeUserPresets.json,
+that allow users to specify common configure options and share them with others. CMake also supports
+files included with the include field.
+
+CMakePresets.json and CMakeUserPresets.json live in the project's root directory. They
+both have exactly the same format, and both are optional (though at least one must be
+present if --preset is specified). CMakePresets.json is meant to specify project-wide build
+details, while CMakeUserPresets.json is meant for developers to specify their own local build details.
+
+See CMake documentation for details: https://cmake.org/cmake/help/latest/manual/cmake-presets.7.html
+
+HDF-provided CMakePresets.json
+-------------------------------
+The CMakePresets.json provided by HDF requires CMake version 3.25, which supports package
+and workflow presets, and ninja build system. The top-level configuration group is intended to be
+a standard set of options to produce a package of shared and staic libraries and tools. Other configurations
+used for inheriting settings are in the included json file in "config/cmake-presets/hidden-presets.json".
+
+Available configurations presets can be displayed by executing:
+ cmake -S <path-to-source> --list-presets
+
+Using individual command presets (where <compiler-type> is GNUC or MSVC or Clang):
+ change directory to the hdf5 source folder
+ cmake --presets=ci-StdShar-<compiler-type>
+ cmake --build --presets=ci-StdShar-<compiler-type>
+ ctest --presets=ci-StdShar-<compiler-type>
+ cpack --presets=ci-StdShar-<compiler-type>
+
+
+Using the workflow preset to configure, build, test and package the standard configuration is:
+ change directory to the hdf5 source folder
+ execute "cmake --workflow --presets=ci-StdShar-<compiler-type> --fresh"
+ where <compiler-type> is GNUC or MSVC or Clang
+
+Creating your own configurations
+--------------------------------
+The quickest way is to copy CMakePresets.json to CMakeUserPresets.json and
+edit CMakeUserPresets.json configuration names from ci-* to my-*. Change the
+"configurePresets" section "inherits" field only for those that you have alternate
+options. Then change the "configurePreset" field entries in the "buildPresets",
+"testPresets", "packagePresets" sections to match your my-StdShar-<compiler-type>.
+And finally the names settings in the "workflowPresets" steps will also need the ci-* to my-* change.
+
+For instance, to change the support files to use a local directory, edit CMakeUserPresets.json:
+......
+ {
+ "name": "my-base-tgz",
+ "hidden": true,
+ "inherits": "ci-base",
+ "cacheVariables": {
+ "HDF5_ALLOW_EXTERNAL_SUPPORT": {"type": "STRING", "value": "TGZ"},
+ "TGZPATH": {"type": "STRING", "value": "${sourceParentDir}/temp"}
+ }
+ },
+ {
+ "name": "my-StdCompression",
+ "hidden": true,
+ "inherits": "my-base-tgz",
+ "cacheVariables": {
+......
+ {
+ "name": "my-StdShar",
+ "hidden": true,
+ "inherits": "my-StdCompression",
+ "cacheVariables": {
+......
+ {
+ "name": "my-StdShar-GNUC",
+ "description": "GNUC Standard Config for x64 (Release)",
+ "inherits": [
+ "ci-x64-Release-GNUC",
+ "ci-CPP",
+ "ci-Fortran",
+ "ci-Java",
+ "my-StdShar",
+ "my-StdExamples"
+ ]
+ }
+......
+
+
+Then you can change or add options for your specific case.
+
+
+
+
========================================================================
For further assistance, send email to help@hdfgroup.org
========================================================================
diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt
index 34ca003..773dbde 100644
--- a/release_docs/RELEASE.txt
+++ b/release_docs/RELEASE.txt
@@ -47,6 +47,15 @@ New Features
Configuration:
-------------
+ - Added support for CMake presets file.
+
+ CMake supports two main files, CMakePresets.json and CMakeUserPresets.json,
+ that allow users to specify common configure options and share them with others.
+ HDF added a CMakePresets.json file of a typical configuration and support
+ file, config/cmake-presets/hidden-presets.json.
+ Also added a section to INSTALL_CMake.txt with very basic explanation of the
+ process to use CMakePresets.
+
- Deprecated and removed old SZIP library in favor of LIBAEC library
LIBAEC library has been used in HDF5 binaries as the szip library of choice