From 8bcc2281b132004f6e531f74baa62d97f9c967a7 Mon Sep 17 00:00:00 2001
From: Lars Bilke <lars.bilke@ufz.de>
Date: Thu, 21 Apr 2022 15:45:44 +0200
Subject: [PATCH] [cmake] Fix Windows dependencies.

---
 scripts/cmake/Dependencies.cmake | 234 ++++++++++++++++---------------
 web/data/versions.json           |   3 +-
 2 files changed, 119 insertions(+), 118 deletions(-)

diff --git a/scripts/cmake/Dependencies.cmake b/scripts/cmake/Dependencies.cmake
index 2574ba0ad91..8724b0cc865 100644
--- a/scripts/cmake/Dependencies.cmake
+++ b/scripts/cmake/Dependencies.cmake
@@ -167,121 +167,6 @@ CPMAddPackage(
     OPTIONS "BUILD_SHARED_LIBS OFF"
 )
 
-if(OGS_USE_MPI)
-    set(_hdf5_options "HDF5_ENABLE_PARALLEL ON")
-endif()
-
-string(REPLACE "." "_" HDF5_TAG ${ogs.minimum_version.hdf5})
-if(OGS_USE_NETCDF)
-    list(APPEND CMAKE_MODULE_PATH ${PROJECT_BINARY_DIR})
-    find_package(HDF5 REQUIRED)
-else()
-    # ZLIB is a HDF5 dependency
-    CPMFindPackage(
-        NAME ZLIB
-        GITHUB_REPOSITORY madler/zlib
-        VERSION 1.2.11
-        EXCLUDE_FROM_ALL YES
-    )
-
-    CPMFindPackage(
-        NAME HDF5
-        GITHUB_REPOSITORY HDFGroup/hdf5
-        GIT_TAG hdf5-${HDF5_TAG}
-        VERSION ${ogs.minimum_version.hdf5}
-        OPTIONS "HDF5_EXTERNALLY_CONFIGURED 1"
-                "HDF5_GENERATE_HEADERS OFF"
-                "HDF5_BUILD_TOOLS OFF"
-                "HDF5_BUILD_EXAMPLES OFF"
-                "HDF5_BUILD_HL_LIB OFF"
-                "HDF5_BUILD_FORTRAN OFF"
-                "HDF5_BUILD_CPP_LIB OFF"
-                "HDF5_BUILD_JAVA OFF"
-                ${_hdf5_options}
-        EXCLUDE_FROM_ALL YES
-    )
-    if(HDF5_ADDED)
-        list(APPEND DISABLE_WARNINGS_TARGETS hdf5-static)
-        set(HDF5_LIBRARIES hdf5-static)
-        if(ZLIB_ADDED)
-            list(APPEND HDF5_LIBRARIES zlibstatic)
-        endif()
-        set(HDF5_INCLUDE_DIRS ${HDF5_SOURCE_DIR}/src ${HDF5_BINARY_DIR})
-        set(HDF5_C_INCLUDE_DIRS ${HDF5_INCLUDE_DIRS})
-        set(HDF5_C_INCLUDE_DIR ${HDF5_INCLUDE_DIRS})
-        target_include_directories(hdf5-static INTERFACE ${HDF5_INCLUDE_DIRS})
-        if(OGS_USE_MKL AND WIN32)
-            # In this case the hdf5 build fails with, e.g.:
-            # ~~~
-            # H5system.c(710): error C2065: 'timezone': undeclared identifier
-            # ~~~
-            # Reason is that the H5_HAVE_VISUAL_STUDIO-symbol is not defined
-            # anymore!?
-            target_compile_definitions(
-                hdf5-static PRIVATE -DH5_HAVE_VISUAL_STUDIO
-            )
-        endif()
-    else()
-        find_package(HDF5 REQUIRED)
-    endif()
-endif()
-
-if(OGS_USE_PETSC AND NOT HDF5_ADDED)
-    include(CheckCXXSymbolExists)
-    set(CMAKE_REQUIRED_INCLUDES "${HDF5_INCLUDE_DIR}" "${HDF5_BINARY_DIR}")
-    set(CMAKE_REQUIRED_LIBRARIES "${HDF5_LIBRARIES}")
-    check_cxx_symbol_exists(H5Pset_fapl_mpio hdf5.h HAVE_H5Pset_fapl_mpio)
-    unset(CMAKE_REQUIRED_INCLUDES)
-    if(NOT HAVE_H5Pset_fapl_mpio)
-        message(FATAL_ERROR "HDF5 was not build with MPI support! "
-                            "(Enable with HDF5_ENABLE_PARALLEL)"
-        )
-    endif()
-endif()
-
-# Does not compile in Debug-mode, see #3175.
-if(CMAKE_BUILD_TYPE STREQUAL "Release" AND OGS_BUILD_TESTING)
-    set(XDMF_LIBNAME OgsXdmf CACHE STRING "")
-    CPMAddPackage(
-        NAME xdmf
-        VERSION 3.0.0
-        GIT_REPOSITORY https://gitlab.opengeosys.org/ogs/xdmflib.git
-        GIT_TAG 92a851f1acb87ad5367eb62f9b97785bedb700bb
-        OPTIONS "XDMF_LIBNAME OgsXdmf"
-        EXCLUDE_FROM_ALL YES
-    )
-    if(xdmf_ADDED)
-        target_include_directories(
-            OgsXdmf PUBLIC ${xdmf_SOURCE_DIR} ${xdmf_BINARY_DIR}
-        )
-
-        target_link_libraries(OgsXdmf Boost::boost)
-        target_include_directories(
-            OgsXdmfCore PUBLIC ${xdmf_SOURCE_DIR}/core ${xdmf_BINARY_DIR}/core
-            PRIVATE ${xdmf_SOURCE_DIR}/CMake/VersionSuite
-        )
-        target_link_libraries(
-            OgsXdmfCore PUBLIC Boost::boost LibXml2::LibXml2 ${HDF5_LIBRARIES}
-        )
-
-        set_target_properties(
-            OgsXdmf OgsXdmfCore
-            PROPERTIES RUNTIME_OUTPUT_DIRECTORY
-                       ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}
-                       LIBRARY_OUTPUT_DIRECTORY
-                       ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}
-                       ARCHIVE_OUTPUT_DIRECTORY
-                       ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}
-        )
-        if(BUILD_SHARED_LIBS)
-            install(TARGETS OgsXdmf OgsXdmfCore
-                    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
-            )
-        endif()
-        list(APPEND DISABLE_WARNINGS_TARGETS OgsXdmf OgsXdmfCore)
-    endif()
-endif()
-
 if(OGS_BUILD_SWMM)
     CPMAddPackage(
         NAME SWMMInterface GITHUB_REPOSITORY ufz/SwmmInterface
@@ -392,7 +277,7 @@ foreach(opt ${VTK_OPTIONS})
         list(APPEND VTK_COMPONENTS ${CMAKE_MATCH_1})
     endif()
 endforeach()
-find_package(VTK ${ogs.minimum_version.vtk} COMPONENTS ${VTK_COMPONENTS})
+find_package(VTK ${ogs.minimum_version.vtk} QUIET COMPONENTS ${VTK_COMPONENTS})
 
 if(NOT VTK_FOUND)
     list(APPEND VTK_OPTIONS "BUILD_SHARED_LIBS OFF")
@@ -447,6 +332,123 @@ if(OGS_BUILD_TESTING OR OGS_BUILD_UTILS)
     endif()
 endif()
 
+if(OGS_USE_MPI)
+    set(_hdf5_options "HDF5_ENABLE_PARALLEL ON")
+endif()
+
+string(REPLACE "." "_" HDF5_TAG ${ogs.minimum_version.hdf5})
+if(OGS_USE_NETCDF)
+    list(APPEND CMAKE_MODULE_PATH ${PROJECT_BINARY_DIR})
+    find_package(HDF5 REQUIRED)
+else()
+    # ZLIB is a HDF5 dependency
+    if(NOT VTK_ADDED)
+        CPMFindPackage(
+            NAME ZLIB
+            GITHUB_REPOSITORY madler/zlib
+            VERSION 1.2.11
+            EXCLUDE_FROM_ALL YES
+        )
+    endif()
+
+    CPMFindPackage(
+        NAME HDF5
+        GITHUB_REPOSITORY HDFGroup/hdf5
+        GIT_TAG hdf5-${HDF5_TAG}
+        VERSION ${ogs.minimum_version.hdf5}
+        OPTIONS "HDF5_EXTERNALLY_CONFIGURED 1"
+                "HDF5_GENERATE_HEADERS OFF"
+                "HDF5_BUILD_TOOLS OFF"
+                "HDF5_BUILD_EXAMPLES OFF"
+                "HDF5_BUILD_HL_LIB OFF"
+                "HDF5_BUILD_FORTRAN OFF"
+                "HDF5_BUILD_CPP_LIB OFF"
+                "HDF5_BUILD_JAVA OFF"
+                ${_hdf5_options}
+        EXCLUDE_FROM_ALL YES
+    )
+    if(HDF5_ADDED)
+        list(APPEND DISABLE_WARNINGS_TARGETS hdf5-static)
+        set(HDF5_LIBRARIES hdf5-static)
+        if(ZLIB_ADDED)
+            list(APPEND HDF5_LIBRARIES zlibstatic)
+        endif()
+        set(HDF5_INCLUDE_DIRS ${HDF5_SOURCE_DIR}/src ${HDF5_BINARY_DIR})
+        set(HDF5_C_INCLUDE_DIRS ${HDF5_INCLUDE_DIRS})
+        set(HDF5_C_INCLUDE_DIR ${HDF5_INCLUDE_DIRS})
+        target_include_directories(hdf5-static INTERFACE ${HDF5_INCLUDE_DIRS})
+        if(OGS_USE_MKL AND WIN32)
+            # In this case the hdf5 build fails with, e.g.:
+            # ~~~
+            # H5system.c(710): error C2065: 'timezone': undeclared identifier
+            # ~~~
+            # Reason is that the H5_HAVE_VISUAL_STUDIO-symbol is not defined
+            # anymore!?
+            target_compile_definitions(
+                hdf5-static PRIVATE -DH5_HAVE_VISUAL_STUDIO
+            )
+        endif()
+    else()
+        find_package(HDF5 REQUIRED)
+    endif()
+endif()
+
+if(OGS_USE_PETSC AND NOT HDF5_ADDED)
+    include(CheckCXXSymbolExists)
+    set(CMAKE_REQUIRED_INCLUDES "${HDF5_INCLUDE_DIR}" "${HDF5_BINARY_DIR}")
+    set(CMAKE_REQUIRED_LIBRARIES "${HDF5_LIBRARIES}")
+    check_cxx_symbol_exists(H5Pset_fapl_mpio hdf5.h HAVE_H5Pset_fapl_mpio)
+    unset(CMAKE_REQUIRED_INCLUDES)
+    if(NOT HAVE_H5Pset_fapl_mpio)
+        message(FATAL_ERROR "HDF5 was not build with MPI support! "
+                            "(Enable with HDF5_ENABLE_PARALLEL)"
+        )
+    endif()
+endif()
+
+# Does not compile in Debug-mode, see #3175.
+if(CMAKE_BUILD_TYPE STREQUAL "Release" AND OGS_BUILD_TESTING)
+    set(XDMF_LIBNAME OgsXdmf CACHE STRING "")
+    CPMAddPackage(
+        NAME xdmf
+        VERSION 3.0.0
+        GIT_REPOSITORY https://gitlab.opengeosys.org/ogs/xdmflib.git
+        GIT_TAG 92a851f1acb87ad5367eb62f9b97785bedb700bb
+        OPTIONS "XDMF_LIBNAME OgsXdmf"
+        EXCLUDE_FROM_ALL YES
+    )
+    if(xdmf_ADDED)
+        target_include_directories(
+            OgsXdmf PUBLIC ${xdmf_SOURCE_DIR} ${xdmf_BINARY_DIR}
+        )
+
+        target_link_libraries(OgsXdmf Boost::boost)
+        target_include_directories(
+            OgsXdmfCore PUBLIC ${xdmf_SOURCE_DIR}/core ${xdmf_BINARY_DIR}/core
+            PRIVATE ${xdmf_SOURCE_DIR}/CMake/VersionSuite
+        )
+        target_link_libraries(
+            OgsXdmfCore PUBLIC Boost::boost LibXml2::LibXml2 ${HDF5_LIBRARIES}
+        )
+
+        set_target_properties(
+            OgsXdmf OgsXdmfCore
+            PROPERTIES RUNTIME_OUTPUT_DIRECTORY
+                       ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}
+                       LIBRARY_OUTPUT_DIRECTORY
+                       ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}
+                       ARCHIVE_OUTPUT_DIRECTORY
+                       ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}
+        )
+        if(BUILD_SHARED_LIBS)
+            install(TARGETS OgsXdmf OgsXdmfCore
+                    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+            )
+        endif()
+        list(APPEND DISABLE_WARNINGS_TARGETS OgsXdmf OgsXdmfCore)
+    endif()
+endif()
+
 if(OGS_BUILD_UTILS)
     CPMAddPackage(
         NAME metis
diff --git a/web/data/versions.json b/web/data/versions.json
index b0a4314f147..712c31c8f2e 100644
--- a/web/data/versions.json
+++ b/web/data/versions.json
@@ -70,8 +70,7 @@
             "VTK_ENABLE_WRAPPING=OFF",
             "VTK_USE_64BIT_IDS=ON",
             "VTK_MODULE_ENABLE_VTK_IOXML=YES",
-            "VTK_MODULE_ENABLE_VTK_IOLegacy=YES",
-            "VTK_MODULE_USE_EXTERNAL_VTK_zlib=ON"
+            "VTK_MODULE_ENABLE_VTK_IOLegacy=YES"
           ]
         },
         {
-- 
GitLab