/** \page cmake-presets Building with CMake Presets

Navigate back: \ref index "Main" / \ref Cookbook
<hr>

\section sec_cmake_presets_build Building HDF5 with CMake

\par Problem
You want to build HDF5 with CMake, but there are so many options to consider.

\par Solution
CMake introduced presets in version 3.19. HDF Group provides a
<a href="https://\SRCURL/CMakePresets.json"><tt>CMakePresets.json</tt></a>,
requiring CMake 3.26,
that will build HDF5 with the options for building a typical shared library with
the common languages for a platform. The features include building the tools, examples,
plugins, and the shared and static libraries.

\par Discussion
The <a href="https://\SRCURL/CMakePresets.json"><tt>CMakePresets.json</tt></a> file is
located in the root directory of the HDF5 source. It is
from here you will execute the cmake command to build HDF5. The following example shows
how to build HDF5 with the
<a href="https://\SRCURL/CMakePresets.json"><tt>CMakePresets.json</tt></a> file:
\li     change directory to the hdf5 source folder
\li     execute <code>cmake --workflow --preset ci-StdShar-<compiler-type> --fresh</code><br />
          where "<compiler-type>" is  GNUC or MSVC or Clang

The above example will create a "build" folder in the source parent directory, which
will contain the results of the build, including installation package files.

The CMakePresets.json files created by HDF Group are intended to be used with the Ninja build system,
which may need to be installed separately on some platforms.

\par See Also
See CMake documentation for details on presets:
\li      https://cmake.org/cmake/help/latest/manual/cmake-presets.7.html

\subsection subsec_cmake_presets_build_static CMake Presets Use Case: Static Library and Tools

\par Problem
I want to build the HDF5 library statically and include the tools.

\par Solution
Static libraries can be built with zlib and libaec - but cannot be
built with plugins. Java JNI bindings require shared libraries.

Create a CMakeUserPresets.json file with the following content:
\code
{
  "version": 6,
  "cmakeMinimumRequired": {
    "major": 3,
    "minor": 25,
    "patch": 0
  },
  "configurePresets": [
    {
      "name": "my-Static-Tools",
      "hidden": true,
      "description": "Build HDF5 with static library and tools",
      "inherits": ["ci-base", "ci-CompressionVars", "ci-StdExamples"],
      "cacheVariables": {
        "HDF_PACKAGE_NAMESPACE": {"type": "STRING", "value": "hdf5::"},
        "HDF5_BUILD_SHARED_LIBS": "OFF",
        "HDF5_BUILD_TOOLS": "ON",
        "HDF5_ENABLE_ZLIB_SUPPORT": "ON",
        "HDF5_ENABLE_LIBAEC": "ON",
        "HDF5_ENABLE_PLUGIN_SUPPORT": "OFF"
      }
    },
    {
      "name": "my-Static-Tools-MSVC",
      "description": "MSVC Standard Config for x64 (Release)",
      "inherits": [
        "ci-x64-Release-MSVC",
        "ci-CPP",
        "my-Static-Tools"
      ]
    },
    {
      "name": "my-Static-Tools-Clang",
      "description": "Clang Standard Config for x64 (Release)",
      "inherits": [
        "ci-x64-Release-Clang",
        "ci-CPP",
        "ci-Fortran",
        "my-Static-Tools"
      ]
    },
    {
      "name": "my-Static-Tools-GNUC",
      "description": "GNUC Standard Config for x64 (Release)",
      "inherits": [
        "ci-x64-Release-GNUC",
        "ci-CPP",
        "ci-Fortran",
        "my-Static-Tools"
      ]
    },
    {
      "name": "my-Static-Tools-macos-GNUC",
      "description": "GNUC Standard Config for macos (Release)",
      "inherits": [
        "ci-macos-Release-GNUC",
        "ci-CPP",
        "my-Static-Tools"
      ]
    }
  ],
  "buildPresets": [
    {
      "name": "my-Static-Tools-MSVC",
      "description": "MSVC Standard Build for x64 (Release)",
      "configurePreset": "my-Static-Tools-MSVC",
      "inherits": [
        "ci-x64-Release-MSVC"
      ]
    },
    {
      "name": "my-Static-Tools-Clang",
      "description": "Clang Standard Build for x64 (Release)",
      "configurePreset": "my-Static-Tools-Clang",
      "inherits": [
        "ci-x64-Release-Clang"
      ]
    },
    {
      "name": "my-Static-Tools-GNUC",
      "description": "GNUC Standard Build for x64 (Release)",
      "configurePreset": "my-Static-Tools-GNUC",
      "inherits": [
        "ci-x64-Release-GNUC"
      ]
    },
    {
      "name": "my-Static-Tools-macos-GNUC",
      "description": "GNUC Standard Build for macos (Release)",
      "configurePreset": "my-Static-Tools-macos-GNUC",
      "verbose": true,
      "inherits": [
        "ci-macos-Release-GNUC"
      ]
    }
  ],
  "testPresets": [
    {
      "name": "my-Static-Tools-MSVC",
      "configurePreset": "my-Static-Tools-MSVC",
      "inherits": [
        "ci-x64-Release-MSVC"
      ]
    },
    {
      "name": "my-Static-Tools-Clang",
      "configurePreset": "my-Static-Tools-Clang",
      "inherits": [
        "ci-x64-Release-Clang"
      ]
    },
    {
      "name": "my-Static-Tools-GNUC",
      "configurePreset": "my-Static-Tools-GNUC",
      "inherits": [
        "ci-x64-Release-GNUC"
      ]
    },
    {
      "name": "my-Static-Tools-macos-GNUC",
      "configurePreset": "my-Static-Tools-macos-GNUC",
      "inherits": [
        "ci-macos-Release-GNUC"
      ]
    }
  ],
  "packagePresets": [
    {
      "name": "my-Static-Tools-MSVC",
      "configurePreset": "my-Static-Tools-MSVC",
      "inherits": "ci-x64-Release-MSVC"
    },
    {
      "name": "my-Static-Tools-Clang",
      "configurePreset": "my-Static-Tools-Clang",
      "inherits": "ci-x64-Release-Clang"
    },
    {
      "name": "my-Static-Tools-GNUC",
      "configurePreset": "my-Static-Tools-GNUC",
      "inherits": "ci-x64-Release-GNUC"
    },
    {
      "name": "my-Static-Tools-macos-GNUC",
      "configurePreset": "my-Static-Tools-macos-GNUC",
      "inherits": "ci-macos-Release-GNUC"
    }
  ],
  "workflowPresets": [
    {
      "name": "my-Static-Tools-MSVC",
      "steps": [
        {"type": "configure", "name": "my-Static-Tools-MSVC"},
        {"type": "build", "name": "my-Static-Tools-MSVC"},
        {"type": "test", "name": "my-Static-Tools-MSVC"},
        {"type": "package", "name": "my-Static-Tools-MSVC"}
      ]
    },
    {
      "name": "my-StdShar-Clang",
      "steps": [
        {"type": "configure", "name": "my-Static-Tools-Clang"},
        {"type": "build", "name": "my-Static-Tools-Clang"},
        {"type": "test", "name": "my-Static-Tools-Clang"},
        {"type": "package", "name": "my-Static-Tools-Clang"}
      ]
    },
    {
      "name": "my-StdShar-GNUC",
      "steps": [
        {"type": "configure", "name": "my-Static-Tools-GNUC"},
        {"type": "build", "name": "my-Static-Tools-GNUC"},
        {"type": "test", "name": "my-Static-Tools-GNUC"},
        {"type": "package", "name": "my-Static-Tools-GNUC"}
      ]
    },
    {
      "name": "my-Static-Tools-macos-GNUC",
      "steps": [
        {"type": "configure", "name": "my-Static-Tools-macos-GNUC"},
        {"type": "build", "name": "my-Static-Tools-macos-GNUC"},
        {"type": "test", "name": "my-Static-Tools-macos-GNUC"},
        {"type": "package", "name": "my-Static-Tools-macos-GNUC"}
      ]
    }
  ]
}
\endcode

\par Discussion
The above example shows how to build HDF5 with a static library and tools. The
CMakeUserPresets.json file is located in the root directory of the HDF5 source. It is
from here you execute:
\li     <code>cmake --workflow --preset my-Static-Tools-<compiler-type> --fresh</code><br />
          where "<compiler-type>" is  GNUC or MSVC or Clang or macos-GNUC

If you don't need cross-compiler or cross-platform support, you can remove the
compiler-specific presets and use the "my-Static-Tools" preset directly.

\par See Also
\ref subsec_cmake_presets_files_json_details for details on the default settings for the
StdShar presets.

\subsection subsec_cmake_presets_build_s3 CMake Presets Use Case: S3 on linux

\par Problem
I want to build the HDF5 library with the ros3 vfd.

\par Solution
Create a CMakeUserPresets.json file with the following content:
\code
{
  "version": 6,
  "cmakeMinimumRequired": {
    "major": 3,
    "minor": 25,
    "patch": 0
  },
  "configurePresets": [
    {
      "name": "my-linux-S3",
      "hidden": true,
      "description": "Build HDF5 with library and tools for S3",
      "inherits": ["ci-base", "ci-S3", "ci-CompressionVars", "ci-StdExamples", "ci-StdPlugins"],
      "cacheVariables": {
        "HDF_PACKAGE_NAMESPACE": {"type": "STRING", "value": "hdf5::"},
        "HDF5_BUILD_SHARED_LIBS": "ON",
        "HDF5_BUILD_TOOLS": "ON",
        "HDF5_ENABLE_ZLIB_SUPPORT": "ON",
        "HDF5_ENABLE_LIBAEC": "ON",
        "HDF5_ENABLE_PLUGIN_SUPPORT": "ON"
      }
    },
    {
      "name": "my-linux-S3-Clang",
      "description": "Clang Standard Config for x64 (Release)",
      "inherits": [
        "ci-x64-Release-Clang",
        "ci-CPP",
        "ci-Fortran",
        "my-linux-S3"
      ]
    },
    {
      "name": "my-linux-S3-GNUC",
      "description": "GNUC Standard Config for x64 (Release)",
      "inherits": [
        "ci-x64-Release-GNUC",
        "ci-CPP",
        "ci-Fortran",
        "my-linux-S3"
      ]
    }
  ],
  "buildPresets": [
    {
      "name": "my-linux-S3-Clang",
      "description": "Clang Standard Build for x64 (Release)",
      "configurePreset": "my-linux-S3-Clang",
      "inherits": [
        "ci-x64-Release-Clang"
      ]
    },
    {
      "name": "my-linux-S3-GNUC",
      "description": "GNUC Standard Build for x64 (Release)",
      "configurePreset": "my-linux-S3-GNUC",
      "inherits": [
        "ci-x64-Release-GNUC"
      ]
    }
  ],
  "testPresets": [
    {
      "name": "my-linux-S3-Clang",
      "configurePreset": "my-linux-S3-Clang",
      "inherits": [
        "ci-x64-Release-Clang"
      ]
    },
    {
      "name": "my-linux-S3-GNUC",
      "configurePreset": "my-linux-S3-GNUC",
      "inherits": [
        "ci-x64-Release-GNUC"
      ]
    }
  ],
  "packagePresets": [
    {
      "name": "my-linux-S3-Clang",
      "configurePreset": "my-linux-S3-Clang",
      "inherits": "ci-x64-Release-Clang"
    },
    {
      "name": "my-linux-S3-GNUC",
      "configurePreset": "my-linux-S3-GNUC",
      "inherits": "ci-x64-Release-GNUC"
    }
  ],
  "workflowPresets": [
    {
      "name": "my-linux-S3-Clang",
      "steps": [
        {"type": "configure", "name": "my-linux-S3-Clang"},
        {"type": "build", "name": "my-linux-S3-Clang"},
        {"type": "test", "name": "my-linux-S3-Clang"},
        {"type": "package", "name": "my-linux-S3-Clang"}
      ]
    },
    {
      "name": "my-linux-S3-GNUC",
      "steps": [
        {"type": "configure", "name": "my-linux-S3-GNUC"},
        {"type": "build", "name": "my-linux-S3-GNUC"},
        {"type": "test", "name": "my-linux-S3-GNUC"},
        {"type": "package", "name": "my-linux-S3-GNUC"}
      ]
    }
  ]
}
\endcode

\par Discussion
The above example shows how to build HDF5 with a static library and tools. The
CMakeUserPresets.json file is located in the root directory of the HDF5 source. It is
from here you execute:
\li     <code>cmake --workflow --preset my-S3-<compiler-type> --fresh</code><br />
          where "<compiler-type>" is  GNUC or Clang or macos-GNUC

If you don't need cross-compiler support, you can remove the
compiler-specific presets and use the "my-linux-S3" preset directly.

\par See Also
\ref subsec_cmake_presets_files_json_details for details on the default settings for the
StdShar presets.

\subsection subsec_cmake_presets_build_par CMake Presets Use Case: Parallel Library

\par Problem
I want to build the HDF5 library with a parallel compiler.

\par Solution
Create a CMakeUserPresets.json file with the following content:
\code
{
  "version": 6,
  "cmakeMinimumRequired": {
    "major": 3,
    "minor": 25,
    "patch": 0
  },
  "configurePresets": [
    {
      "name": "my-linux-par",
      "hidden": true,
      "description": "Build HDF5 with library and tools using parallel compiler",
      "inherits": ["ci-base", "ci-CompressionVars", "ci-StdExamples"],
      "environment": {
        "CC": "mpicc"
      },
      "cacheVariables": {
        "HDF_PACKAGE_NAMESPACE": {"type": "STRING", "value": "hdf5::"},
        "HDF5_BUILD_SHARED_LIBS": "ON",
        "HDF5_BUILD_TOOLS": "ON",
        "MPIEXEC_NUMPROC_FLAG": "-n",
        "MPIEXEC_MAX_NUMPROCS": "2",
        "HDF5_ENABLE_PARALLEL": "ON",
        "HDF5_ENABLE_SUBFILING_VFD": "OFF",
        "HDF5_ENABLE_ZLIB_SUPPORT": "ON",
        "HDF5_ENABLE_LIBAEC": "ON",
        "HDF5_ENABLE_PLUGIN_SUPPORT": "OFF"
      }
    },
    {
      "name": "my-linux-par-mpich",
      "description": "mpich Standard Config for x64 (Release)",
      "inherits": [
        "ci-x64-Release-GNUC",
        "my-linux-par"
      ]
    }
  ],
  "buildPresets": [
    {
      "name": "my-linux-par-mpich",
      "description": "mpich Standard Build for x64 (Release)",
      "configurePreset": "my-linux-par-mpich",
      "inherits": [
        "ci-x64-Release-GNUC"
      ]
    }
  ],
  "testPresets": [
    {
      "name": "my-linux-serial-mpich",
      "configurePreset": "my-linux-par-mpich",
      "inherits": [
        "ci-x64-Release-GNUC"
      ],
      "filter": {
        "exclude": {
          "name": "MPI_TEST"
        }
      }
    },
    {
      "name": "my-linux-par-mpich",
      "configurePreset": "my-linux-par-mpich",
      "inherits": [
        "ci-x64-Release-GNUC"
      ],
      "filter": {
        "include": {
          "name": "MPI_TEST"
        }
      }
    }
  ],
  "packagePresets": [
    {
      "name": "my-linux-par-mpich",
      "configurePreset": "my-linux-par-mpich",
      "inherits": "ci-x64-Release-GNUC"
    }
  ],
  "workflowPresets": [
    {
      "name": "my-linux-par-mpich",
      "steps": [
        {"type": "configure", "name": "my-linux-par-mpich"},
        {"type": "build", "name": "my-linux-par-mpich"},
        {"type": "test", "name": "my-linux-serial-mpich"},
        {"type": "test", "name": "my-linux-par-mpich"},
        {"type": "package", "name": "my-linux-par-mpich"}
      ]
    }
  ]
}
\endcode

\par Discussion
The above example shows how to build HDF5 with a parallel compiler. The
CMakeUserPresets.json file is located in the root directory of the HDF5 source. It is
from here you execute:
\li     <code>cmake --workflow --preset my-linux-par-GNUC --fresh</code>

\par See Also
\ref subsec_cmake_presets_files_json_details for details on the default settings for the
StdShar presets.

\subsection subsec_cmake_presets_build_java CMake Presets Use Case: Java Bindings

\par Problem
I want to build HDF5 with Java bindings for use in Java applications.

\par Solution
HDF5 provides two Java implementation options with the same API:
\li <strong>JNI (Java Native Interface)</strong> - Default, works with Java 8+, production-stable
\li <strong>FFM (Foreign Function & Memory)</strong> - Optional, requires Java 25+, modern native access

<em>Note: FFM will become the default in the next major HDF5 release as Java 25+ adoption increases.</em>

\par JNI Build (Default - Java 8+)
The standard presets automatically include JNI bindings when Java is detected:
\code
cmake --workflow --preset ci-StdShar-GNUC --fresh
\endcode

This builds shared libraries with C++, Fortran, and Java JNI bindings. Java JNI requires
shared libraries and cannot be built with static libraries.

\par FFM Build (Java 25+)
For Java 25+ with FFM bindings, you need:
\li Java 25 or later (tested with Java 25 - Oracle distribution recommended)
\li jextract tool installed (download from https://jdk.java.net/jextract/)
\li Set JEXTRACT_HOME environment variable: <code>export JEXTRACT_HOME=$HOME/tools/jextract-25</code>

\code
cmake --workflow --preset ci-StdShar-GNUC-FFM --fresh
\endcode

FFM bindings are generated automatically at CMake configure time and placed in
the <code>build/java/jsrc/</code> directory. They are never committed to the repository
and are always fresh for each build.

\par JNI vs FFM Comparison
<table>
<tr><th>Feature</th><th>JNI (Default)</th><th>FFM (Future Default)</th></tr>
<tr><td>Java Version</td><td>Java 8+</td><td>Java 25+</td></tr>
<tr><td>Build Requirements</td><td>Java JDK only</td><td>Java JDK + jextract tool</td></tr>
<tr><td>Library Type</td><td>Shared only</td><td>Shared</td></tr>
<tr><td>Generation</td><td>Pre-compiled native code</td><td>Auto-generated at configure time</td></tr>
<tr><td>Performance</td><td>Mature, optimized</td><td>Modern, Project Panama</td></tr>
<tr><td>API Compatibility</td><td colspan="2">Identical - same hdf.hdf5lib.* package</td></tr>
</table>

\par Maven Artifacts
To build platform-specific Maven artifacts for deployment:
\code
# JNI artifacts (default) - minimal build for artifacts only
cmake --workflow --preset ci-MinShar-GNUC-Maven --fresh

# FFM artifacts (Java 25+) - minimal build for artifacts only
cmake --workflow --preset ci-MinShar-GNUC-Maven-FFM --fresh

# Snapshot versions for development (adds -SNAPSHOT suffix)
cmake --workflow --preset ci-MinShar-GNUC-Maven-Snapshot --fresh
\endcode

Maven artifacts are deployed to:
\li GitHub Packages: https://maven.pkg.github.com/HDFGroup/hdf5
\li Maven Central (coming soon)

\par Platform Support
Both JNI and FFM implementations support:
\li Linux x86_64
\li Windows x86_64
\li macOS x86_64
\li macOS aarch64 (Apple Silicon)

Each platform requires a separate build with platform-specific classifiers in Maven artifacts.

\par Testing Java Bindings
After building, test the Java bindings:
\code
# All Java tests (JNI or FFM depending on build)
ctest -R "Java" -V

# FFM-specific tests (if FFM build)
ctest -R "JUnitFFM" -V
\endcode

\par See Also
\li \ref subsec_maven_artifacts for using pre-built Maven artifacts
\li release_docs/INSTALL_CMake.txt Section XIII for Java FFM testing details
\li release_docs/README.md for comprehensive Java documentation
\li HDF5Examples/JAVA for Java example programs

\section sec_cmake_presets_files CMake Presets
Presets are a way to store a set of
CMake cache variables in a file. This allows you to save and load a set of
variables that you use frequently. Presets can be used to save the configuration
of a project for different build configurations, such as Debug and Release.

CMake supports two main files, <strong>CMakePresets.json</strong> and <strong>CMakeUserPresets.json</strong>, that
allow users to specify common configure options and share them with others. CMake
also supports files included with the include field.

\subsection subsec_cmake_presets_files_json CMakePresets.json
HDF Group provides a <a href="https://\SRCURL/CMakePresets.json"><tt>CMakePresets.json</tt></a>
file, used by the github workflows, that
includes the following StdShar presets:
\li ci-StdShar-MSVC - use MSVC compiler
\li ci-StdShar-Clang - use Clang compiler
\li ci-StdShar-macos-Clang -Apple Clang compiler
\li ci-StdShar-GNUC - use GNU compiler
\li ci-StdShar-macos-GNUC - use Apple GNU compiler
\li ci-StdShar-GNUC-S3 - use GNU compiler with S3 support
\li ci-StdShar-Intel - use Intel OneAPI compiler
\li ci-StdShar-win-Intel - use Intel OneAPI compiler on Windows

The StdShar presets are used by the GitHub workflows to build and test the HDF5
library on different platforms and compilers. The
<a href="https://\SRCURL/CMakePresets.json"><tt>CMakePresets.json</tt></a> file is
located in the root directory of the HDF5 repository. The StdShar presets inherit
the following settings:
\li  ci-CPP - enables C++ support
\li  ci-Fortran - enables Fortran support, except on macOS
\li  ci-Java - enables Java support
\li  ci-StdShar - described below

The ci-StdShar preset inherits the following settings:
\li  ci-StdCompression
\li  ci-StdExamples
\li  ci-StdPlugins

See the <a href="https://\SRCURL/CMakePresets.json"><tt>CMakePresets.json</tt></a>
file for the complete list of presets and settings. The
\ref subsec_cmake_presets_files_json_details section provides an overview of the default
settings for the StdShar presets.



\subsection subsec_cmake_presets_files_json_details Default CMakePresets.json Settings
The ci-StdShar preset sets the following cache variables:
\li "HDF_PACKAGE_NAMESPACE": {"type": "STRING", "value": "hdf5::"}
\li "HDF5_INSTALL_MOD_FORTRAN": "NO"
\li "HDF5_ENABLE_ALL_WARNINGS": "ON"
\li "HDF5_MINGW_STATIC_GCC_LIBS": "ON"
\li "HDF_TEST_EXPRESS": "2"

The ci-StdExamples preset inherits the following settings:
\li  ci-base
\li  ci-base-tgz

The ci-StdExamples preset sets the following cache variables:
\li  "HDF5_PACK_EXAMPLES": "ON"
\li  "EXAMPLES_DOWNLOAD": "ON"

The ci-StdPlugins preset inherits the following settings:
\li  ci-base-plugins
\li  ci-PluginsVars
\li  ci-base-tgz

The ci-StdPlugins preset sets the following cache variables:
\li  "PLUGIN_USE_LOCALCONTENT": "OFF"

The ci-PluginsVars preset sets the following cache variables (see the https://\SRCURL/config/CacheURLs.cmake file for the latest versions):
\li  "HDF5_ENABLE_PLUGIN_SUPPORT": "ON"
\li  "H5PL_ALLOW_EXTERNAL_SUPPORT": {"type": "STRING", "value": "TGZ"}
\li  "PLUGIN_PACKAGE_NAME": {"type": "STRING", "value": "pl"}
\li  "PLUGIN_TGZ_ORIGPATH": {"type": "STRING", "value": "hdf5_plugins download"}
\li  "PLUGIN_TGZ_NAME": {"type": "STRING", "value": "hdf5_plugins-master.tar.gz"}

The ci-base-plugins preset sets the following cache variables (see the https://\SRCURL/config/CacheURLs.cmake file for the latest versions):
\li  "BITGROOM_PACKAGE_NAME": {"type": "STRING", "value": "bitgroom"},
\li  "BITROUND_PACKAGE_NAME": {"type": "STRING", "value": "bitround"},
\li  "BSHUF_TGZ_NAME": {"type": "STRING", "value": "bitshuffle-x.y.z.tar.gz"}
\li  "BSHUF_PACKAGE_NAME": {"type": "STRING", "value": "bshuf"}
\li  "BLOSC_TGZ_NAME": {"type": "STRING", "value": "c-blosc-x.y.z.tar.gz"}
\li  "BLOSC_PACKAGE_NAME": {"type": "STRING", "value": "blosc"}
\li  "BLOSC_ZLIB_TGZ_NAME": {"type": "STRING", "value": "zlib-x.y.z.tar.gz"}
\li  "BLOSC_ZLIB_PACKAGE_NAME": {"type": "STRING", "value": "zlib"}
\li  "BLOSC2_TGZ_NAME": {"type": "STRING", "value": "c-blosc2-x.y.z.tar.gz"}
\li  "BLOSC2_PACKAGE_NAME": {"type": "STRING", "value": "blosc2"}
\li  "BLOSC2_ZLIB_TGZ_NAME": {"type": "STRING", "value": "zlib-x.y.z.tar.gz"}
\li  "BLOSC2_ZLIB_PACKAGE_NAME": {"type": "STRING", "value": "zlib"}
\li  "BZ2_TGZ_NAME": {"type": "STRING", "value": "bzip2-bzip2-x.y.z.tar.gz"}
\li  "BZ2_PACKAGE_NAME": {"type": "STRING", "value": "bz2"}
\li  "FPZIP_TGZ_NAME": {"type": "STRING", "value": "fpzip-x.y.z.tar.gz"}
\li  "FPZIP_PACKAGE_NAME": {"type": "STRING", "value": "fpzip"}
\li  "JPEG_TGZ_NAME": {"type": "STRING", "value": "jpegsrc.v9e.tar.gz"}
\li  "JPEG_PACKAGE_NAME": {"type": "STRING", "value": "jpeg"}
\li  "BUILD_LZ4_LIBRARY_SOURCE": "ON"
\li  "LZ4_TGZ_NAME": {"type": "STRING", "value": "lz4-x.y.z.tar.gz"}
\li  "LZ4_PACKAGE_NAME": {"type": "STRING", "value": "lz4"}
\li  "LZF_TGZ_NAME": {"type": "STRING", "value": "liblzf-x.y.z.tar.gz"}
\li  "LZF_PACKAGE_NAME": {"type": "STRING", "value": "lzf"}
\li  "SZ_TGZ_NAME": {"type": "STRING", "value": "SZ-x.y.z.tar.gz"}
\li  "SZ_PACKAGE_NAME": {"type": "STRING", "value": "SZ"}
\li  "ZFP_TGZ_NAME": {"type": "STRING", "value": "zfp-x.y.z.tar.gz"}
\li  "ZFP_PACKAGE_NAME": {"type": "STRING", "value": "zfp"}
\li  "ZSTD_TGZ_NAME": {"type": "STRING", "value": "zstd-x.y.z.tar.gz"}
\li  "ZSTD_PACKAGE_NAME": {"type": "STRING", "value": "zstd"}

The ci-StdCompression preset inherits the following settings:
\li  ci-base-tgz
\li  ci-CompressionVars

The ci-StdCompression preset sets the following cache variables:
\li  "HDF5_PACKAGE_EXTLIBS": "ON"
\li  "HDF5_USE_ZLIB_NG": "OFF"
\li  "ZLIB_USE_LOCALCONTENT": "OFF"
\li  "LIBAEC_USE_LOCALCONTENT": "OFF"
\li  "HDF5_USE_ZLIB_STATIC": "ON"
\li  "HDF5_USE_LIBAEC_STATIC": "ON"

The ci-CompressionVars preset sets the following cache variables (see the https://\SRCURL/config/CacheURLs.cmake file for the latest versions):
\li  "ZLIB_PACKAGE_NAME": {"type": "STRING", "value": "zlib"}
\li  "ZLIB_TGZ_ORIGPATH": {"type": "STRING", "value": "zlib download"}
\li  "ZLIB_TGZ_NAME": {"type": "STRING", "value": "zlib-x.y.z.tar.gz"}
\li  "ZLIBNG_PACKAGE_NAME": {"type": "STRING", "value": "zlib-ng"}
\li  "ZLIBNG_TGZ_ORIGPATH": {"type": "STRING", "value": "zlib-ng download"}
\li  "ZLIBNG_TGZ_NAME": {"type": "STRING", "value": "x.y.z.tar.gz"}
\li  "LIBAEC_PACKAGE_NAME": {"type": "STRING", "value": "libaec"}
\li  "LIBAEC_TGZ_ORIGPATH": {"type": "STRING", "value": "libaec download"}
\li  "LIBAEC_TGZ_NAME": {"type": "STRING", "value": "libaec-x.y.z.tar.gz"}

The ci-base-tgz preset inherits the following settings:
\li  ci-base

The ci-base-tgz preset sets the following cache variables:
\li  "HDF5_ALLOW_EXTERNAL_SUPPORT": {"type": "STRING", "value": "TGZ"}
\li  "TGZPATH": {"type": "PATH", "value": "${sourceParentDir}/temp"}

The ci-base preset sets the following CMake variables:
\li  "name": "ci-base"
\li  "displayName": "Basic Config"
\li  "description": "Basic build using Ninja generator"
\li  "generator": "Ninja"
\li  "binaryDir": "${sourceParentDir}/build/${presetName}"
\li  "installDir": "${sourceParentDir}/install/${presetName}"

<hr>
Navigate back: \ref index "Main" / \ref Cookbook

*/
