SDL_ttf: cmake: plutosvg has a dependency on plutovg (b65c0)

From b65c0bbd35505d239711644ec81ae4715f7e3753 Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Tue, 18 Mar 2025 16:34:26 +0100
Subject: [PATCH] cmake: plutosvg has a dependency on plutovg

(cherry picked from commit 72a7649a14fdeb5bb6b0c8e399c2c44f0e08cb89)
---
 CMakeLists.txt           |  9 ++++++--
 cmake/Findplutosvg.cmake |  6 ++++--
 cmake/Findplutovg.cmake  | 46 ++++++++++++++++++++++++++++++++++++++++
 3 files changed, 57 insertions(+), 4 deletions(-)
 create mode 100644 cmake/Findplutovg.cmake

diff --git a/CMakeLists.txt b/CMakeLists.txt
index fd4b7085..97bfdd75 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -351,8 +351,12 @@ if(SDLTTF_PLUTOSVG)
         if(SDLTTF_BUILD_SHARED_LIBS)
             set(plutosvg_link_libraries plutosvg::plutosvg)
         else()
-            set(plutosvg_compile_definitions $<TARGET_PROPERTY:plutosvg::plutosvg,INTERFACE_COMPILE_DEFINITIONS>)
-            set(plutosvg_include_directories $<TARGET_PROPERTY:plutosvg::plutosvg,INTERFACE_INCLUDE_DIRECTORIES>)
+            set(plutosvg_compile_definitions
+                $<TARGET_PROPERTY:plutovg::plutovg,INTERFACE_COMPILE_DEFINITIONS>
+                $<TARGET_PROPERTY:plutosvg::plutosvg,INTERFACE_COMPILE_DEFINITIONS>)
+            set(plutosvg_include_directories
+                $<TARGET_PROPERTY:plutovg::plutovg,INTERFACE_INCLUDE_DIRECTORIES>
+                $<TARGET_PROPERTY:plutosvg::plutosvg,INTERFACE_INCLUDE_DIRECTORIES>)
             set(plutosvg_sources $<TARGET_OBJECTS:plutosvg> $<TARGET_OBJECTS:plutovg>)
         endif()
     else()
@@ -436,6 +440,7 @@ if(SDLTTF_INSTALL)
               cmake/PkgConfigHelper.cmake
               cmake/Findharfbuzz.cmake
               cmake/Findplutosvg.cmake
+              cmake/Findplutovg.cmake
           DESTINATION "${SDLTTF_INSTALL_CMAKEDIR}"
           COMPONENT devel
       )
diff --git a/cmake/Findplutosvg.cmake b/cmake/Findplutosvg.cmake
index a3c6832b..1362ebca 100644
--- a/cmake/Findplutosvg.cmake
+++ b/cmake/Findplutosvg.cmake
@@ -27,8 +27,10 @@ set(plutosvg_LINK_OPTIONS "${_plutosvg_link_options}" CACHE STRING "Extra link f
 
 set(plutosvg_LINK_DIRECTORIES "${_plutosvg_link_directories}" CACHE STRING "Extra link flags of plutosvg")
 
+find_package(plutovg)
+
 find_package_handle_standard_args(plutosvg
-    REQUIRED_VARS plutosvg_LIBRARY plutosvg_INCLUDE_PATH
+    REQUIRED_VARS plutosvg_LIBRARY plutosvg_INCLUDE_PATH plutovg_FOUND
 )
 
 if(plutosvg_FOUND)
@@ -38,7 +40,7 @@ if(plutosvg_FOUND)
         IMPORTED_LOCATION "${plutosvg_LIBRARY}"
         INTERFACE_INCLUDE_DIRECTORIES "${plutosvg_INCLUDE_PATH}"
         INTERFACE_COMPILE_OPTIONS "${plutosvg_COMPILE_OPTIONS}"
-        INTERFACE_LINK_LIBRARIES "${plutosvg_LINK_LIBRARIES}"
+        INTERFACE_LINK_LIBRARIES "${plutosvg_LINK_LIBRARIES};plutovg::plutovg"
         INTERFACE_LINK_OPTIONS "${plutosvg_LINK_OPTIONS}"
         INTERFACE_LINK_DIRECTORIES "${plutosvg_LINK_DIRECTORIES}"
     )
diff --git a/cmake/Findplutovg.cmake b/cmake/Findplutovg.cmake
new file mode 100644
index 00000000..99abb0f0
--- /dev/null
+++ b/cmake/Findplutovg.cmake
@@ -0,0 +1,46 @@
+
+include(FindPackageHandleStandardArgs)
+
+find_package(PkgConfig QUIET)
+pkg_check_modules(PC_PLUTOSG QUIET plutovg)
+
+find_library(plutovg_LIBRARY
+    NAMES plutovg
+    HINTS ${PC_PLUTOVG_LIBDIR}
+)
+
+find_path(plutovg_INCLUDE_PATH
+    NAMES plutovg.h
+    PATH_SUFFIXES plutovg
+    HINTS ${PC_PLUTOVG_INCLUDEDIR}
+)
+
+if(PC_PLUTOVG_FOUND)
+    get_flags_from_pkg_config("${plutovg_LIBRARY}" "PC_PLUTOVG" "_plutovg")
+endif()
+
+set(plutovg_COMPILE_OPTIONS "${_plutovg_compile_options}" CACHE STRING "Extra compile flags of plutovg")
+
+set(plutovg_LINK_LIBRARIES "${_plutovg_link_libraries}" CACHE STRING "Extra link libraries of plutovg")
+
+set(plutovg_LINK_OPTIONS "${_plutovg_link_options}" CACHE STRING "Extra link flags of plutovg")
+
+set(plutovg_LINK_DIRECTORIES "${_plutovg_link_directories}" CACHE STRING "Extra link flags of plutovg")
+
+find_package_handle_standard_args(plutovg
+    REQUIRED_VARS plutovg_LIBRARY plutovg_INCLUDE_PATH
+)
+
+if(plutovg_FOUND)
+  if(NOT TARGET plutovg::plutovg)
+    add_library(plutovg::plutovg UNKNOWN IMPORTED)
+    set_target_properties(plutovg::plutovg PROPERTIES
+        IMPORTED_LOCATION "${plutovg_LIBRARY}"
+        INTERFACE_INCLUDE_DIRECTORIES "${plutovg_INCLUDE_PATH}"
+        INTERFACE_COMPILE_OPTIONS "${plutovg_COMPILE_OPTIONS}"
+        INTERFACE_LINK_LIBRARIES "${plutovg_LINK_LIBRARIES}"
+        INTERFACE_LINK_OPTIONS "${plutovg_LINK_OPTIONS}"
+        INTERFACE_LINK_DIRECTORIES "${plutovg_LINK_DIRECTORIES}"
+    )
+  endif()
+endif()