diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2026-04-21 13:06:35 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-04-21 13:06:35 +0200 |
| commit | 9b4cbc6ba3f8059278a20a4893780717851ce8e4 (patch) | |
| tree | bb089d306639e1c3ef27c9b8f3fc90e8742f4117 /libs/kstd | |
| parent | 3441e7e164d8e5e8413a1eb47e3e9f3c824ed2d0 (diff) | |
| download | teachos-9b4cbc6ba3f8059278a20a4893780717851ce8e4.tar.xz teachos-9b4cbc6ba3f8059278a20a4893780717851ce8e4.zip | |
build: clean up configuration
Diffstat (limited to 'libs/kstd')
| -rw-r--r-- | libs/kstd/CMakeLists.txt | 97 |
1 files changed, 73 insertions, 24 deletions
diff --git a/libs/kstd/CMakeLists.txt b/libs/kstd/CMakeLists.txt index ced3138..ee84ff1 100644 --- a/libs/kstd/CMakeLists.txt +++ b/libs/kstd/CMakeLists.txt @@ -1,30 +1,52 @@ -add_library("kstd" STATIC) -add_library("libs::kstd" ALIAS "kstd") +cmake_minimum_required(VERSION "3.27.0") -if(CMAKE_CROSSCOMPILING) - set(KSTD_LIBC_SYMBOLS - "abort" - "strlen" - "memcmp" - "memcpy" - ) +project("kstd" + DESCRIPTION "A kernel STL implementation" + VERSION "0.0.1" + LANGUAGES CXX +) - set(KSTD_LIBC_SOURCES - "src/libc/stdlib.cpp" - "src/libc/string.cpp" - ) +include("CTest") + +#[============================================================================[ +# External Dependencies +#]============================================================================] + +include("FetchContent") + +if (BUILD_TESTING) + FetchContent_Declare( + "Catch2" + URL "https://github.com/catchorg/Catch2/archive/refs/tags/v3.7.1.tar.gz" + URL_HASH "SHA256=c991b247a1a0d7bb9c39aa35faf0fe9e19764213f28ffba3109388e62ee0269c" + EXCLUDE_FROM_ALL + FIND_PACKAGE_ARGS + ) + + FetchContent_MakeAvailable("Catch2") + + find_package("Catch2") + include("Catch") endif() -target_sources("kstd" PRIVATE - ${KSTD_LIBC_SOURCES} +#[============================================================================[ +# Library +#]============================================================================] - "src/os/error.cpp" +add_library("kstd" STATIC) +add_library("kstd::lib" ALIAS "kstd") +target_sources("kstd" PRIVATE + "src/os/error.cpp" "src/mutex.cpp" "src/vformat.cpp" ) -file(GLOB_RECURSE KSTD_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "include/kstd/*") +file(GLOB_RECURSE KSTD_HEADERS + RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} + CONFIGURE_DEPENDS + "include/kstd/*" +) target_sources("kstd" PUBLIC FILE_SET HEADERS @@ -37,12 +59,37 @@ target_include_directories("kstd" PUBLIC "include" ) -if(CMAKE_CROSSCOMPILING) +set_target_properties("kstd" PROPERTIES + VERIFY_INTERFACE_HEADER_SETS YES +) + +if(NOT BUILD_TESTING) + target_sources("kstd" PRIVATE + "src/libc/stdlib.cpp" + "src/libc/string.cpp" + ) + + set(KSTD_LIBC_SYMBOLS + "abort" + "strlen" + "memcmp" + "memcpy" + ) + list(TRANSFORM KSTD_LIBC_SYMBOLS PREPEND "-Wl,--undefined=") target_link_options("kstd" INTERFACE ${KSTD_LIBC_SYMBOLS}) -else() - add_executable("kstd_tests" +endif() + +#[============================================================================[ +# Tests +#]============================================================================] + +if(BUILD_TESTING) + add_executable("kstd_tests") + add_executable("kstd::tests" ALIAS "kstd_tests") + + target_sources("kstd_tests" PRIVATE "tests/src/flat_map.cpp" "tests/src/format.cpp" "tests/src/vector.cpp" @@ -57,7 +104,7 @@ else() target_link_libraries("kstd_tests" PRIVATE "Catch2::Catch2WithMain" - "libs::kstd" + "kstd::lib" ) set_target_properties("kstd_tests" PROPERTIES @@ -66,8 +113,10 @@ else() EXCLUDE_FROM_ALL NO ) - enable_coverage("kstd") - enable_coverage("kstd_tests") + if(COMMAND "enable_coverage") + enable_coverage("kstd") + enable_coverage("kstd_tests") + endif() - catch_discover_tests("kstd_tests") + catch_discover_tests("kstd::tests") endif()
\ No newline at end of file |
