summaryrefslogtreecommitdiff
path: root/indra/cmake
diff options
context:
space:
mode:
authorErik Kundiman <erik@megapahit.org>2026-09-10 20:29:46 +0800
committerErik Kundiman <erik@megapahit.org>2026-09-10 20:29:46 +0800
commit907b3f013aa7f906faa4280ff05505f909ee460c (patch)
treeb4bd6e73532fff653c7f5b0b4534ee605f5b27ae /indra/cmake
parentda66c6f3d95682306b31e2646e73ba5505a73680 (diff)
Temporarily use pre-/self-built SDL3 on Debian
as current stable Debian 13 SDL3 has missing struct members. Revert this if 13 gets a newer SDL3 or the stable version upgrades to 14. The version chosen to be built on arm64 here is the same as in autobuild.xml, which is 3.2.24.
Diffstat (limited to 'indra/cmake')
-rw-r--r--indra/cmake/SDL3.cmake48
1 files changed, 40 insertions, 8 deletions
diff --git a/indra/cmake/SDL3.cmake b/indra/cmake/SDL3.cmake
index e5c8c912e8..715110eba2 100644
--- a/indra/cmake/SDL3.cmake
+++ b/indra/cmake/SDL3.cmake
@@ -12,15 +12,40 @@ else()
endif ()
if(USE_SDL_WINDOW)
- include(FindPkgConfig)
- pkg_search_module(SDL3 REQUIRED sdl3)
- target_link_directories(ll::SDL3 INTERFACE ${SDL3_LIBRARY_DIRS})
- target_link_libraries(ll::SDL3 INTERFACE ${SDL3_LIBRARIES})
- target_include_directories(ll::SDL3 SYSTEM INTERFACE ${SDL3_INCLUDE_DIRS})
- return ()
-
- use_system_binary(SDL3)
+ #use_system_binary(SDL3)
+ if (${LINUX_DISTRO} MATCHES debian)
+ if (CMAKE_SYSTEM_PROCESSOR MATCHES x86_64)
use_prebuilt_binary(SDL3)
+ elseif (${PREBUILD_TRACKING_DIR}/sentinel_installed IS_NEWER_THAN ${PREBUILD_TRACKING_DIR}/SDL3_installed OR NOT ${SDL3_installed} EQUAL 0)
+ if (NOT EXISTS ${CMAKE_BINARY_DIR}/SDL-release-3.2.24.tar.gz)
+ file(DOWNLOAD
+ https://github.com/libsdl-org/SDL/archive/refs/tags/release-3.2.24.tar.gz
+ ${CMAKE_BINARY_DIR}/SDL-release-3.2.24.tar.gz
+ )
+ endif ()
+ file(ARCHIVE_EXTRACT
+ INPUT ${CMAKE_BINARY_DIR}/SDL-release-3.2.24.tar.gz
+ DESTINATION ${CMAKE_BINARY_DIR}
+ )
+ try_compile(SDL3_RESULT
+ PROJECT SDL3
+ SOURCE_DIR ${CMAKE_BINARY_DIR}/SDL-release-3.2.24
+ BINARY_DIR ${CMAKE_BINARY_DIR}/SDL-release-3.2.24_build
+ CMAKE_FLAGS
+ -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
+ -DCMAKE_INSTALL_PREFIX:PATH=${LIBS_PREBUILT_DIR}
+ -DCMAKE_INSTALL_LIBDIR:PATH=${ARCH_PREBUILT_DIRS_RELEASE}
+ -DCMAKE_BUILD_WITH_INSTALL_RPATH:BOOL=ON
+ )
+ if (${SDL3_RESULT})
+ execute_process(
+ COMMAND ${CMAKE_MAKE_PROGRAM} install
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/SDL-release-3.2.24_build
+ RESULT_VARIABLE SDL3_installed
+ )
+ file(WRITE ${PREBUILD_TRACKING_DIR}/SDL3_installed "${SDL3_installed}")
+ endif ()
+ endif ()
find_library( SDL3_LIBRARY
NAMES SDL3 SDL3.lib libSDL3.so libSDL3.dylib
@@ -29,5 +54,12 @@ if(USE_SDL_WINDOW)
target_link_libraries(ll::SDL3 INTERFACE ${SDL3_LIBRARY})
target_include_directories(ll::SDL3 SYSTEM INTERFACE "${LIBS_PREBUILT_DIR}/include/")
+ else ()
+ include(FindPkgConfig)
+ pkg_search_module(SDL3 REQUIRED sdl3)
+ target_link_directories(ll::SDL3 INTERFACE ${SDL3_LIBRARY_DIRS})
+ target_link_libraries(ll::SDL3 INTERFACE ${SDL3_LIBRARIES})
+ target_include_directories(ll::SDL3 SYSTEM INTERFACE ${SDL3_INCLUDE_DIRS})
+ endif ()
endif(USE_SDL_WINDOW)