Update things
This commit is contained in:
+15
-88
@@ -15,17 +15,15 @@ cmake_minimum_required(VERSION 4.2.1)
|
||||
|
||||
project(archipelago)
|
||||
|
||||
cmake_host_system_information(RESULT _JOBS QUERY NUMBER_OF_LOGICAL_CORES)
|
||||
|
||||
# ExternalContent, the better FetchContent and ExternalProject. Even beats CPM because it isn't written to be fancy!
|
||||
include(cmake/externalcontent/ExternalContent.cmake)
|
||||
# Ensure we include ExternalContent, a much better reimplementation of FetchContent. Doesn't handle collisions though, that's on us.
|
||||
include("${CMAKE_SOURCE_DIR}/cmake/externalcontent/ExternalContent.cmake")
|
||||
|
||||
#--------------------------------------------------------------------------------#
|
||||
# Options
|
||||
#--------------------------------------------------------------------------------#
|
||||
|
||||
set(CACHE{ENABLE_SSL} TYPE BOOL HELP "Enable SSL support via wolfSSL?" VALUE ON)
|
||||
set(CACHE{ENABLE_COMPRESSION} TYPE BOOL HELP "Enable support for compression?" VALUE ON)
|
||||
set(CACHE{${___}ENABLE_SSL} TYPE BOOL HELP "Enable SSL support via wolfSSL?" VALUE ON)
|
||||
set(CACHE{${___}ENABLE_COMPRESSION} TYPE BOOL HELP "Enable support for compression?" VALUE ON)
|
||||
|
||||
#--------------------------------------------------------------------------------#
|
||||
# Libraries
|
||||
@@ -45,7 +43,9 @@ if(TRUE) # ASIO (Standalone)
|
||||
ExternalContent(
|
||||
NAME "asio"
|
||||
GIT_URL "https://github.com/xaymar/asio"
|
||||
GIT_REF "root"
|
||||
GIT_REF "v1.36.0"
|
||||
GIT_CLONE_OPTIONS --depth 1 --no-single-branch --recurse-submodules --shallow-submodules
|
||||
GIT_CHECKOUT_OPTIONS --recurse-submodules
|
||||
SKIP_BUILD
|
||||
)
|
||||
find_package(asio REQUIRED CONFIG
|
||||
@@ -58,7 +58,7 @@ if(TRUE) # nlohmann's JSON
|
||||
NAME "nlohmann_json"
|
||||
GIT_URL "https://github.com/nlohmann/json.git"
|
||||
GIT_REF "v3.12.0"
|
||||
GIT_CLONE_OPTIONS --depth 1 --no-single-branch --recurse-submodules --shallow-submodules -j ${_JOBS}
|
||||
GIT_CLONE_OPTIONS --depth 1 --no-single-branch --recurse-submodules --shallow-submodules
|
||||
GIT_CHECKOUT_OPTIONS --recurse-submodules
|
||||
CONFIGURE_OPTIONS -D JSON_BuildTests:BOOL=OFF -D JSON_CI:BOOL=OFF -D JSON_MultipleHeaders:BOOL=OFF
|
||||
SKIP_BUILD
|
||||
@@ -73,7 +73,7 @@ if(ENABLE_SSL) # wolfssl
|
||||
NAME "wolfssl"
|
||||
GIT_URL "https://github.com/wolfSSL/wolfssl.git"
|
||||
GIT_REF "v5.8.4-stable"
|
||||
GIT_CLONE_OPTIONS --depth 1 --no-single-branch --recurse-submodules --shallow-submodules -j ${_JOBS}
|
||||
GIT_CLONE_OPTIONS --depth 1 --no-single-branch --recurse-submodules --shallow-submodules
|
||||
GIT_CHECKOUT_OPTIONS --recurse-submodules
|
||||
CONFIGURE_ARGS -D BUILD_SHARED_LIBS:BOOL=OFF -D CMAKE_BUILD_TYPE:STRING=RelWithDebInfo -D WOLFSSL_CRYPT_TESTS:BOOL=OFF -D WOLFSSL_EXAMPLES:BOOL=OFF
|
||||
BUILD_ARGS --parallel --config Release --clean-first
|
||||
@@ -88,14 +88,14 @@ if(TRUE) # WebSocket++
|
||||
NAME "websocketpp"
|
||||
GIT_URL "https://github.com/xaymar/websocketpp.git"
|
||||
GIT_REF "patch-modern-cpp-and-asio"
|
||||
GIT_CLONE_OPTIONS --depth 1 --no-single-branch --recurse-submodules --shallow-submodules -j ${_JOBS}
|
||||
GIT_CLONE_OPTIONS --depth 1 --no-single-branch --recurse-submodules --shallow-submodules
|
||||
GIT_CHECKOUT_OPTIONS --recurse-submodules
|
||||
CONFIGURE_ARGS -D ENABLE_CPP11:BOOL=ON -D BUILD_EXAMPLES:BOOL=OFF -D BUILD_TESTS:BOOL=OFF -D USE_ASIO_STANDALONE:BOOL=ON
|
||||
# Try and fix C++11 support.
|
||||
CONFIGURE_ARGS -D "CMAKE_CPP_COMPILER_FLAGS=-D_WEBSOCKETPP_CPP11_STL_" -D "CMAKE_CPP_COMPILER_FLAGS=-D_WEBSOCKETPP_CPP11_STL_"
|
||||
# Optional: SSL support.
|
||||
CONFIGURE_ARGS -D OPENSSL_INCLUDE_DIR:STRING="${wolfssl_INSTALL_PATH}/include" -D OPENSSL_LIBRARIES:STRING="${wolfssl_INSTALL_PATH}/lib/wolfssl.lib" -D OPENSSL_VERSION:STRING="5.8.4" -D OPENSSL_FOUND:BOOL=ON
|
||||
BUILD_ARGS --parallel --config Release
|
||||
BUILD_ARGS --parallel --config Release --clean-first
|
||||
)
|
||||
find_package("websocketpp" REQUIRED CONFIG
|
||||
PATHS "${websocketpp_INSTALL_PATH}"
|
||||
@@ -108,7 +108,7 @@ if(ENABLE_COMPRESSION) # Compression support
|
||||
NAME "zlib-ng"
|
||||
GIT_URL "https://github.com/zlib-ng/zlib-ng.git"
|
||||
GIT_REF "2.3.2"
|
||||
GIT_CLONE_OPTIONS --depth 1 --no-single-branch --recurse-submodules --shallow-submodules -j ${_JOBS}
|
||||
GIT_CLONE_OPTIONS --depth 1 --no-single-branch --recurse-submodules --shallow-submodules
|
||||
GIT_CHECKOUT_OPTIONS --recurse-submodules
|
||||
CONFIGURE_ARGS -D BUILD_SHARED_LIBS:BOOL=OFF -D CMAKE_C_STANDARD:STRING=17 -D BUILD_TESTING:BOOL=OFF -D WITH_GTEST:BOOL=OFF -D WITH_FUZZERS:BOOL=OFF -D WITH_BENCHMARKS:BOOL=OFF -D WITH_BENCHMARK_APPS:BOOL=OFF -D INSTALL_UTILS:BOOL=OFF
|
||||
BUILD_ARGS --parallel --config Release --clean-first
|
||||
@@ -137,7 +137,7 @@ if(TRUE) # badaix's JSONRPC++
|
||||
NAME "jsonrpcpp"
|
||||
GIT_URL "https://github.com/badaix/jsonrpcpp.git"
|
||||
GIT_REF "v1.4.0"
|
||||
GIT_CLONE_OPTIONS --depth 1 --no-single-branch --recurse-submodules --shallow-submodules -j ${_JOBS}
|
||||
GIT_CLONE_OPTIONS --depth 1 --no-single-branch --recurse-submodules --shallow-submodules
|
||||
GIT_CHECKOUT_OPTIONS --recurse-submodules
|
||||
PATCH_FUNCTION jsonrpcpp_patch
|
||||
CONFIGURE_ARGS -D BUILD_EXAMPLE:BOOL=OFF -D BUILD_TESTS:BOOL=OFF -D CATCH_INSTALL_DOCS:BOOL=OFF -D CATCH_INSTALL_EXTRAS:BOOL=ON
|
||||
@@ -161,79 +161,6 @@ if(TRUE) # badaix's JSONRPC++
|
||||
endif()
|
||||
|
||||
#--------------------------------------------------------------------------------#
|
||||
# Project
|
||||
# Sub-Projects
|
||||
#--------------------------------------------------------------------------------#
|
||||
|
||||
file(GLOB_RECURSE _INCLUDE FOLLOW_SYMLINKS CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/pub/*")
|
||||
source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}/pub" PREFIX "Public" FILES ${_INCLUDE})
|
||||
|
||||
file(GLOB_RECURSE _SOURCE FOLLOW_SYMLINKS CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/priv/*")
|
||||
source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}/priv" PREFIX "Private" FILES ${_SOURCE})
|
||||
|
||||
add_executable("room-server")
|
||||
|
||||
target_sources("room-server"
|
||||
PRIVATE
|
||||
${_SOURCE}
|
||||
PUBLIC
|
||||
${_INCLUDE}
|
||||
)
|
||||
|
||||
target_include_directories("room-server"
|
||||
PRIVATE
|
||||
"priv"
|
||||
"pub/apsr"
|
||||
PUBLIC
|
||||
"pub"
|
||||
)
|
||||
|
||||
target_link_libraries("room-server"
|
||||
PRIVATE
|
||||
wolfSSL
|
||||
# I/O
|
||||
asio::asio
|
||||
# Transport
|
||||
websocketpp::websocketpp
|
||||
# Compression
|
||||
zlib-ng::zlib
|
||||
# Messaging
|
||||
nlohmann_json::nlohmann_json
|
||||
badaix::jsonrpcpp
|
||||
)
|
||||
|
||||
set_target_properties("room-server" PROPERTIES
|
||||
# Always generate position independent code.
|
||||
POSITION_INDEPENDENT_CODE ON
|
||||
|
||||
# Set C++ Standard and Extensions
|
||||
C_STANDARD 17
|
||||
C_STANDARD_REQUIRED ON
|
||||
CXX_STANDARD 20
|
||||
CXX_STANDARD_REQUIRED ON
|
||||
CXX_EXTENSIONS OFF
|
||||
|
||||
# Remove prefix from generated files.
|
||||
PREFIX ""
|
||||
IMPORT_PREFIX ""
|
||||
|
||||
# Never treat warnings as errors.
|
||||
COMPILE_WARNING_AS_ERROR OFF
|
||||
)
|
||||
|
||||
target_compile_definitions("room-server"
|
||||
PRIVATE
|
||||
ASIO_STANDALONE
|
||||
_WEBSOCKETPP_CPP11_STL_
|
||||
)
|
||||
|
||||
if(WIN32)
|
||||
# Disable/Enable a ton of things.
|
||||
target_compile_definitions("room-server" PRIVATE
|
||||
# Microsoft Visual C++
|
||||
_CRT_SECURE_NO_WARNINGS
|
||||
_ENABLE_EXTENDED_ALIGNED_STORAGE
|
||||
|
||||
# Windows version target
|
||||
_WIN32_WINNT=0x0A00
|
||||
)
|
||||
endif()
|
||||
add_subdirectory(room)
|
||||
|
||||
Reference in New Issue
Block a user