From c12932865d314162c6795d605c8d8aca3f5902ef Mon Sep 17 00:00:00 2001
From: Allen Byrne <50328838+byrnHDF@users.noreply.github.com>
Date: Tue, 9 Jan 2024 11:42:45 -0600
Subject: [PATCH] Reorg and update options for doc and cmake config (#3934)

* Reorg and update options for doc and cmake config
* Correct subfiling depends
---
 CMakeLists.txt                    |  2 +-
 config/cmake/hdf5-config.cmake.in | 39 +++++++++++++++++--------------
 release_docs/INSTALL_CMake.txt    | 28 +++++++++++++++-------
 3 files changed, 42 insertions(+), 27 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 803dbffc23..9fe0b49f04 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -220,7 +220,7 @@ set (HDF5_CPP_TST_DIR          ${HDF5_SOURCE_DIR}/c++/test)
 set (HDF5_HL_SRC_DIR           ${HDF5_SOURCE_DIR}/hl)
 set (HDF5_HL_CPP_SRC_DIR       ${HDF5_SOURCE_DIR}/hl/c++)
 set (HDF5_HL_TOOLS_DIR         ${HDF5_SOURCE_DIR}/hl/tools)
-set (HDF5_TOOLS_ROOT_DIR            ${HDF5_SOURCE_DIR}/tools)
+set (HDF5_TOOLS_ROOT_DIR       ${HDF5_SOURCE_DIR}/tools)
 set (HDF5_TOOLS_SRC_DIR        ${HDF5_SOURCE_DIR}/tools/src)
 set (HDF5_TOOLS_TST_DIR        ${HDF5_SOURCE_DIR}/tools/test)
 set (HDF5_PERFORM_SRC_DIR      ${HDF5_SOURCE_DIR}/tools/src/perform)
diff --git a/config/cmake/hdf5-config.cmake.in b/config/cmake/hdf5-config.cmake.in
index 186ae670c7..b04b201fa4 100644
--- a/config/cmake/hdf5-config.cmake.in
+++ b/config/cmake/hdf5-config.cmake.in
@@ -33,39 +33,42 @@ set (${HDF5_PACKAGE_NAME}_VALID_COMPONENTS
 # User Options
 #-----------------------------------------------------------------------------
 # Languages:
+#-----------------------------------------------------------------------------
 set (${HDF5_PACKAGE_NAME}_BUILD_FORTRAN        @HDF5_BUILD_FORTRAN@)
 set (${HDF5_PACKAGE_NAME}_BUILD_CPP_LIB        @HDF5_BUILD_CPP_LIB@)
 set (${HDF5_PACKAGE_NAME}_BUILD_JAVA           @HDF5_BUILD_JAVA@)
 set (${HDF5_PACKAGE_NAME}_INSTALL_MOD_FORTRAN "@HDF5_INSTALL_MOD_FORTRAN@")
 #-----------------------------------------------------------------------------
 # Features:
-set (${HDF5_PACKAGE_NAME}_ENABLE_PARALLEL       @HDF5_ENABLE_PARALLEL@)
-set (${HDF5_PACKAGE_NAME}_PARALLEL_FILTERED_WRITES @PARALLEL_FILTERED_WRITES@)
-set (${HDF5_PACKAGE_NAME}_LARGE_PARALLEL_IO     @LARGE_PARALLEL_IO@)
+#-----------------------------------------------------------------------------
 set (${HDF5_PACKAGE_NAME}_BUILD_HL_LIB          @HDF5_BUILD_HL_LIB@)
-set (${HDF5_PACKAGE_NAME}_BUILD_DIMENSION_SCALES_WITH_NEW_REF @DIMENSION_SCALES_WITH_NEW_REF@)
-set (${HDF5_PACKAGE_NAME}_BUILD_TOOLS           @HDF5_BUILD_TOOLS@)
-set (${HDF5_PACKAGE_NAME}_BUILD_HL_GIF_TOOLS    @HDF5_BUILD_HL_GIF_TOOLS@)
+set (${HDF5_PACKAGE_NAME}_BUILD_SHARED_LIBS     @H5_ENABLE_SHARED_LIB@)
+set (${HDF5_PACKAGE_NAME}_BUILD_STATIC_LIBS     @H5_ENABLE_STATIC_LIB@)
 set (${HDF5_PACKAGE_NAME}_ENABLE_THREADSAFE     @HDF5_ENABLE_THREADSAFE@)
+set (${HDF5_PACKAGE_NAME}_ENABLE_PARALLEL       @HDF5_ENABLE_PARALLEL@)
 set (${HDF5_PACKAGE_NAME}_DEFAULT_API_VERSION  "@DEFAULT_API_VERSION@")
 set (${HDF5_PACKAGE_NAME}_ENABLE_DEPRECATED_SYMBOLS @HDF5_ENABLE_DEPRECATED_SYMBOLS@)
+set (${HDF5_PACKAGE_NAME}_BUILD_DIMENSION_SCALES_WITH_NEW_REF @DIMENSION_SCALES_WITH_NEW_REF@)
+#-----------------------------------------------------------------------------
+set (${HDF5_PACKAGE_NAME}_BUILD_TOOLS           @HDF5_BUILD_TOOLS@)
+set (${HDF5_PACKAGE_NAME}_BUILD_HL_GIF_TOOLS    @HDF5_BUILD_HL_GIF_TOOLS@)
+#-----------------------------------------------------------------------------
 set (${HDF5_PACKAGE_NAME}_ENABLE_Z_LIB_SUPPORT  @HDF5_ENABLE_Z_LIB_SUPPORT@)
 set (${HDF5_PACKAGE_NAME}_ENABLE_SZIP_SUPPORT   @HDF5_ENABLE_SZIP_SUPPORT@)
 set (${HDF5_PACKAGE_NAME}_ENABLE_SZIP_ENCODING  @HDF5_ENABLE_SZIP_ENCODING@)
-set (${HDF5_PACKAGE_NAME}_ENABLE_MAP_API        @H5_HAVE_MAP_API@)
-set (${HDF5_PACKAGE_NAME}_ENABLE_DIRECT_VFD     @H5_HAVE_DIRECT@)
-set (${HDF5_PACKAGE_NAME}_ENABLE_MIRROR_VFD     @H5_HAVE_MIRROR_VFD@)
-set (${HDF5_PACKAGE_NAME}_ENABLE_SUBFILING_VFD  @HDF5_ENABLE_SUBFILING_VFD@)
+#-----------------------------------------------------------------------------
+set (${HDF5_PACKAGE_NAME}_ENABLE_MAP_API        @HDF5_ENABLE_MAP_API@)
+set (${HDF5_PACKAGE_NAME}_ENABLE_DIRECT_VFD     @HDF5_ENABLE_DIRECT_VFD@)
+set (${HDF5_PACKAGE_NAME}_ENABLE_MIRROR_VFD     @HDF5_ENABLE_MIRROR_VFD@)
 set (${HDF5_PACKAGE_NAME}_ENABLE_ROS3_VFD       @HDF5_ENABLE_ROS3_VFD@)
-set (${HDF5_PACKAGE_NAME}_ENABLE_HDFS_VFD       @H5_HAVE_LIBHDFS@)
+set (${HDF5_PACKAGE_NAME}_ENABLE_HDFS_VFD       @HDF5_ENABLE_HDFS@)
+set (${HDF5_PACKAGE_NAME}_ENABLE_SUBFILING_VFD  @HDF5_ENABLE_SUBFILING_VFD@)
 set (${HDF5_PACKAGE_NAME}_ENABLE_PLUGIN_SUPPORT @HDF5_ENABLE_PLUGIN_SUPPORT@)
 #-----------------------------------------------------------------------------
-set (${HDF5_PACKAGE_NAME}_BUILD_SHARED_LIBS    @H5_ENABLE_SHARED_LIB@)
-set (${HDF5_PACKAGE_NAME}_BUILD_STATIC_LIBS    @H5_ENABLE_STATIC_LIB@)
-set (${HDF5_PACKAGE_NAME}_PACKAGE_EXTLIBS      @HDF5_PACKAGE_EXTLIBS@)
-set (${HDF5_PACKAGE_NAME}_EXPORT_LIBRARIES     @HDF5_LIBRARIES_TO_EXPORT@)
-set (${HDF5_PACKAGE_NAME}_ARCHITECTURE        "@CMAKE_GENERATOR_ARCHITECTURE@")
-set (${HDF5_PACKAGE_NAME}_TOOLSET             "@CMAKE_GENERATOR_TOOLSET@")
+set (${HDF5_PACKAGE_NAME}_PACKAGE_EXTLIBS       @HDF5_PACKAGE_EXTLIBS@)
+set (${HDF5_PACKAGE_NAME}_EXPORT_LIBRARIES      @HDF5_LIBRARIES_TO_EXPORT@)
+set (${HDF5_PACKAGE_NAME}_ARCHITECTURE         "@CMAKE_GENERATOR_ARCHITECTURE@")
+set (${HDF5_PACKAGE_NAME}_TOOLSET              "@CMAKE_GENERATOR_TOOLSET@")
 
 #-----------------------------------------------------------------------------
 # Dependencies
@@ -77,6 +80,8 @@ if (${HDF5_PACKAGE_NAME}_ENABLE_PARALLEL)
     set (${HDF5_PACKAGE_NAME}_MPI_Fortran_INCLUDE_PATH "@MPI_Fortran_INCLUDE_DIRS@")
     set (${HDF5_PACKAGE_NAME}_MPI_Fortran_LIBRARIES    "@MPI_Fortran_LIBRARIES@")
   endif ()
+  set (${HDF5_PACKAGE_NAME}_PARALLEL_FILTERED_WRITES @PARALLEL_FILTERED_WRITES@)
+  set (${HDF5_PACKAGE_NAME}_LARGE_PARALLEL_IO        @LARGE_PARALLEL_IO@)
 
   find_package(MPI QUIET REQUIRED)
 endif ()
diff --git a/release_docs/INSTALL_CMake.txt b/release_docs/INSTALL_CMake.txt
index 90e816e4fa..f9184cf655 100644
--- a/release_docs/INSTALL_CMake.txt
+++ b/release_docs/INSTALL_CMake.txt
@@ -809,6 +809,8 @@ else ()
   HDF5_INSTALL_DATA_DIR   "share"
 HDF5_INSTALL_DOC_DIR      "HDF5_INSTALL_DATA_DIR"
 
+HDF5_USE_GNU_DIRS         "TRUE to use GNU Coding Standard install directory variables,
+                           FALSE to use historical settings"                                     FALSE
 Defaults as defined by the `GNU Coding Standards`
 HDF5_INSTALL_BIN_DIR      "bin"
 HDF5_INSTALL_LIB_DIR      "lib"
@@ -819,11 +821,13 @@ HDF5_INSTALL_DATA_DIR     "share"
 HDF5_INSTALL_DOC_DIR      "HDF5_INSTALL_DATA_DIR/doc/hdf5"
 
 ---------------- HDF5 Advanced Options ---------------------
-HDF5_USE_GNU_DIRS              "TRUE to use GNU Coding Standard install directory variables,
-                                FALSE to use historical settings"                                FALSE
 ONLY_SHARED_LIBS               "Only Build Shared Libraries"                                     OFF
 ALLOW_UNSUPPORTED              "Allow unsupported combinations of configure options"             OFF
+HDF5_ENABLE_PARALLEL           "Enable parallel build (requires MPI)"                            OFF
+HDF5_ENABLE_THREADSAFE         "Enable Threadsafety"                                             OFF
+HDF5_DIMENSION_SCALES_NEW_REF  "Use new-style references with dimension scale APIs"              OFF
 HDF5_EXTERNAL_LIB_PREFIX       "Use prefix for custom library naming."                           ""
+
 HDF5_DISABLE_COMPILER_WARNINGS "Disable compiler warnings"                                       OFF
 HDF5_ENABLE_ALL_WARNINGS       "Enable all warnings"                                             OFF
 HDF5_SHOW_ALL_WARNINGS         "Show all warnings (i.e. not suppress "noisy" ones internally)"         OFF
@@ -831,14 +835,13 @@ HDF5_ENABLE_CODESTACK          "Enable the function stack tracing (for developer
 HDF5_ENABLE_COVERAGE           "Enable code coverage for Libraries and Programs"                 OFF
 HDF5_ENABLE_DEBUG_APIS         "Turn on extra debug output in all packages"                      OFF
 HDF5_ENABLE_DEPRECATED_SYMBOLS "Enable deprecated public API symbols"                            ON
-HDF5_ENABLE_DIRECT_VFD         "Build the Direct I/O Virtual File Driver"                        OFF
 HDF5_ENABLE_EMBEDDED_LIBINFO   "embed library info into executables"                             ON
-HDF5_ENABLE_PARALLEL           "Enable parallel build (requires MPI)"                            OFF
 HDF5_ENABLE_PREADWRITE         "Use pread/pwrite in sec2/log/core VFDs in place of read/write (when available)" ON
 HDF5_ENABLE_TRACE              "Enable API tracing capability"                                   OFF
 HDF5_ENABLE_USING_MEMCHECKER   "Indicate that a memory checker is used"                          OFF
 HDF5_GENERATE_HEADERS          "Rebuild Generated Files"                                         ON
 HDF5_BUILD_GENERATORS          "Build Test Generators"                                           OFF
+
 HDF5_JAVA_PACK_JRE             "Package a JRE installer directory"                               OFF
 HDF5_NO_PACKAGES               "Do not include CPack Packaging"                                  OFF
 HDF5_PACK_EXAMPLES             "Package the HDF5 Library Examples Compressed File"               OFF
@@ -847,11 +850,11 @@ HDF5_BUILD_FRAMEWORKS          "TRUE to build as frameworks libraries,
                                 FALSE to build according to BUILD_SHARED_LIBS"                   FALSE
 HDF5_PACKAGE_EXTLIBS           "CPACK - include external libraries"                              OFF
 HDF5_STRICT_FORMAT_CHECKS      "Whether to perform strict file format checks"                    OFF
-DEFAULT_API_VERSION            "Enable default API (v16, v18, v110, v112, v114, v116)"           "v116"
-HDF5_USE_FOLDERS               "Enable folder grouping of projects in IDEs."                     ON
 HDF5_WANT_DATA_ACCURACY        "IF data accuracy is guaranteed during data conversions"          ON
 HDF5_WANT_DCONV_EXCEPTION      "exception handling functions is checked during data conversions" ON
-HDF5_ENABLE_THREADSAFE         "Enable Threadsafety"                                             OFF
+
+DEFAULT_API_VERSION            "Enable default API (v16, v18, v110, v112, v114, v116)"           "v116"
+HDF5_USE_FOLDERS               "Enable folder grouping of projects in IDEs."                     ON
 HDF5_MSVC_NAMING_CONVENTION    "Use MSVC Naming conventions for Shared Libraries"                OFF
 HDF5_MINGW_STATIC_GCC_LIBS     "Statically link libgcc/libstdc++"                                OFF
 if (APPLE)
@@ -864,13 +867,20 @@ if (HDF5_BUILD_FORTRAN)
     if (BUILD_SHARED_LIBS AND NOT BUILD_STATIC_LIBS)     default HDF5_INSTALL_MOD_FORTRAN is SHARED
     if (NOT BUILD_SHARED_LIBS AND BUILD_STATIC_LIBS)     default HDF5_INSTALL_MOD_FORTRAN is STATIC
     if (NOT BUILD_SHARED_LIBS AND NOT BUILD_STATIC_LIBS) default HDF5_INSTALL_MOD_FORTRAN is SHARED
-HDF5_BUILD_DOC                 "Build documentation"                                OFF
+
 HDF5_ENABLE_ANALYZER_TOOLS     "enable the use of Clang tools"                      OFF
 HDF5_ENABLE_SANITIZERS         "execute the Clang sanitizer"                        OFF
 HDF5_ENABLE_FORMATTERS         "format source files"                                OFF
-HDF5_DIMENSION_SCALES_NEW_REF  "Use new-style references with dimension scale APIs" OFF
+HDF5_BUILD_DOC                 "Build documentation"                                OFF
 HDF5_ENABLE_DOXY_WARNINGS      "Enable fail if doxygen parsing has warnings."       ON
 
+---------------- HDF5 VFD Options ---------------------
+HDF5_ENABLE_DIRECT_VFD         "Build the Direct I/O Virtual File Driver"           OFF
+HDF5_ENABLE_MIRROR_VFD         "Build the Mirror Virtual File Driver"               OFF
+HDF5_ENABLE_ROS3_VFD           "Build the ROS3 Virtual File Driver"                 OFF
+HDF5_ENABLE_HDFS               "Enable HDFS"                                        OFF
+HDF5_ENABLE_SUBFILING_VFD      "Build Parallel HDF5 Subfiling VFD"                  OFF
+
 ---------------- HDF5 Advanced Test Options ---------------------
 if (BUILD_TESTING)
     HDF5_TEST_SERIAL               "Execute non-parallel tests"                                   ON