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