SDL_ttf: cmake: create SDL3_ttf::SDL3_ttf-shared for shared ttf library

From ceeb203c1248cd443a151c9fa8d4c75c1390e907 Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Mon, 5 Jun 2023 03:41:33 +0200
Subject: [PATCH] cmake: create SDL3_ttf::SDL3_ttf-shared for shared ttf
 library

---
 CMakeLists.txt | 56 ++++++++++++++++++++++++++------------------------
 1 file changed, 29 insertions(+), 27 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index be2ed45..38f130d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -71,12 +71,10 @@ set(SDL3TTF_HARFBUZZ_VENDORED "${SDL3TTF_VENDORED}")
 set(SDL3TTF_BUILD_SHARED_LIBS "${BUILD_SHARED_LIBS}")
 
 if(SDL3TTF_BUILD_SHARED_LIBS)
-    set(sdl3_ttf_export_name SDL3_ttf)
-    set(sdl3_ttf_install_name_infix shared)
-    set(sdl3_target_name SDL3::SDL3)
+    set(sdl3_ttf_target_name SDL3_ttf-shared)
+    set(sdl3_target_name SDL3::SDL3-shared)
 else()
-    set(sdl3_ttf_export_name SDL3_ttf-static)
-    set(sdl3_ttf_install_name_infix static)
+    set(sdl3_ttf_target_name SDL3_ttf-static)
     set(sdl3_target_name SDL3::SDL3-static)
 endif()
 
@@ -105,45 +103,49 @@ if (LIBC_IS_GLIBC AND CMAKE_SIZEOF_VOID_P EQUAL 4)
     add_compile_definitions(_FILE_OFFSET_BITS=64)
 endif()
 
