From e43f402341f4acd6faff9b8d5f8d18e89d1db4d0 Mon Sep 17 00:00:00 2001
From: Ben Boeckel <ben.boeckel@kitware.com>
Date: Thu, 28 Dec 2017 09:59:41 -0500
Subject: [PATCH] libharu: update to the new module system

---
 ThirdParty/libharu/CMakeLists.txt   | 34 ++++++++++++++++++++---------
 ThirdParty/libharu/module.cmake     |  6 -----
 ThirdParty/libharu/update.sh        |  2 +-
 ThirdParty/libharu/vtk.module       |  8 +++++++
 ThirdParty/libharu/vtk_libharu.h.in |  4 ++--
 5 files changed, 35 insertions(+), 19 deletions(-)
 delete mode 100644 ThirdParty/libharu/module.cmake
 create mode 100644 ThirdParty/libharu/vtk.module

diff --git a/ThirdParty/libharu/CMakeLists.txt b/ThirdParty/libharu/CMakeLists.txt
index d6b0d647414..bac8dce188f 100644
--- a/ThirdParty/libharu/CMakeLists.txt
+++ b/ThirdParty/libharu/CMakeLists.txt
@@ -1,14 +1,28 @@
-include(CMakeDependentOption)
+vtk_module_third_party(
+  INTERNAL
+    LICENSE_FILES "vtklibharu/LICENCE"
+    VERSION       "2.4.0"
+    STANDARD_INCLUDE_DIRS
+  EXTERNAL
+    PACKAGE LibHaru
+    # Unreleased. Requires these PRs:
+    # https://github.com/libharu/libharu/pull/157
+    # https://github.com/libharu/libharu/pull/187
+    VERSION 2.4.0
+    TARGETS LibHaru::LibHaru
+    STANDARD_INCLUDE_DIRS)
 
-cmake_dependent_option(VTK_MODULE_vtklibharu_IS_SHARED "Whether the system libharu in use is a shared library or not" ON
-  VTK_USE_SYSTEM_LIBHARU "${BUILD_SHARED_LIBS}")
+include(vtkDetectLibraryType)
+vtk_detect_library_shared(vtklibharu LibHaru::LibHaru)
 
-if (WIN32 AND VTK_MODULE_vtklibharu_IS_SHARED)
+set(HPDF_DLL 0)
+if (WIN32 AND vtklibharu_is_shared)
   set(HPDF_DLL 1)
-endif()
+endif ()
 
-vtk_module_third_party(LibHaru
-  INCLUDE_DIRS
-    "${CMAKE_CURRENT_SOURCE_DIR}/vtklibharu/include"
-    "${CMAKE_CURRENT_BINARY_DIR}/vtklibharu/include"
-)
+configure_file(
+  "${CMAKE_CURRENT_SOURCE_DIR}/vtk_libharu.h.in"
+  "${CMAKE_CURRENT_BINARY_DIR}/vtk_libharu.h")
+
+vtk_module_install_headers(
+  FILES "${CMAKE_CURRENT_BINARY_DIR}/vtk_libharu.h")
diff --git a/ThirdParty/libharu/module.cmake b/ThirdParty/libharu/module.cmake
deleted file mode 100644
index 22e2517ac98..00000000000
--- a/ThirdParty/libharu/module.cmake
+++ /dev/null
@@ -1,6 +0,0 @@
-vtk_module(vtklibharu
-  EXCLUDE_FROM_WRAPPING
-  DEPENDS
-    vtkpng
-    vtkzlib
-)
diff --git a/ThirdParty/libharu/update.sh b/ThirdParty/libharu/update.sh
index 52d6ce44878..0f2e0987e81 100755
--- a/ThirdParty/libharu/update.sh
+++ b/ThirdParty/libharu/update.sh
@@ -8,7 +8,7 @@ readonly name="libharu"
 readonly ownership="Libharu Upstream <kwrobot@kitware.com>"
 readonly subtree="ThirdParty/$name/vtk$name"
 readonly repo="https://gitlab.kitware.com/third-party/libharu.git"
-readonly tag="for/vtk-old"
+readonly tag="for/vtk-20181101-2.4.0-gd84867e"
 readonly paths="
 .gitattributes
 CMakeLists.txt
diff --git a/ThirdParty/libharu/vtk.module b/ThirdParty/libharu/vtk.module
new file mode 100644
index 00000000000..d765600f39e
--- /dev/null
+++ b/ThirdParty/libharu/vtk.module
@@ -0,0 +1,8 @@
+NAME
+  VTK::libharu
+LIBRARY_NAME
+  vtklibharu
+PRIVATE_DEPENDS
+  VTK::png
+  VTK::zlib
+THIRD_PARTY
diff --git a/ThirdParty/libharu/vtk_libharu.h.in b/ThirdParty/libharu/vtk_libharu.h.in
index 538877d36ff..9819d197741 100644
--- a/ThirdParty/libharu/vtk_libharu.h.in
+++ b/ThirdParty/libharu/vtk_libharu.h.in
@@ -16,11 +16,11 @@
 #define vtk_libharu_h
 
 /* Use the libharu library configured for VTK.  */
-#cmakedefine VTK_USE_SYSTEM_LIBHARU
+#cmakedefine01 VTK_MODULE_USE_EXTERNAL_vtklibharu
 
 #cmakedefine HPDF_DLL
 
-#ifdef VTK_USE_SYSTEM_LIBHARU
+#if VTK_MODULE_USE_EXTERNAL_vtklibharu
 # include <hpdf.h>
 #else
 # include <vtklibharu/include/hpdf.h>
-- 
GitLab