SDL_ttf: Don't add -Wl,--no-undefined for clang, windows 10 [SDL2] (#278)

From 52f81247c52ccd1161523081736c2ccb738078bd Mon Sep 17 00:00:00 2001
From: AlpRabbit <[EMAIL REDACTED]>
Date: Mon, 27 Mar 2023 02:15:24 +0900
Subject: [PATCH] Don't add -Wl,--no-undefined for clang, windows 10 [SDL2]
 (#278)

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

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

* Fix `WINDOWS` to `WIN32`

* Add `-Wl,--no-undefined` option.
---
 CMakeLists.txt                  | 9 +++++++++
 cmake/PrivateSdlFunctions.cmake | 2 +-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index e946a16a..8d8a8d3e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -164,6 +164,15 @@ if(SDL2TTF_BUILD_SHARED_LIBS)
     set_property(TARGET SDL2_ttf APPEND PROPERTY COMPATIBLE_INTERFACE_BOOL SDL2_SHARED)
 endif()
 
+if(SDL2TTF_BUILD_SHARED_LIBS)
+    sdl_target_link_options_no_undefined(SDL2_ttf)
+endif()
+
+if(SDL2TTF_BUILD_SHARED_LIBS)
+    # Make sure static library dependencies are built with -fPIC when building a shared SDL2_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 21a0e272..d8bc9eae 100644
--- a/cmake/PrivateSdlFunctions.cmake
+++ b/cmake/PrivateSdlFunctions.cmake
@@ -265,7 +265,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()