From 314cb65843cfb0b632d65258c41942e388b4c0d6 Mon Sep 17 00:00:00 2001 From: Mars Ultor Date: Wed, 17 Dec 2025 15:54:01 -0600 Subject: [PATCH] boilerplate --- .gitignore | 1 + .gitmodules | 15 ++++++++ CMakeLists.txt | 79 +++++++++++++++++++++++++++++++++++++++++ SkywardGradeChecker | 1 + external/clickhouse-cpp | 1 + external/cpr | 1 + external/spdlog | 1 + external/tomlplusplus | 1 + 8 files changed, 100 insertions(+) create mode 100644 .gitignore create mode 100644 .gitmodules create mode 100644 CMakeLists.txt create mode 160000 SkywardGradeChecker create mode 160000 external/clickhouse-cpp create mode 160000 external/cpr create mode 160000 external/spdlog create mode 160000 external/tomlplusplus diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f65519e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +build/** diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..c0983b3 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,15 @@ +[submodule "SkywardGradeChecker"] + path = SkywardGradeChecker + url = https://git.keshavanand.net/KeshavAnandCode/SkywardGradeChecker +[submodule "external/spdlog"] + path = external/spdlog + url = https://github.com/gabime/spdlog +[submodule "external/cpr"] + path = external/cpr + url = https://github.com/libcpr/cpr +[submodule "external/clickhouse-cpp"] + path = external/clickhouse-cpp + url = https://github.com/ClickHouse/clickhouse-cpp +[submodule "external/tomlplusplus"] + path = external/tomlplusplus + url = https://github.com/marzer/tomlplusplus diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..b0f43ef --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,79 @@ +cmake_minimum_required(VERSION 3.20) + +# ----------------------------- +# Force Clang before project() is called +# ----------------------------- +if(NOT DEFINED CMAKE_C_COMPILER) + set(CMAKE_C_COMPILER clang CACHE STRING "" FORCE) +endif() +if(NOT DEFINED CMAKE_CXX_COMPILER) + set(CMAKE_CXX_COMPILER clang++ CACHE STRING "" FORCE) +endif() + +# ----------------------------- +# Project setup +# ----------------------------- +project(mainframe LANGUAGES CXX) + +set(CMAKE_CXX_STANDARD 23) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) +set(CMAKE_BUILD_TYPE Release) + +# ----------------------------- +# Dependencies (local submodules / cloned repos) +# ----------------------------- +add_subdirectory(external/spdlog) +add_subdirectory(external/cpr) +add_subdirectory(external/clickhouse-cpp) +add_subdirectory(external/tomlplusplus) +# ----------------------------- +# Executable +# ----------------------------- +add_executable(${PROJECT_NAME} src/main.cpp) + +# ----------------------------- +# Auto-discover include dirs under src/ +# ----------------------------- +file(GLOB_RECURSE SRC_SUBDIRS LIST_DIRECTORIES true "${CMAKE_CURRENT_SOURCE_DIR}/src/*") +set(SRC_INCLUDES "") +foreach(dir ${SRC_SUBDIRS}) + if(IS_DIRECTORY ${dir}) + list(APPEND SRC_INCLUDES ${dir}) + endif() +endforeach() + +# ----------------------------- +# Auto-discover all .cpp files except main.cpp +# ----------------------------- +file(GLOB_RECURSE ALL_CPP "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp") +list(REMOVE_ITEM ALL_CPP "${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp") + +# ----------------------------- +# Apply sources and includes +# ----------------------------- +target_sources(${PROJECT_NAME} PRIVATE ${ALL_CPP}) +target_include_directories(${PROJECT_NAME} PRIVATE ${SRC_INCLUDES}) + +# ----------------------------- +# Link libraries +# ----------------------------- +target_link_libraries(${PROJECT_NAME} PRIVATE + spdlog::spdlog + cpr::cpr + clickhouse-cpp-lib + tomlplusplus::tomlplusplus +) + +# ----------------------------- +# Compiler warnings (Clang/GCC) +# ----------------------------- +if(CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU") + add_compile_options( + -Wall -Wextra -Wpedantic + -Wconversion -Wshadow + -Wnull-dereference + -Wdouble-promotion + ) +endif() + diff --git a/SkywardGradeChecker b/SkywardGradeChecker new file mode 160000 index 0000000..8f01eaa --- /dev/null +++ b/SkywardGradeChecker @@ -0,0 +1 @@ +Subproject commit 8f01eaacb572bb76dac3830594f839eae858d800 diff --git a/external/clickhouse-cpp b/external/clickhouse-cpp new file mode 160000 index 0000000..3c94b44 --- /dev/null +++ b/external/clickhouse-cpp @@ -0,0 +1 @@ +Subproject commit 3c94b44894197860cabbba97c015b967055a55c2 diff --git a/external/cpr b/external/cpr new file mode 160000 index 0000000..53e2d28 --- /dev/null +++ b/external/cpr @@ -0,0 +1 @@ +Subproject commit 53e2d28696e542d4b32b7c42928395494bcafe64 diff --git a/external/spdlog b/external/spdlog new file mode 160000 index 0000000..0209b12 --- /dev/null +++ b/external/spdlog @@ -0,0 +1 @@ +Subproject commit 0209b12c502bbdd37e04d238d74af851457e8210 diff --git a/external/tomlplusplus b/external/tomlplusplus new file mode 160000 index 0000000..e7aaccc --- /dev/null +++ b/external/tomlplusplus @@ -0,0 +1 @@ +Subproject commit e7aaccca3fa3dbde9818ab8313250f3da4976e37