openmohaa/code/sdl/CMakeLists.txt
smallmodel 28bdd1b2b3
Made the renderer modular and loadable
This removes coupling between the renderer and UI/client functions. An option USE_RENDERER_DLOPEN was added to specify whether a renderer module should be compiled and loaded, instead of integrating the renderer into the executable directly. This opens the door for a new renderer
2024-12-06 00:15:19 +01:00

85 lines
2.2 KiB
CMake

cmake_minimum_required(VERSION 3.12)
project(omohsdl)
set(SOURCES_SDL_CLIENT
"./sdl_input.c"
)
set(SOURCES_SDL_GL
"./sdl_gamma.c"
"./sdl_glimp.c"
)
if (NO_MODERN_DMA)
list(APPEND SOURCES_SDL "./sdl_snd.c")
endif()
add_library(omohsdl_client STATIC ${SOURCES_SDL_CLIENT})
target_compile_features(omohsdl_client PUBLIC c_variadic_macros)
target_link_libraries(omohsdl_client PRIVATE qcommon qcommon_standalone)
if (NO_MODERN_DMA)
target_compile_definitions(omohsdl_client PRIVATE NO_MODERN_DMA=1)
endif()
add_library(omohsdl_gl STATIC ${SOURCES_SDL_GL})
target_link_libraries(omohsdl_gl PRIVATE qcommon)
if(${CMAKE_VERSION} VERSION_GREATER "3.11")
cmake_policy(SET CMP0074 NEW)
endif()
add_library(sdllib INTERFACE)
if(WIN32)
find_package(SDL2)
if (SDL2_FOUND)
string(STRIP "${SDL2_LIBRARIES}" SDL2_LIBRARIES)
target_include_directories(sdllib INTERFACE ${SDL2_INCLUDE_DIRS})
target_link_libraries(sdllib INTERFACE ${SDL2_LIBRARIES})
else()
message(WARNING "SDL2 not found, falling back to using SDL2 from the source tree")
target_include_directories(sdllib INTERFACE "../SDL2/include-2.0.22")
if (MSVC)
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
add_library(sdl2 SHARED IMPORTED)
set_target_properties(sdl2 PROPERTIES
IMPORTED_IMPLIB "${CMAKE_SOURCE_DIR}/code/libs/win64/SDL264.lib"
)
add_library(sdl2main SHARED IMPORTED)
set_target_properties(sdl2main PROPERTIES
IMPORTED_IMPLIB "${CMAKE_SOURCE_DIR}/code/libs/win64/SDL264main.lib"
)
else()
add_library(sdl2 SHARED IMPORTED)
set_target_properties(sdl2 PROPERTIES
IMPORTED_IMPLIB "${CMAKE_SOURCE_DIR}/code/libs/win32/SDL2.lib"
)
add_library(sdl2main SHARED IMPORTED)
set_target_properties(sdl2main PROPERTIES
IMPORTED_IMPLIB "${CMAKE_SOURCE_DIR}/code/libs/win32/SDL2main.lib"
)
endif()
target_link_libraries(sdllib INTERFACE sdl2 sdl2main)
endif()
endif()
elseif(UNIX)
find_package(SDL2 REQUIRED)
if (SDL2_FOUND)
string(STRIP "${SDL2_LIBRARIES}" SDL2_LIBRARIES)
target_include_directories(sdllib INTERFACE ${SDL2_INCLUDE_DIRS})
target_link_libraries(sdllib INTERFACE ${SDL2_LIBRARIES})
endif()
endif()
target_link_libraries(omohsdl_client PUBLIC sdllib)
target_link_libraries(omohsdl_gl PUBLIC sdllib)