From e4483eca01b48b943cd0461e24a74ae1a3139ed4 Mon Sep 17 00:00:00 2001 From: Nicolas James Date: Wed, 12 Feb 2025 21:57:46 +1100 Subject: Update to most recent version (old initial commit) --- src/dedicated/CMakeLists.txt | 60 ++++++++++++++++++++++++++++++++++++++++++++ src/dedicated/main.cc | 39 ++++++++++++++++++++++++++++ src/dedicated/main.hh | 16 ++++++++++++ 3 files changed, 115 insertions(+) create mode 100644 src/dedicated/CMakeLists.txt create mode 100644 src/dedicated/main.cc create mode 100644 src/dedicated/main.hh (limited to 'src/dedicated') diff --git a/src/dedicated/CMakeLists.txt b/src/dedicated/CMakeLists.txt new file mode 100644 index 0000000..e2245ef --- /dev/null +++ b/src/dedicated/CMakeLists.txt @@ -0,0 +1,60 @@ +cmake_minimum_required(VERSION 3.18) + +project(dedicated) + +#if (NOT TARGET shared) +# add_subdirectory(../shared shared) +#endif() +#if (NOT TARGET server) +# add_subdirectory(../server server) +#endif() +#add_subdirectory(../shared) +#add_subdirectory(../server) + +file (GLOB_RECURSE SOURCE_FILES CONFIGURE_DEPENDS + "*.cc" +) +file (GLOB_RECURSE HEADER_FILES CONFIGURE_DEPENDS + "*.hh" + "../server/*.hh" + "../shared/*.hh" +) +add_executable(${PROJECT_NAME} + ${SOURCE_FILES} +) + +find_library(LIB_SQLITE3 sqlite3 SQLITE3 REQUIRED) +find_library(LIB_PROTOBUF protobuf libprotobuf REQUIRED) +find_package(Boost COMPONENTS iostreams REQUIRED) +find_package(Threads REQUIRED) +find_package(Backtrace REQUIRED) + +target_compile_options(${PROJECT_NAME} PRIVATE + -Wall -Wextra -Wshadow -Wdouble-promotion -Wformat=2 -Wundef -fno-common + -Wconversion -Wpedantic -std=c++20 -O2 + -Wno-exceptions + -Wno-missing-field-initializers -Wno-unknown-pragmas +) +if (${IS_DEBUG}) + target_compile_options(${PROJECT_NAME} PRIVATE + ¦ -fstack-protector-strong -fno-omit-frame-pointer -fsanitize=undefined + ) + target_link_options(${PROJECT_NAME} PRIVATE + ¦ -fstack-protector-strong -fsanitize=undefined + ) +endif() +target_include_directories(${PROJECT_NAME} PRIVATE + "../../src" +) +target_link_libraries(${PROJECT_NAME} PRIVATE + ${LIB_PROTOBUF} + ${LIB_SQLITE3} + ${Backtrace_LIBRARIES} + ${Threads_LIBRARIES} + ${Boost_LIBRARIES} + shared + server +) +target_precompile_headers(${PROJECT_NAME} PRIVATE + ${HEADER_FILES} +) diff --git a/src/dedicated/main.cc b/src/dedicated/main.cc new file mode 100644 index 0000000..d9c5bb4 --- /dev/null +++ b/src/dedicated/main.cc @@ -0,0 +1,39 @@ +#include "main.hh" + +static std::string& get_port() noexcept { + static std::string port{shared::DEFAULT_PORT}; + return port; +} + +static bool parse_arg(const int& c, const char* const arg) { + switch (c) { + case 'p': + get_port() = boost::lexical_cast(arg); + break; + default: + return false; + } + return true; +} + +static const shared::args_t& get_options() { + static shared::args_t ret = []() -> shared::args_t { + shared::args_t ret{ + {.name = "port", .desc = "override the default port", .val = "p:"}}; + std::ranges::copy(shared::get_options(), std::back_inserter(ret)); + std::ranges::copy(server::get_options(), std::back_inserter(ret)); + return ret; + }(); + + return ret; +} + +int main(const int argc, char* const argv[]) { + shared::init(); + + shared::parse_args(argc, argv, get_options(), + {&parse_arg, &shared::parse_arg, &server::parse_arg}); + + shared::try_main(server::main, shared::DEFAULT_ADDRESS, get_port()); + return EXIT_SUCCESS; +} diff --git a/src/dedicated/main.hh b/src/dedicated/main.hh new file mode 100644 index 0000000..fe9d0c1 --- /dev/null +++ b/src/dedicated/main.hh @@ -0,0 +1,16 @@ +#ifndef DEDICATED_MAIN_HH_ +#define DEDICATED_MAIN_HH_ + +#include +#include + +#include + +#include "server/init.hh" +#include "server/server.hh" +#include "shared/init.hh" + +namespace dedicated {} + +#endif + -- cgit v1.2.3