SDL_ttf: Don't add -Wl,--no-undefined for clang, windows 10

From 9e64654517afb76801f72c5827e8ea6d69345b61 Mon Sep 17 00:00:00 2001
From: AlpRabbit <[EMAIL REDACTED]>
Date: Mon, 27 Mar 2023 02:13:59 +0900
Subject: [PATCH] Don't add -Wl,--no-undefined for clang, windows 10

* Don't add -Wl,--no-undefined for clang, windows 10

Since clang on Windows 10 doesn't have `-Wl,--no-undefined` option, disabling it. [Same thing is done in SDL](https://github.com/libsdl-org/SDL/commit/34ecd71e80b651c9840f60d91be60e30305fdc6f).

* Fix mistakes

* Add -Wl,--no-undefined option

Add -Wl,--no-undefined option

* Fixed `WINDOWS` to `WIN32`
---
 CMakeLists.txt                  | 9 +++++++++
 cmake/PrivateSdlFunctions.cmake | 2 +-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index e9584aec..2a8d33b3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -166,6 +166,15 @@ if(SDL3TTF_BUILD_SHARED_LIBS)
     set_property(TARGET SDL3_ttf APPEND PROPERTY COMPATIBLE_INTERFACE_BOOL SDL3_SHARED)
 endif()
 
+if(SDL3TTF_BUILD_SHARED_LIBS)
+    sdl_target_link_options_no_undefined(SDL3_ttf)
+endif()
+
+if(SDL3TTF_BUILD_SHARED_LIBS)
+    # Make sure static library dependencies are built with -fPIC when building a shared SDL3_ttf
+    set(CMAKE_POSITION_INDEPENDENT_CODE ON)
+endif()
+
 set(INSTALL_EXTRA_TARGETS)
 set(PC_LIBS)
 set(PC_REQUIRES)
diff --git a/cmake/PrivateSdlFunctions.cmake b/cmake/PrivateSdlFunctions.cmake
index 5612056b..0f11b245 100644
--- a/cmake/PrivateSdlFunctions.cmake
+++ b/cmake/PrivateSdlFunctions.cmake
@@ -220,7 +220,7 @@ function(sdl_target_link_options_no_undefined TARGET)
             target_link_options(${TARGET} PRIVATE "-Wl,-undefined,error")
         else()
             sdl_check_linker_flag("-Wl,--no-undefined" HAVE_WL_NO_UNDEFINED)
-            if(HAVE_WL_NO_UNDEFINED)
+            if(HAVE_WL_NO_UNDEFINED AND NOT ((CMAKE_C_COMPILER_ID MATCHES "Clang") AND WIN32))
                 target_link_options(${TARGET} PRIVATE "-Wl,--no-undefined")
             endif()
         endif()