aboutsummaryrefslogtreecommitdiff
path: root/src/dedicated
diff options
context:
space:
mode:
authorNicolas James <Eele1Ephe7uZahRie@tutanota.com>2025-02-12 21:57:46 +1100
committerNicolas James <Eele1Ephe7uZahRie@tutanota.com>2025-02-12 21:57:46 +1100
commite4483eca01b48b943cd0461e24a74ae1a3139ed4 (patch)
treeed58c3c246e3af1af337697695d780aa31f6ad9a /src/dedicated
parent1cc08c51eb4b0f95c30c0a98ad1fc5ad3459b2df (diff)
Update to most recent version (old initial commit)
Diffstat (limited to 'src/dedicated')
-rw-r--r--src/dedicated/CMakeLists.txt60
-rw-r--r--src/dedicated/main.cc39
-rw-r--r--src/dedicated/main.hh16
3 files changed, 115 insertions, 0 deletions
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<std::string>(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 <ranges>
+#include <string>
+
+#include <boost/lexical_cast.hpp>
+
+#include "server/init.hh"
+#include "server/server.hh"
+#include "shared/init.hh"
+
+namespace dedicated {}
+
+#endif
+