cmake_minimum_required(VERSION 3.20) project(weaseldb VERSION 0.0.1) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release) endif() set(CMAKE_CXX_FLAGS_DEBUG "-g -O0 -Wall -Wextra") set(CMAKE_CXX_FLAGS_RELEASE "-g -O3 -DNDEBUG -fno-omit-frame-pointer") find_package(Threads REQUIRED) include(FetchContent) FetchContent_Declare( toml11 GIT_REPOSITORY https://github.com/ToruNiina/toml11.git GIT_TAG be08ba2be2a964edcdb3d3e3ea8d100abc26f286 # v4.4.0 ) FetchContent_MakeAvailable(toml11) FetchContent_Declare( doctest GIT_REPOSITORY https://github.com/doctest/doctest.git GIT_TAG 1da23a3e8119ec5cce4f9388e91b065e20bf06f5 # v2.4.12 ) FetchContent_MakeAvailable(doctest) FetchContent_Declare( nanobench GIT_REPOSITORY https://github.com/martinus/nanobench.git GIT_TAG a5a50c2b33eea2ff1fcb355cacdface43eb42b25 # v4.3.11 ) FetchContent_MakeAvailable(nanobench) FetchContent_Declare( nlohmann_json GIT_REPOSITORY https://github.com/nlohmann/json.git GIT_TAG bc889afb4c5bf1c0d8ee29ef35eaaf4c8bef8a5d # v3.11.2 ) FetchContent_MakeAvailable(nlohmann_json) include_directories(src) find_package(weaseljson REQUIRED) set(SOURCES src/main.cpp src/config.cpp src/commit_request.cpp) add_executable(weaseldb ${SOURCES}) target_link_libraries(weaseldb Threads::Threads toml11::toml11 weaseljson) enable_testing() add_executable(test_arena_allocator tests/test_arena_allocator.cpp) target_link_libraries(test_arena_allocator doctest::doctest) target_include_directories(test_arena_allocator PRIVATE src) add_executable(test_commit_request tests/test_commit_request.cpp src/commit_request.cpp) target_link_libraries(test_commit_request doctest::doctest weaseljson) target_include_directories(test_commit_request PRIVATE src) add_executable(bench_arena_allocator benchmarks/bench_arena_allocator.cpp) target_link_libraries(bench_arena_allocator nanobench) target_include_directories(bench_arena_allocator PRIVATE src) add_executable( bench_commit_request benchmarks/bench_commit_request.cpp benchmarks/test_data.cpp src/commit_request.cpp) target_link_libraries(bench_commit_request nanobench weaseljson) target_include_directories(bench_commit_request PRIVATE src benchmarks) add_executable( bench_parser_comparison benchmarks/bench_parser_comparison.cpp benchmarks/test_data.cpp src/commit_request.cpp) target_link_libraries(bench_parser_comparison nanobench weaseljson nlohmann_json::nlohmann_json) target_include_directories(bench_parser_comparison PRIVATE src benchmarks) add_test(NAME arena_allocator_tests COMMAND test_arena_allocator) add_test(NAME commit_request_tests COMMAND test_commit_request) add_test(NAME arena_allocator_benchmarks COMMAND bench_arena_allocator) add_test(NAME commit_request_benchmarks COMMAND bench_commit_request) add_test(NAME parser_comparison_benchmarks COMMAND bench_parser_comparison)