-add_library(SDL3_ttf
+add_library(${sdl3_ttf_target_name}
     SDL_ttf.c
 )
-add_library(SDL3_ttf::${sdl3_ttf_export_name} ALIAS SDL3_ttf)
-target_include_directories(SDL3_ttf
+add_library(SDL3_ttf::${sdl3_ttf_target_name} ALIAS ${sdl3_ttf_target_name})
+if(NOT TARGET SDL3_ttf::SDL3_ttf)
+    add_library(SDL3_ttf::SDL3_mixer ALIAS ${sdl3_ttf_target_name})
+endif()
+target_include_directories(${sdl3_ttf_target_name}
     PUBLIC
         "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
         "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/SDL3>"
         "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
         "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/SDL3>"
 )
-target_compile_definitions(SDL3_ttf PRIVATE
+target_compile_definitions(${sdl3_ttf_target_name} PRIVATE
     BUILD_SDL
     SDL_BUILD_MAJOR_VERSION=${MAJOR_VERSION}
     SDL_BUILD_MINOR_VERSION=${MINOR_VERSION}
     SDL_BUILD_MICRO_VERSION=${MICRO_VERSION}
 )
-target_link_libraries(SDL3_ttf PRIVATE $<BUILD_INTERFACE:${sdl3_target_name}>)
-target_link_libraries(SDL3_ttf PRIVATE $<BUILD_INTERFACE:sdl3ttf_build_options>)
+target_link_libraries(${sdl3_ttf_target_name} PRIVATE $<BUILD_INTERFACE:${sdl3_target_name}>)
+target_link_libraries(${sdl3_ttf_target_name} PRIVATE $<BUILD_INTERFACE:sdl3ttf_build_options>)
 if(WIN32 AND SDL3TTF_BUILD_SHARED_LIBS)
-    target_sources(SDL3_ttf PRIVATE
+    target_sources(${sdl3_ttf_target_name} PRIVATE
         version.rc
     )
 endif()
-set_target_properties(SDL3_ttf PROPERTIES
+set_target_properties(${sdl3_ttf_target_name} PROPERTIES
     DEFINE_SYMBOL DLL_EXPORT
-    EXPORT_NAME ${sdl3_ttf_export_name}
+    EXPORT_NAME ${sdl3_ttf_target_name}
     C_VISIBILITY_PRESET "hidden"
+    OUTPUT_NAME SDL3_ttf
 )
 if(NOT ANDROID)
     if(APPLE)
         # the SOVERSION property corresponds to the compatibility version and VERSION corresponds to the current version
         # https://cmake.org/cmake/help/latest/prop_tgt/SOVERSION.html#mach-o-versions
-        set_target_properties(SDL3_ttf PROPERTIES
+        set_target_properties(${sdl3_ttf_target_name} PROPERTIES
             SOVERSION "${DYLIB_COMPAT_VERSION}"
             VERSION "${DYLIB_CURRENT_VERSION}"
         )
     else()
-        set_target_properties(SDL3_ttf PROPERTIES
+        set_target_properties(${sdl3_ttf_target_name} PROPERTIES
             SOVERSION "${SO_VERSION_MAJOR}"
             VERSION "${SO_VERSION}"
         )
@@ -151,13 +153,13 @@ if(NOT ANDROID)
 endif()
 if(SDL3TTF_BUILD_SHARED_LIBS)
     if(WIN32)
-        set_target_properties(SDL3_ttf PROPERTIES
+        set_target_properties(${sdl3_ttf_target_name} PROPERTIES
             PREFIX ""
         )
     endif()
 else()
     if(MSVC)
-        set_target_properties(SDL3_ttf PROPERTIES
+        set_target_properties(${sdl3_ttf_target_name} PROPERTIES
             OUTPUT_NAME "SDL3_ttf-static"
         )
     endif()
@@ -165,12 +167,12 @@ endif()
 
 if(SDL3TTF_BUILD_SHARED_LIBS)
     # Use `Compatible Interface Properties` to ensure a shared SDL3_ttf is linked to a shared SDL3 library
-    set_property(TARGET SDL3_ttf PROPERTY INTERFACE_SDL3_SHARED ${SDL3TTF_BUILD_SHARED_LIBS})
-    set_property(TARGET SDL3_ttf APPEND PROPERTY COMPATIBLE_INTERFACE_BOOL SDL3_SHARED)
+    set_property(TARGET ${sdl3_ttf_target_name} PROPERTY INTERFACE_SDL3_SHARED ${SDL3TTF_BUILD_SHARED_LIBS})
+    set_property(TARGET ${sdl3_ttf_target_name} APPEND PROPERTY COMPATIBLE_INTERFACE_BOOL SDL3_SHARED)
 endif()
 
 if(SDL3TTF_BUILD_SHARED_LIBS)
-    sdl_target_link_options_no_undefined(SDL3_ttf)
+    sdl_target_link_options_no_undefined(${sdl3_ttf_target_name})
 endif()
 
 if(SDL3TTF_BUILD_SHARED_LIBS)
@@ -212,8 +214,8 @@ if(SDL3TTF_HARFBUZZ)
         find_package(harfbuzz REQUIRED)
         list(APPEND PC_REQUIRES harfbuzz)
     endif()
-    target_compile_definitions(SDL3_ttf PRIVATE TTF_USE_HARFBUZZ=1)
-    target_link_libraries(SDL3_ttf PRIVATE harfbuzz::harfbuzz)
+    target_compile_definitions(${sdl3_ttf_target_name} PRIVATE TTF_USE_HARFBUZZ=1)
+    target_link_libraries(${sdl3_ttf_target_name} PRIVATE harfbuzz::harfbuzz)
 endif()
 
 if(SDL3TTF_FREETYPE)
@@ -254,7 +256,7 @@ if(SDL3TTF_FREETYPE)
         find_package(Freetype REQUIRED)
         list(APPEND PC_REQUIRES freetype2)
     endif()
-    target_link_libraries(SDL3_ttf PRIVATE Freetype::Freetype)
+    target_link_libraries(${sdl3_ttf_target_name} PRIVATE Freetype::Freetype)
 endif()
 
 # Restore BUILD_SHARED_LIBS variable
@@ -262,7 +264,7 @@ set(BUILD_SHARED_LIBS ${SDL3TTF_BUILD_SHARED_LIBS})
 
 if(SDL3TTF_INSTALL)
     install(
-        TARGETS SDL3_ttf
+        TARGETS ${sdl3_ttf_target_name}
         EXPORT SDL3_ttfTargets
         ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT devel
         LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT library
@@ -312,7 +314,7 @@ if(SDL3TTF_INSTALL)
         COMPONENT devel
     )
     install(EXPORT SDL3_ttfTargets
-        FILE SDL3_ttf-${sdl3_ttf_install_name_infix}-targets.cmake
+        FILE ${sdl3_ttf_target_name}-targets.cmake
         NAMESPACE SDL3_ttf::
         DESTINATION "${SDL3TTF_INSTALL_CMAKEDIR}"
         COMPONENT devel
@@ -361,7 +363,7 @@ if(SDL3TTF_SAMPLES)
     endif()
 
     foreach(prog glfont showfont testapp)
-        target_link_libraries(${prog} PRIVATE SDL3_ttf::${sdl3_ttf_export_name})
+        target_link_libraries(${prog} PRIVATE SDL3_ttf::${sdl3_ttf_target_name})
         target_link_libraries(${prog} PRIVATE ${sdl3_target_name})
 
         if(SDL3TTF_SAMPLES_INSTALL)