From b4af01cd0805340f15d5b29e698174e3c63f7bd2 Mon Sep 17 00:00:00 2001 From: Max Bachmann Date: Thu, 3 Apr 2025 18:45:48 +0200 Subject: [PATCH] only build static library in some feature tests This fixes the feature detection in cases where linking the final executable would fail. This is fine since SDL only opens these libraries using dlopen as well. --- cmake/sdlchecks.cmake | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/cmake/sdlchecks.cmake b/cmake/sdlchecks.cmake index c3b310a96..42e87036f 100644 --- a/cmake/sdlchecks.cmake +++ b/cmake/sdlchecks.cmake @@ -1,3 +1,10 @@ +macro(check_c_source_compiles_static SOURCE VAR) + set(saved_CMAKE_TRY_COMPILE_TARGET_TYPE "${CMAKE_TRY_COMPILE_TARGET_TYPE}") + set(CMAKE_TRY_COMPILE_TARGET_TYPE "STATIC_LIBRARY") + check_c_source_compiles("${SOURCE}" ${VAR} ${ARGN}) + set(CMAKE_TRY_COMPILE_TARGET_TYPE "${saved_CMAKE_TRY_COMPILE_TARGET_TYPE}") +endmacro() + macro(FindLibraryAndSONAME _LIB) cmake_parse_arguments(_FLAS "" "" "LIBDIRS" ${ARGN}) @@ -369,7 +376,7 @@ macro(CheckX11) list(APPEND CMAKE_REQUIRED_LIBRARIES ${X11_LIB}) - check_c_source_compiles(" + check_c_source_compiles_static(" #include int main(int argc, char **argv) { Display *display; @@ -410,7 +417,7 @@ macro(CheckX11) set(SDL_VIDEO_DRIVER_X11_XINPUT2 1) # Check for multitouch - check_c_source_compiles(" + check_c_source_compiles_static(" #include #include #include @@ -427,7 +434,7 @@ macro(CheckX11) # check along with XInput2.h because we use Xfixes with XIBarrierReleasePointer if(SDL_X11_XFIXES AND HAVE_XFIXES_H_ AND HAVE_XINPUT2_H) - check_c_source_compiles(" + check_c_source_compiles_static(" #include #include #include @@ -1097,7 +1104,7 @@ macro(CheckHIDAPI) if(LibUSB_FOUND) cmake_push_check_state() list(APPEND CMAKE_REQUIRED_LIBRARIES LibUSB::LibUSB) - check_c_source_compiles(" + check_c_source_compiles_static(" #include #include int main(int argc, char **argv) {