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()