SDL_ttf: Use pkg-config with CMake and set Requires.private when possible

From 12f4c2e8f295db12fca6217a2f035a404f1ede3a Mon Sep 17 00:00:00 2001
From: Cameron Cawley <[EMAIL REDACTED]>
Date: Wed, 23 Mar 2022 18:22:52 +0000
Subject: [PATCH] Use pkg-config with CMake and set Requires.private when
 possible

---
 CMakeLists.txt | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2f5d804..0559b12 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -48,13 +48,18 @@ else()
 include(GNUInstallDirs)
 include(CMakePackageConfigHelpers)
 
+find_package(PkgConfig QUIET)
 if (NOT (TARGET SDL2 OR TARGET SDL2-static))
   find_package(SDL2 REQUIRED)
 endif()
 if (NOT (TARGET Freetype::Freetype))
-  find_package(Freetype REQUIRED)
+  pkg_check_modules(freetype2 IMPORTED_TARGET freetype2)
+  if (freetype2_FOUND)
+    set(PC_REQUIRES "freetype2 ${PC_REQUIRES}")
+  else()
+    find_package(Freetype REQUIRED)
+  endif()
 endif()
-find_package(PkgConfig QUIET)
 
 set(SDL_TTF_MAJOR_VERSION 2)
 set(SDL_TTF_MINOR_VERSION 0)
@@ -73,7 +78,11 @@ else()
     set_target_properties(SDL2_ttf PROPERTIES POSITION_INDEPENDENT_CODE ON)
   endif()
 endif()
-target_link_libraries(SDL2_ttf Freetype::Freetype)
+if (TARGET Freetype::Freetype)
+  target_link_libraries(SDL2_ttf Freetype::Freetype)
+else()
+  target_link_libraries(SDL2_ttf PkgConfig::freetype2)
+endif()
 target_include_directories(SDL2_ttf PUBLIC $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/SDL2>)
 
 install(