081bd9041b
format: storage.h
86 lines
2.9 KiB
CMake
86 lines
2.9 KiB
CMake
cmake_minimum_required(VERSION 3.25)
|
|
project(PaulDB VERSION 0.1.0 LANGUAGES C CXX)
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Sprachstandards
|
|
# ---------------------------------------------------------------------------
|
|
set(CMAKE_C_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_CXX_EXTENSIONS OFF) # -std=c++20 statt -std=gnu++20
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Conan-generierte Pakete einbinden (CMakeDeps-Finder liegen im build-Ordner)
|
|
# ---------------------------------------------------------------------------
|
|
# find_package(fmt REQUIRED) # einkommentieren wenn dep da ist
|
|
# find_package(spdlog REQUIRED)
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Schicht 1 - Storage Engine (C)
|
|
# Hinweis: neue .c-Dateien hier manuell eintragen (kein GLOB)
|
|
# ---------------------------------------------------------------------------
|
|
set(STORAGE_SOURCES
|
|
src/storage/page.c
|
|
src/storage/heap.c
|
|
src/storage/btree.c
|
|
src/storage/buffer_pool.c
|
|
src/storage/free_space_map.c
|
|
src/storage/arena.c
|
|
src/storage/wal.c
|
|
)
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Schicht 2 - Engine Logic (C++)
|
|
# ---------------------------------------------------------------------------
|
|
set(ENGINE_SOURCES
|
|
src/engine/query_router.cpp
|
|
src/engine/delta_merge.cpp
|
|
src/engine/mvcc.cpp
|
|
src/engine/executor.cpp
|
|
)
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Schicht 3 - SQL Frontend (C++)
|
|
# ---------------------------------------------------------------------------
|
|
set(SQL_SOURCES
|
|
src/sql/tokenizer.cpp
|
|
src/sql/parser.cpp
|
|
src/sql/ast.cpp
|
|
src/sql/planner.cpp
|
|
)
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Hauptprogramm
|
|
# ---------------------------------------------------------------------------
|
|
add_executable(pauldb
|
|
src/main.cpp
|
|
${STORAGE_SOURCES}
|
|
${ENGINE_SOURCES}
|
|
${SQL_SOURCES}
|
|
)
|
|
|
|
target_include_directories(pauldb
|
|
PRIVATE
|
|
${CMAKE_CURRENT_SOURCE_DIR}/include
|
|
)
|
|
|
|
# Externe Libs linken - Beispiel:
|
|
# target_link_libraries(pauldb PRIVATE fmt::fmt spdlog::spdlog)
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Tests (CTest)
|
|
# ---------------------------------------------------------------------------
|
|
enable_testing()
|
|
|
|
add_executable(test_page
|
|
test/storage/test_page.c
|
|
src/storage/page.c
|
|
)
|
|
target_include_directories(test_page PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include)
|
|
add_test(NAME test_page COMMAND test_page)
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Installationsregeln (fur package() in conanfile.py)
|
|
# ---------------------------------------------------------------------------
|
|
install(TARGETS pauldb DESTINATION bin)
|