From 126accfce1df6aa774f2554b3ea730f162d19594 Mon Sep 17 00:00:00 2001 From: Dan Lipsa Date: Wed, 8 Feb 2023 11:00:14 -0500 Subject: [PATCH] Fix external freetype that provides freetype-config.cmake (#35363) * Fix external freetype that provides freetype-config.cmake --------- Co-authored-by: Dan Lipsa --- .../paraview/FindFreetype.cmake.patch | 35 +++++++++++++++++++ .../builtin/packages/paraview/package.py | 3 ++ 2 files changed, 38 insertions(+) create mode 100644 var/spack/repos/builtin/packages/paraview/FindFreetype.cmake.patch diff --git a/var/spack/repos/builtin/packages/paraview/FindFreetype.cmake.patch b/var/spack/repos/builtin/packages/paraview/FindFreetype.cmake.patch new file mode 100644 index 00000000000..ebb5f7c29c9 --- /dev/null +++ b/var/spack/repos/builtin/packages/paraview/FindFreetype.cmake.patch @@ -0,0 +1,35 @@ +diff --git a/VTK/CMake/FindFreetype.cmake b/VTK/CMake/FindFreetype.cmake +index b4532735c2..f06d32327e 100644 +--- a/VTK/CMake/FindFreetype.cmake ++++ b/VTK/CMake/FindFreetype.cmake +@@ -63,6 +63,30 @@ directory of a Freetype installation. + # I'm going to attempt to cut out the middleman and hope + # everything still works. + ++find_package(freetype CONFIG) # foward `QUIET`, version, and components here, but not `REQUIRED` ++if (freetype_FOUND) ++ if (NOT TARGET Freetype::Freetype) ++ # make target chain to target from config mode ++ get_target_property(freetype_library_type freetype TYPE) ++ get_target_property(freetype_location freetype LOCATION) ++ if (freetype_library_type STREQUAL STATIC_LIBRARY) ++ set(freetype_library_type STATIC) ++ endif() ++ get_target_property(freetype_interface_include_directories freetype INTERFACE_INCLUDE_DIRECTORIES) ++ get_target_property(freetype_interface_link_libraries freetype INTERFACE_LINK_LIBRARIES) ++ add_library(Freetype::Freetype "${freetype_library_type}" IMPORTED) ++ set_target_properties(Freetype::Freetype PROPERTIES ++ INTERFACE_INCLUDE_DIRECTORIES "${freetype_interface_include_directories}" ++ INTERFACE_LINK_LIBRARIES "${freetype_interface_link_libraries}" ++ IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C" ++ IMPORTED_LOCATION "${freetype_location}") ++ endif () ++ set(FREETYPE_INCLUDE_DIRS "${freetype_interface_include_directories}") ++ set(FREETYPE_LIBRARIES "${freetype_interface_link_libraries}") ++ set(Freetype_FOUND 1) # might need to also forward the version found ++ return () ++endif () ++ + set(FREETYPE_FIND_ARGS + HINTS + ENV FREETYPE_DIR diff --git a/var/spack/repos/builtin/packages/paraview/package.py b/var/spack/repos/builtin/packages/paraview/package.py index e3401ec4acb..702f9b800c0 100644 --- a/var/spack/repos/builtin/packages/paraview/package.py +++ b/var/spack/repos/builtin/packages/paraview/package.py @@ -273,6 +273,9 @@ class Paraview(CMakePackage, CudaPackage, ROCmPackage): patch("vtk-xdmf2-hdf51.13.1.patch", when="@5.10.0:5.10") patch("vtk-xdmf2-hdf51.13.2.patch", when="@5.10:") + # Fix VTK to work with external freetype using CONFIG mode for find_package + patch("FindFreetype.cmake.patch", when="@5.10.1:") + @property def generator(self): # https://gitlab.kitware.com/paraview/paraview/-/issues/21223