cmake_minimum_required(VERSION 3.20) project(CommonwealthOnlineGnsServerBridge LANGUAGES C CXX) set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(GNS_SOURCE_DIR "" CACHE PATH "Path to the pinned GameNetworkingSockets source tree") if(NOT EXISTS "${GNS_SOURCE_DIR}/CMakeLists.txt") message(FATAL_ERROR "GNS_SOURCE_DIR must point to an initialized GameNetworkingSockets source tree") endif() set(BUILD_STATIC_LIB OFF CACHE BOOL "" FORCE) set(BUILD_SHARED_LIB ON CACHE BOOL "" FORCE) set(BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) set(BUILD_TESTS OFF CACHE BOOL "" FORCE) set(BUILD_TOOLS OFF CACHE BOOL "" FORCE) set(ENABLE_ICE OFF CACHE BOOL "" FORCE) set(USE_STEAMWEBRTC OFF CACHE BOOL "" FORCE) set(USE_CRYPTO OpenSSL CACHE STRING "" FORCE) set(USE_CRYPTO25519 OpenSSL CACHE STRING "" FORCE) add_subdirectory("${GNS_SOURCE_DIR}" "${CMAKE_BINARY_DIR}/gns") add_library(commonwealth_online_gns_bridge SHARED co_gns_server_bridge.cpp) target_include_directories(commonwealth_online_gns_bridge PUBLIC "${CMAKE_CURRENT_LIST_DIR}") target_compile_definitions(commonwealth_online_gns_bridge PRIVATE CO_GNS_BRIDGE_BUILD) # steamnetworkingtypes.h declares several address helpers inline, while the # standalone definitions live in isteamnetworkingutils.h. Make that public GNS # utility header explicit for this translation unit instead of suppressing the # undefined-inline diagnostic. target_compile_options(commonwealth_online_gns_bridge PRIVATE -Wall -Wextra -Werror -include steam/isteamnetworkingutils.h ) target_link_libraries(commonwealth_online_gns_bridge PRIVATE GameNetworkingSockets::shared) set_target_properties(commonwealth_online_gns_bridge PROPERTIES OUTPUT_NAME "commonwealth_online_gns_bridge") add_executable(co-gns-server-bridge-tests test_co_gns_server_bridge.cpp) target_compile_options(co-gns-server-bridge-tests PRIVATE -Wall -Wextra -Werror -UNDEBUG) target_link_libraries(co-gns-server-bridge-tests PRIVATE commonwealth_online_gns_bridge GameNetworkingSockets::shared ) enable_testing() add_test(NAME co-gns-server-bridge COMMAND co-gns-server-bridge-tests)