# The server, which runs games with the simulation library. Built as part of the game's desktop build, or on its own
# (for the VPS, without SDL):
#   cmake -S server -B build-server -DCMAKE_BUILD_TYPE=Release && cmake --build build-server
cmake_minimum_required(VERSION 3.24)
project(smack_a_brother_server LANGUAGES C CXX)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(EXTERNAL ${CMAKE_CURRENT_SOURCE_DIR}/../external)

if(NOT TARGET datachannel-static)
    set(NO_MEDIA ON CACHE BOOL "" FORCE)
    set(NO_EXAMPLES ON CACHE BOOL "" FORCE)
    set(NO_TESTS ON CACHE BOOL "" FORCE)
    add_subdirectory(${EXTERNAL}/libdatachannel ${CMAKE_BINARY_DIR}/libdatachannel EXCLUDE_FROM_ALL)
endif()
if(NOT TARGET sim)
    include(${CMAKE_CURRENT_SOURCE_DIR}/../src/sim.cmake)
endif()
if(NOT TARGET simdjson)
    add_library(simdjson STATIC ${EXTERNAL}/simdjson/singleheader/simdjson.cpp)
    target_include_directories(simdjson SYSTEM PUBLIC ${EXTERNAL}/simdjson/singleheader)
    target_compile_definitions(simdjson PUBLIC SIMDJSON_EXCEPTIONS=0)
endif()

add_executable(smack_a_brother_server server.cpp)
target_include_directories(smack_a_brother_server PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../src)
target_link_libraries(smack_a_brother_server PRIVATE sim LibDataChannel::LibDataChannelStatic simdjson)
set_target_properties(smack_a_brother_server PROPERTIES OUTPUT_NAME smack-a-brother-server)
