sdl2-compat: cmake: add -Wl,--no-undefined if available

From 0856685456187c164da5a309150b73411693f78f Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Tue, 29 Nov 2022 15:57:42 +0100
Subject: [PATCH] cmake: add -Wl,--no-undefined if available

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

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9ba35e4..27f64f8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -22,6 +22,7 @@ include(CheckCSourceCompiles)
 include(CheckIncludeFile)
 include(CheckCCompilerFlag)
 include(CMakePackageConfigHelpers)
+include(CMakePushCheckState)
 include(GNUInstallDirs)
 include("${CMAKE_CURRENT_LIST_DIR}/cmake/sdlchecks.cmake")
 include("${CMAKE_CURRENT_LIST_DIR}/cmake/sdlplatform.cmake")
@@ -29,6 +30,17 @@ include("${CMAKE_CURRENT_LIST_DIR}/cmake/sdlplatform.cmake")
 SDL_DetectCMakePlatform()
 CheckOpenGLES()
 
+if(NOT MSVC AND NOT APPLE AND NOT OPENBSD)
+  cmake_push_check_state()
+  set(CMAKE_REQUIRED_FLAGS "-Wl,--no-undefined")
+  check_c_compiler_flag("" HAVE_NO_UNDEFINED)
+  cmake_pop_check_state()
+  if(HAVE_NO_UNDEFINED)
+    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--no-undefined")
+    set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined")
+  endif()
+endif()
+
 set(CMAKE_SKIP_RPATH TRUE)
 
 find_package(SDL3 QUIET)