From c8a3ebfcec4b879312903792e3ade3aadd8ff914 Mon Sep 17 00:00:00 2001 From: Dominic Masters Date: Sat, 23 Aug 2025 15:53:08 -0500 Subject: [PATCH] FindSDL2 --- CMakeLists.txt | 2 +- cmake/modules/FindSDL2.cmake | 42 ++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 cmake/modules/FindSDL2.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index ec3a5d9..b1bf6cf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -57,7 +57,7 @@ if(DUSK_TARGET_SYSTEM STREQUAL "linux") find_package(SDL2 REQUIRED) find_package(OpenGL REQUIRED) target_link_libraries(${DUSK_TARGET_NAME} PRIVATE - SDL2::SDL2 + SDL2 OpenGL::GL GL ) diff --git a/cmake/modules/FindSDL2.cmake b/cmake/modules/FindSDL2.cmake new file mode 100644 index 0000000..042742e --- /dev/null +++ b/cmake/modules/FindSDL2.cmake @@ -0,0 +1,42 @@ +# Try to find SDL2 in common locations +find_path(SDL2_INCLUDE_DIR SDL.h + PATHS + /usr/include/SDL2 + /usr/local/include/SDL2 + $ENV{SDL2_DIR}/include + PATH_SUFFIXES SDL2 +) + +find_library(SDL2_LIBRARY + NAMES SDL2 + PATHS + /usr/lib + /usr/local/lib + $ENV{SDL2_DIR}/lib +) + +if(SDL2_INCLUDE_DIR AND SDL2_LIBRARY) + set(SDL2_FOUND TRUE) + set(SDL2_LIBRARIES ${SDL2_LIBRARY}) + set(SDL2_INCLUDE_DIRS ${SDL2_INCLUDE_DIR}) +endif() + +# If not found, use FetchContent to acquire SDL2 +if(NOT SDL2_FOUND) + include(FetchContent) + FetchContent_Declare( + SDL2 + GIT_REPOSITORY https://github.com/libsdl-org/SDL.git + GIT_TAG release-2.28.5 # Change to desired version + ) + FetchContent_MakeAvailable(SDL2) + set(SDL2_FOUND TRUE) + set(SDL2_LIBRARIES SDL2) + set(SDL2_INCLUDE_DIRS ${sdl2_SOURCE_DIR}/include) +endif() + +# Provide variables for downstream usage +if(SDL2_FOUND) + set(SDL2_INCLUDE_DIR ${SDL2_INCLUDE_DIRS} CACHE PATH "SDL2 include directory") + set(SDL2_LIBRARY ${SDL2_LIBRARIES} CACHE FILEPATH "SDL2 library") +endif()