31 lines
1.2 KiB
CMake
31 lines
1.2 KiB
CMake
cmake_minimum_required(VERSION 3.18)
|
|
project(GameEngine VERSION 0.1.0 LANGUAGES C CXX)
|
|
|
|
# --- Validate preset variables ---
|
|
if(NOT DEFINED SDL_LINK_TYPE OR NOT SDL_LINK_TYPE MATCHES "^(static|dynamic)$")
|
|
message(FATAL_ERROR "SDL_LINK_TYPE must be 'static' or 'dynamic'. Use a CMake preset.")
|
|
endif()
|
|
|
|
if(NOT DEFINED PLATFORM OR NOT PLATFORM MATCHES "^(windows|linux)$")
|
|
message(FATAL_ERROR "PLATFORM must be 'windows' or 'linux'. Use a CMake preset.")
|
|
endif()
|
|
|
|
message(STATUS "Build config: PLATFORM=${PLATFORM}, SDL_LINK_TYPE=${SDL_LINK_TYPE}, BUILD_TYPE=${CMAKE_BUILD_TYPE}")
|
|
|
|
# --- Resolve libraries ---
|
|
include(cmake/SDLSetup.cmake)
|
|
#include(cmake/SDLMixerSetup.cmake)
|
|
|
|
# --- On Linux with dynamic linking, set an $ORIGIN-relative RPATH so the
|
|
# binary can find shared libs next to itself without needing LD_LIBRARY_PATH.
|
|
# SDL_LINUX_RPATH is still used at build time so the dev build works in-place.
|
|
if(DEFINED SDL_LINUX_RPATH)
|
|
message(STATUS "Setting CMAKE_BUILD_RPATH to: ${SDL_LINUX_RPATH}")
|
|
set(CMAKE_BUILD_RPATH "${SDL_LINUX_RPATH}")
|
|
set(CMAKE_INSTALL_RPATH "$ORIGIN")
|
|
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH OFF)
|
|
endif()
|
|
|
|
# --- Subdirectories ---
|
|
add_subdirectory(engine)
|
|
add_subdirectory(game) |