diff --git a/CMakeLists.txt b/CMakeLists.txt index a377abc..e2db1ae 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -50,7 +50,49 @@ find_package(Qt6 ${QT_MIN_VERSION} REQUIRED COMPONENTS Sql ) -find_package(Qt6 ${QT_MIN_VERSION} QUIET COMPONENTS Gamepad) +set(ALAKARTE_SDL3_SOURCE_DIR "" CACHE PATH "Path to an SDL3 source tree to build instead of using the system SDL3 package") + +if (ALAKARTE_SDL3_SOURCE_DIR) + if (EXISTS "${ALAKARTE_SDL3_SOURCE_DIR}/CMakeLists.txt") + set(SDL_TESTS OFF CACHE BOOL "" FORCE) + set(SDL_TEST_LIBRARY OFF CACHE BOOL "" FORCE) + set(SDL_DISABLE_INSTALL ON CACHE BOOL "" FORCE) + set(SDL_SHARED OFF CACHE BOOL "" FORCE) + set(SDL_STATIC ON CACHE BOOL "" FORCE) + set(SDL_X11_XSCRNSAVER OFF CACHE BOOL "" FORCE) + + add_subdirectory("${ALAKARTE_SDL3_SOURCE_DIR}" third_party/SDL-build EXCLUDE_FROM_ALL) + + # SDL built from source is treated as a third-party dependency. Silence its + # warnings so they don't drown out warnings from A-La-Karte itself. + foreach(_alakarte_sdl_target IN ITEMS SDL3-static SDL3-static_a SDL3-shared SDL_uclibc) + if (TARGET ${_alakarte_sdl_target}) + target_compile_options(${_alakarte_sdl_target} PRIVATE + $<$:-w> + $<$:-w> + $<$:/w> + $<$:/w> + ) + endif() + endforeach() + else() + message(FATAL_ERROR "ALAKARTE_SDL3_SOURCE_DIR does not contain a CMakeLists.txt: ${ALAKARTE_SDL3_SOURCE_DIR}") + endif() +else() + find_package(SDL3 REQUIRED) +endif() + +if (NOT TARGET SDL3::SDL3) + if (TARGET SDL3::SDL3-static) + add_library(SDL3::SDL3 ALIAS SDL3::SDL3-static) + elseif (TARGET SDL3::SDL3-shared) + add_library(SDL3::SDL3 ALIAS SDL3::SDL3-shared) + elseif (TARGET SDL3::SDL3::SDL3) + add_library(SDL3::SDL3 ALIAS SDL3::SDL3::SDL3) + else() + message(FATAL_ERROR "SDL3 was found/built, but no usable CMake target was provided (expected SDL3::SDL3 or a compatible variant)") + endif() +endif() find_package(KF6 ${KF_MIN_VERSION} REQUIRED COMPONENTS Kirigami diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 18acc6d..107a940 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -43,6 +43,7 @@ target_link_libraries(alakarte PRIVATE Qt6::Concurrent Qt6::DBus Qt6::Svg + SDL3::SDL3 KF6::Kirigami KF6::I18n KF6::CoreAddons @@ -53,11 +54,6 @@ target_link_libraries(alakarte PRIVATE KF6::WindowSystem ) -if (TARGET Qt6::Gamepad) - target_link_libraries(alakarte PRIVATE Qt6::Gamepad) - target_compile_definitions(alakarte PRIVATE ALAKARTE_HAVE_QT_GAMEPAD=1) -endif() - ecm_add_qml_module(alakarte URI org.kde.alakarte VERSION 1.0 QML_FILES