From 348bcc999707c120a026f373bd3770b9d5e52935 Mon Sep 17 00:00:00 2001 From: oxmox Date: Wed, 22 Feb 2023 20:29:22 +0100 Subject: [PATCH] use the included SDL if not appropriate system-wide SDL was found --- CMakeLists.txt | 7 ++++++- external/CMakeLists.txt | 9 +++++++-- src/CMakeLists.txt | 1 - src/doompanning.cc | 2 +- src/dp_doom/CMakeLists.txt | 36 +++--------------------------------- 5 files changed, 17 insertions(+), 38 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0d7d5bb..56457f5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.12) +cmake_minimum_required(VERSION 3.14) project(doompanning) @@ -8,5 +8,10 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "ON") +# The SDL renderer backend in the version of ImGui included in this repo +# requires at least SDL-2.0.17. This is enforced in +# external/imgui/backends/imgui_impl_sdlrenderer.cpp . +find_package(SDL2 2.0.17) + add_subdirectory(external) add_subdirectory(src) diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt index f042a51..9f975cc 100644 --- a/external/CMakeLists.txt +++ b/external/CMakeLists.txt @@ -2,7 +2,12 @@ option(NNG_SETSTACKSIZE "Use rlimit for thread stack size" ON) set(NNG_TESTS OFF) set(NNG_ENABLE_NNGCAT OFF) add_subdirectory(nng) -find_package(SDL2 REQUIRED) + +if (NOT SDL2_FOUND) + add_subdirectory(SDL) +else() + message("-- Using system-installed SDL version ${SDL2_VERSION}") +endif() add_library(imgui OBJECT ${CMAKE_CURRENT_SOURCE_DIR}/imgui/imgui.cpp @@ -15,4 +20,4 @@ add_library(imgui OBJECT ) target_include_directories(imgui PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/imgui) -target_link_libraries(imgui PUBLIC SDL2::SDL2-static) \ No newline at end of file +target_link_libraries(imgui PUBLIC SDL2::SDL2-static) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 9d289ca..61eac65 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -42,7 +42,6 @@ target_link_libraries(dp_imgui_demo ) if (WIN32) - find_package(SDL2) target_link_libraries(doompanning PRIVATE SDL2::SDL2main) target_link_libraries(dp_imgui_demo PRIVATE SDL2::SDL2main) endif() diff --git a/src/doompanning.cc b/src/doompanning.cc index c033c8d..070c286 100644 --- a/src/doompanning.cc +++ b/src/doompanning.cc @@ -3,7 +3,7 @@ #include #include #include -#include +#include #include #include diff --git a/src/dp_doom/CMakeLists.txt b/src/dp_doom/CMakeLists.txt index 1b69ace..e6d45bd 100644 --- a/src/dp_doom/CMakeLists.txt +++ b/src/dp_doom/CMakeLists.txt @@ -3,8 +3,8 @@ cmake_minimum_required(VERSION 3.19) project(dp_doom LANGUAGES C) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) -set(BACKEND "nng" CACHE STRING "Which backend to use: Xlib, SDL1, SDL2 or nng") -option(WILDMIDI "Render MIDI using the WildMIDI library" OFF) +set(BACKEND "nng" CACHE STRING "Which backend to use: Xlib, SDL2 or nng") +option(WILDMIDI "Render MIDI using the WildMIDI library" ON) add_executable(dp_doom WIN32 "linuxdoom-1.10/am_map.c" @@ -174,22 +174,6 @@ if(BACKEND STREQUAL "Xlib") # These are for miniaudio. target_link_libraries(dp_doom PRIVATE m ${CMAKE_DL_LIBS} pthread) -elseif(BACKEND STREQUAL "SDL1") - target_sources(dp_doom PRIVATE - "linuxdoom-1.10/ib_sound/ib_sound_sdl.c" - "linuxdoom-1.10/ib_system/ib_system_sdl.c" - "linuxdoom-1.10/ib_video/ib_video_sdl.c" - ) - - find_package(SDL REQUIRED) - - # TODO - Add support for in-tree builds (I don't think it's - # actually possible with SDL1 since it lacks a CMake build system) - #if(NOT SDL-FOUND) - # add_subdirectory("external/sdl1" EXCLUDE_FROM_ALL) - #endif() - - target_link_libraries(dp_doom PRIVATE SDL::SDL) elseif(BACKEND STREQUAL "SDL2") target_sources(dp_doom PRIVATE "linuxdoom-1.10/ib_sound/ib_sound_sdl.c" @@ -197,20 +181,7 @@ elseif(BACKEND STREQUAL "SDL2") "linuxdoom-1.10/ib_video/ib_video_sdl.c" ) - find_package(SDL2) - - if(NOT SDL2_FOUND) - add_subdirectory("external/SDL" EXCLUDE_FROM_ALL) - if(SDL_STATIC) - target_link_libraries(dp_doom PRIVATE SDL2::SDL2main SDL2::SDL2-static) - else() - target_link_libraries(dp_doom PRIVATE SDL2::SDL2main SDL2::SDL2) - endif() - else() - target_link_libraries(dp_doom PRIVATE SDL2::SDL2main SDL2::SDL2) - endif() - - target_compile_definitions(dp_doom PRIVATE INCLUDE_SDL2_MAIN) + target_link_libraries(dp_doom PRIVATE SDL2::SDL2main SDL2::SDL2-static) elseif(BACKEND STREQUAL "nng") target_sources(dp_doom PRIVATE "linuxdoom-1.10/ib_sound/ib_sound_nng.c" @@ -218,7 +189,6 @@ elseif(BACKEND STREQUAL "nng") "linuxdoom-1.10/ib_video/ib_video_nng.c" ) - find_package(SDL2 REQUIRED) target_link_libraries(dp_doom PRIVATE SDL2::SDL2 PRIVATE m