63 lines
2.5 KiB
CMake
63 lines
2.5 KiB
CMake
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
|
|
co_gns_server_endpoint.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
|
|
)
|
|
|
|
add_executable(co-gns-server-endpoint-tests test_co_gns_server_endpoint.cpp)
|
|
target_compile_options(co-gns-server-endpoint-tests PRIVATE -Wall -Wextra -Werror -UNDEBUG)
|
|
target_link_libraries(co-gns-server-endpoint-tests PRIVATE
|
|
commonwealth_online_gns_bridge
|
|
GameNetworkingSockets::shared
|
|
)
|
|
|
|
enable_testing()
|
|
add_test(NAME co-gns-server-bridge COMMAND co-gns-server-bridge-tests)
|
|
add_test(NAME co-gns-server-endpoint COMMAND co-gns-server-endpoint-tests)
|