use the included SDL if not appropriate system-wide SDL was found

This commit is contained in:
oxmox 2023-02-22 20:29:22 +01:00
parent b6f81cf375
commit 348bcc9997
5 changed files with 17 additions and 38 deletions

View file

@ -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)

View file

@ -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

View file

@ -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()

View file

@ -3,7 +3,7 @@
#include <imgui.h>
#include <backends/imgui_impl_sdl.h>
#include <backends/imgui_impl_sdlrenderer.h>
#include <SDL2/SDL.h>
#include <SDL.h>
#include <algorithm>
#include <array>

View file

@ -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)
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