From c9c85080e9c9ba2f98cd7bf0ca69775529e280e4 Mon Sep 17 00:00:00 2001
From: Allen Byrne <50328838+byrnHDF@users.noreply.github.com>
Date: Fri, 17 Sep 2021 11:01:26 -0500
Subject: [PATCH] Merge HDFFV-11266 - add option to build HL tools #1018
 (#1020)

Origin: https://github.com/HDFGroup/hdf5/commit/c9c85080e9c9ba2f98cd7bf0ca69775529e280e4

---
 config/cmake/hdf5-config.cmake.in      |  1 +
 config/cmake/libhdf5.settings.cmake.in |  1 +
 configure.ac                           | 20 ++++++++++++++++++++
 hl/CMakeLists.txt                      | 12 ++++++++++--
 hl/Makefile.am                         |  4 ++++
 release_docs/INSTALL_CMake.txt         |  1 +
 release_docs/RELEASE.txt               |  8 ++++++++
 7 files changed, 45 insertions(+), 2 deletions(-)

diff --git a/config/cmake/hdf5-config.cmake.in b/config/cmake/hdf5-config.cmake.in
index 4d02c9c5ff2..8faa2fe2ba2 100644
--- a/config/cmake/hdf5-config.cmake.in
+++ b/config/cmake/hdf5-config.cmake.in
@@ -38,6 +38,7 @@ set (${HDF5_PACKAGE_NAME}_BUILD_CPP_LIB   @HDF5_BUILD_CPP_LIB@)
 set (${HDF5_PACKAGE_NAME}_BUILD_JAVA      @HDF5_BUILD_JAVA@)
 set (${HDF5_PACKAGE_NAME}_BUILD_TOOLS     @HDF5_BUILD_TOOLS@)
 set (${HDF5_PACKAGE_NAME}_BUILD_HL_LIB    @HDF5_BUILD_HL_LIB@)
+set (${HDF5_PACKAGE_NAME}_BUILD_HL_TOOLS  @HDF5_BUILD_HL_TOOLS@)
 set (${HDF5_PACKAGE_NAME}_ENABLE_THREADSAFE @HDF5_ENABLE_THREADSAFE@)
 set (${HDF5_PACKAGE_NAME}_ENABLE_PLUGIN_SUPPORT @HDF5_ENABLE_PLUGIN_SUPPORT@)
 set (${HDF5_PACKAGE_NAME}_ENABLE_Z_LIB_SUPPORT @HDF5_ENABLE_Z_LIB_SUPPORT@)
diff --git a/config/cmake/libhdf5.settings.cmake.in b/config/cmake/libhdf5.settings.cmake.in
index dd345b4cd5c..e5b150409c5 100644
--- a/config/cmake/libhdf5.settings.cmake.in
+++ b/config/cmake/libhdf5.settings.cmake.in
@@ -70,6 +70,7 @@ Parallel Filtered Dataset Writes: @PARALLEL_FILTERED_WRITES@
               High-level library: @HDF5_BUILD_HL_LIB@
                 Build HDF5 Tests: @BUILD_TESTING@
                 Build HDF5 Tools: @HDF5_BUILD_TOOLS@
+     Build High-level HDF5 Tools: @HDF5_BUILD_HL_TOOLS@
                     Threadsafety: @HDF5_ENABLE_THREADSAFE@ (recursive RW locks: @HDF5_USE_RECURSIVE_RW_LOCKS@) 
              Default API mapping: @DEFAULT_API_VERSION@
   With deprecated public symbols: @HDF5_ENABLE_DEPRECATED_SYMBOLS@
diff --git a/configure.ac b/configure.ac
index df0cec59fe5..7b4c3f56647 100644
--- a/configure.ac
+++ b/configure.ac
@@ -806,6 +806,7 @@ AC_LANG_POP(C++)
 ## This needs to be exposed for the library info file even if the HL
 ## library is disabled.
 AC_SUBST([HDF5_HL])
+AC_SUBST([HDF5_HL_TOOLS])
 
 ## The high-level library is enabled unless the build mode is clean.
 if test "X-$BUILD_MODE" = "X-clean" ; then
@@ -822,6 +823,9 @@ HL=""
 ## Fortran high-level library
 AC_SUBST(HL_FOR)
 HL_FOR=""
+## Tools high-level library
+AC_SUBST(HL_TOOLS)
+HL_TOOLS=""
 
 AC_MSG_CHECKING([if the high-level library is enabled])
 AC_ARG_ENABLE([hl],
@@ -840,6 +844,21 @@ else
   AC_MSG_RESULT([no])
 fi
 
+AC_MSG_CHECKING([if the high-level tools are enabled])
+AC_ARG_ENABLE([hltools],
+     [AS_HELP_STRING([--enable-hltools],
+                     [Enable the high-level tools.
+                     [default=yes)]
+                     ])],
+     [HDF5_HL_TOOLS=$enableval])
+
+if test "X${HDF5_HL}" = "Xyes" -a "X-$HDF5_HL_TOOLS" = "X-yes"; then
+ AC_MSG_RESULT([yes])
+ HL_TOOLS="tools"
+else
+  AC_MSG_RESULT([no])
+fi
+
 
 ## ----------------------------------------------------------------------
 ## Check which archiving tool to use. This needs to be done before
@@ -3992,6 +4011,7 @@ AM_CONDITIONAL([BUILD_HDF5_HL_CONDITIONAL], [test "X$HDF5_HL" = "Xyes"])
 AM_CONDITIONAL([BUILD_TESTS_CONDITIONAL], [test "X$HDF5_TESTS" = "Xyes"])
 AM_CONDITIONAL([BUILD_TESTS_PARALLEL_CONDITIONAL], [test -n "$TESTPARALLEL"])
 AM_CONDITIONAL([BUILD_TOOLS_CONDITIONAL], [test "X$HDF5_TOOLS" = "Xyes"])
+AM_CONDITIONAL([BUILD_TOOLS_HL_CONDITIONAL], [test "X$HDF5_HL_TOOLS" = "Xyes"])
 AM_CONDITIONAL([BUILD_DOXYGEN_CONDITIONAL], [test "X$HDF5_DOXYGEN" = "Xyes"])
 
 ## ----------------------------------------------------------------------
diff --git a/hl/CMakeLists.txt b/hl/CMakeLists.txt
index 083c60eb39e..5061c6c5a47 100644
--- a/hl/CMakeLists.txt
+++ b/hl/CMakeLists.txt
@@ -7,9 +7,17 @@ project (HDF5_HL C)
 
 add_subdirectory (src)
 
-#-- Build the High level Tools
+# Build HDF5 Tools
 if (HDF5_BUILD_TOOLS)
-  add_subdirectory (tools)
+  #-----------------------------------------------------------------------------
+  #-- Option to build the High level Tools
+  #-----------------------------------------------------------------------------
+  if (EXISTS "${HDF5_HL_SOURCE_DIR}/tools" AND IS_DIRECTORY "${HDF5_HL_SOURCE_DIR}/tools")
+    option (HDF5_BUILD_HL_TOOLS  "Build HDF5 HL Tools" ON)
+    if (HDF5_BUILD_HL_TOOLS)
+      add_subdirectory (tools)
+    endif ()
+  endif ()
 endif ()
 
 #-- Add High Level Examples
diff --git a/hl/Makefile.am b/hl/Makefile.am
index 80ef66a2a2c..ad035fe5073 100644
--- a/hl/Makefile.am
+++ b/hl/Makefile.am
@@ -37,10 +37,14 @@ else
   TEST_DIR =
 endif
 if BUILD_TOOLS_CONDITIONAL
+if BUILD_TOOLS_HL_CONDITIONAL
   TOOLS_DIR = tools
 else
   TOOLS_DIR =
 endif
+else
+  TOOLS_DIR =
+endif
 
 ## Don't recurse into any subdirectories if HDF5 is not configured to
 ## use the HL library
diff --git a/release_docs/INSTALL_CMake.txt b/release_docs/INSTALL_CMake.txt
index 84044c7ee7e..adceb702aea 100644
--- a/release_docs/INSTALL_CMake.txt
+++ b/release_docs/INSTALL_CMake.txt
@@ -740,6 +740,7 @@ HDF5_BUILD_FORTRAN  "Build FORTRAN support"          OFF
 HDF5_BUILD_JAVA     "Build JAVA support"             OFF
 HDF5_BUILD_HL_LIB   "Build HIGH Level HDF5 Library"  ON
 HDF5_BUILD_TOOLS    "Build HDF5 Tools"               ON
+HDF5_BUILD_HL_TOOLS "Build HIGH Level HDF5 Tools"    ON
 
 ---------------- HDF5 Advanced Options ---------------------
 ONLY_SHARED_LIBS               "Only Build Shared Libraries"                                  OFF
