Skip to content

Commit

Permalink
Add support for linking against SDL3 as a system package.
Browse files Browse the repository at this point in the history
  • Loading branch information
Themaister committed Jan 22, 2025
1 parent 7caa0bc commit cd95c46
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 8 deletions.
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ option(GRANITE_FFMPEG "Enable FFmpeg." OFF)
option(GRANITE_FFMPEG_VULKAN "Enable experimental Vulkan HW decode support in FFmpeg." OFF)
option(GRANITE_FAST_MATH "Enable fast math." ON)
option(GRANITE_SHIPPING "Disable code paths not related to development." OFF)
option(GRANITE_SYSTEM_SDL "Use system SDL3 instead of vendored submodule." OFF)

if (GRANITE_FAST_MATH)
message("Enabling fast math.")
Expand Down
8 changes: 7 additions & 1 deletion application/input/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,11 @@ target_link_libraries(granite-input PUBLIC granite-util granite-event granite-ma

if (${GRANITE_PLATFORM} MATCHES "SDL")
add_granite_internal_static_lib(granite-input-sdl input_sdl.cpp input_sdl.hpp)
target_link_libraries(granite-input-sdl PUBLIC granite-input SDL3-static)
target_link_libraries(granite-input-sdl PUBLIC granite-input)
if (GRANITE_SYSTEM_SDL)
find_package(SDL3 REQUIRED)
target_link_libraries(granite-input-sdl PUBLIC SDL3::SDL3-shared)
else()
target_link_libraries(granite-input-sdl PUBLIC SDL3-static)
endif()
endif()
16 changes: 10 additions & 6 deletions application/platforms/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,17 @@ elseif (${GRANITE_PLATFORM} MATCHES "libretro")
target_include_directories(granite-platform PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/libretro)
elseif (${GRANITE_PLATFORM} MATCHES "SDL")
add_granite_internal_static_lib(granite-platform application_sdl3.cpp)
# For non-vendored version, but SDL3 is not stable yet as far as I can tell.
#find_package(SDL3 REQUIRED CONFIG REQUIRED COMPONENTS SDL3-shared)
#target_link_libraries(granite-platform PRIVATE SDL3::SDL3-shared)
target_link_libraries(granite-platform PRIVATE SDL3-static granite-input-sdl)
if (NOT WIN32)
target_link_libraries(granite-platform PRIVATE dl)

if (GRANITE_SYSTEM_SDL)
find_package(SDL3 REQUIRED)
target_link_libraries(granite-platform PRIVATE SDL3::SDL3-shared)
else()
target_link_libraries(granite-platform PRIVATE SDL3-static)
if (NOT WIN32)
target_link_libraries(granite-platform PRIVATE dl)
endif()
endif()
target_link_libraries(granite-platform PRIVATE granite-input-sdl)
elseif (${GRANITE_PLATFORM} MATCHES "headless")
add_granite_internal_static_lib(granite-platform application_headless_wrapper.cpp)
elseif (${GRANITE_PLATFORM} MATCHES "null")
Expand Down
2 changes: 1 addition & 1 deletion third_party/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ else()
endif()
target_link_libraries(granite-volk PRIVATE granite-volk-headers)

if ((NOT ANDROID) AND (${GRANITE_PLATFORM} MATCHES "SDL"))
if ((NOT ANDROID) AND (${GRANITE_PLATFORM} MATCHES "SDL") AND (NOT GRANITE_SYSTEM_SDL))
set(SDL_SHARED OFF CACHE BOOL "" FORCE)
set(SDL_STATIC ON CACHE BOOL "" FORCE)
set(SDL_TIMERS ON CACHE BOOL "" FORCE)
Expand Down

0 comments on commit cd95c46

Please sign in to comment.