From a2f3e2ac236e018f82b68db8ab5e5d428031cd4e Mon Sep 17 00:00:00 2001 From: Anonymous Maarten Date: Tue, 13 Jan 2026 20:58:31 +0100 Subject: [PATCH] cmake: compile SDL_uclibc separately for shared and static SDL3, ensuring fPIC for shared SDL3 (cherry picked from commit 6f19fecba33f3a6d921c824d4cb11827281cc61a) --- CMakeLists.txt | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 558ac830c3..a2b390d695 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1294,22 +1294,25 @@ sdl_glob_sources( "${SDL3_SOURCE_DIR}/src/video/yuv2rgb/*.h" ) -# Build uclibc as a static library such that non-used symbols don't end up in the SDL3 shared library. file(GLOB SDL_UCLIBC_SOURCES "${SDL3_SOURCE_DIR}/src/libm/*.c") -add_library(SDL_uclibc STATIC "${SDL_UCLIBC_SOURCES}") -target_compile_definitions(SDL_uclibc PRIVATE USING_GENERATED_CONFIG_H) -target_include_directories(SDL_uclibc PRIVATE "${SDL3_BINARY_DIR}/include-config-$>/build_config") -target_include_directories(SDL_uclibc PRIVATE "${SDL3_SOURCE_DIR}/src") -target_include_directories(SDL_uclibc PRIVATE "${SDL3_SOURCE_DIR}/include") -SDL_AddCommonCompilerFlags(SDL_uclibc) -target_compile_definitions(SDL_uclibc PRIVATE "$<$:DEBUG>") -sdl_sources(STATIC "$") -set_property(TARGET SDL_uclibc PROPERTY UNITY_BUILD OFF) if(TARGET SDL3-shared) + # Build uclibc as a static library such that non-used symbols don't end up in the SDL3 shared library. + add_library(SDL_uclibc STATIC ${SDL_UCLIBC_SOURCES}) + set_property(TARGET SDL_uclibc PROPERTY POSITION_INDEPENDENT_CODE TRUE) + target_compile_definitions(SDL_uclibc PRIVATE USING_GENERATED_CONFIG_H) + target_include_directories(SDL_uclibc PRIVATE "${SDL3_BINARY_DIR}/include-config-$>/build_config") + target_include_directories(SDL_uclibc PRIVATE "${SDL3_SOURCE_DIR}/src") + target_include_directories(SDL_uclibc PRIVATE "${SDL3_SOURCE_DIR}/include") + SDL_AddCommonCompilerFlags(SDL_uclibc) + target_compile_definitions(SDL_uclibc PRIVATE "$<$:DEBUG>") + set_property(TARGET SDL_uclibc PROPERTY UNITY_BUILD OFF) target_link_libraries(SDL3-shared PRIVATE SDL_uclibc) + if(HAVE_GCC_FVISIBILITY) + set_property(TARGET SDL_uclibc PROPERTY C_VISIBILITY_PRESET "hidden") + endif() endif() -if(HAVE_GCC_FVISIBILITY) - set_property(TARGET SDL_uclibc PROPERTY C_VISIBILITY_PRESET "hidden") +if(TARGET SDL3-static) + target_sources(SDL3-static PRIVATE ${SDL_UCLIBC_SOURCES}) endif() # Enable/disable various subsystems of the SDL library