diff options
| author | Marcel Braun <marcel.braun@ost.ch> | 2026-04-02 08:48:00 +0200 |
|---|---|---|
| committer | Marcel Braun <marcel.braun@ost.ch> | 2026-04-02 08:48:00 +0200 |
| commit | 0c01a95325b26151ff3c9a70142f5dc83ff7d53f (patch) | |
| tree | 9bf034f544ae773b653554a54edfce232f835754 /kernel/CMakeLists.txt | |
| parent | 022d3e872de9c5a6a52c67f74af13706552330c0 (diff) | |
| parent | 3eb680cf5bcef626505cac82820996d8db4170d7 (diff) | |
| download | teachos-0c01a95325b26151ff3c9a70142f5dc83ff7d53f.tar.xz teachos-0c01a95325b26151ff3c9a70142f5dc83ff7d53f.zip | |
Merge branch 'fmorgner/develop-SA-FS26/kernel-bht' into 'develop-BA-FS26'
Add experimental support for kernel tests
See merge request teachos/kernel!20
Diffstat (limited to 'kernel/CMakeLists.txt')
| -rw-r--r-- | kernel/CMakeLists.txt | 107 |
1 files changed, 84 insertions, 23 deletions
diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index cb3d8a5..1b71a5f 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -1,4 +1,4 @@ -add_executable("kernel" +add_library("kernel_objs" OBJECT # Platform-independent KAPI implementation "kapi/boot_modules.cpp" "kapi/cio.cpp" @@ -12,10 +12,8 @@ add_executable("kernel" "kstd/print.cpp" # Kernel Implementation - "src/main.cpp" "src/memory/bitmap_allocator.cpp" "src/memory/block_list_allocator.cpp" - "src/memory/operators.cpp" "src/memory.cpp" "src/devices/block_device.cpp" "src/devices/block_device_utils.cpp" @@ -40,38 +38,101 @@ add_executable("kernel" "src/filesystem/vfs.cpp" ) -target_include_directories("kernel" PRIVATE +target_include_directories("kernel_objs" PUBLIC "include" ) -target_link_libraries("kernel" PRIVATE - "os::arch" +target_link_libraries("kernel_objs" PUBLIC "os::kapi" ) -target_link_options("kernel" PRIVATE - "-T${KERNEL_LINKER_SCRIPT}" - "-no-pie" - "-nostdlib" -) - -set_property(TARGET "kernel" - APPEND - PROPERTY LINK_DEPENDS - "${KERNEL_LINKER_SCRIPT}" -) - file(GLOB_RECURSE KERNEL_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "include/**.hpp") -target_sources("kernel" PUBLIC +target_sources("kernel_objs" PUBLIC FILE_SET HEADERS BASE_DIRS "include" FILES ${KERNEL_HEADERS} ) -target_disassemble("kernel") -target_extract_debug_symbols("kernel") -target_strip("kernel") +add_library("os::kernel" ALIAS "kernel_objs") + +if(CMAKE_CROSSCOMPILING) + add_executable("kernel" + "src/main.cpp" + "src/memory/operators.cpp" + ) + + target_link_libraries("kernel" PRIVATE + "os::arch" + "os::kernel" + ) + + target_link_options("kernel" PRIVATE + "-T${KERNEL_LINKER_SCRIPT}" + "-no-pie" + "-nostdlib" + ) + + set_property(TARGET "kernel" + APPEND + PROPERTY LINK_DEPENDS + "${KERNEL_LINKER_SCRIPT}" + ) + + target_disassemble("kernel") + target_extract_debug_symbols("kernel") + target_strip("kernel") + + target_generate_bootable_iso("kernel") +else() + enable_coverage("kernel_objs") + + add_library("kernel_test_support" OBJECT + "src/test_support/kapi/cpu.cpp" + "src/test_support/kapi/cio.cpp" + "src/test_support/kapi/interrupts.cpp" + "src/test_support/kapi/memory.cpp" + "src/test_support/log_buffer.cpp" + "src/test_support/page_mapper.cpp" + "src/test_support/simulated_memory.cpp" + "src/test_support/state_reset_listener.cpp" + ) + add_library("os::kernel_test_support" ALIAS "kernel_test_support") + + target_link_libraries("kernel_test_support" PUBLIC + "os::kernel" + "Catch2::Catch2WithMain" + ) + + add_executable("kernel_tests" + # KAPI Shim Tests + "kapi/cpu.tests.cpp" + "kapi/system.tests.cpp" + + # KSTD Shim Tests + "kstd/print.tests.cpp" + + # Memory Subsystem Tests + "src/memory/bitmap_allocator.tests.cpp" + "src/memory/block_list_allocator.tests.cpp" + + # Storage Subsystem Tests + "src/devices/storage/ram_disk/device.tests.cpp" + ) + add_executable("os::kernel_tests" ALIAS "kernel_tests") + + target_link_libraries("kernel_tests" PRIVATE + "os::kernel" + "os::kernel_test_support" + ) + + set_target_properties("kernel_tests" PROPERTIES + C_CLANG_TIDY "" + CXX_CLANG_TIDY "" + ) + + enable_coverage("kernel_tests") + catch_discover_tests("os::kernel_tests") +endif() -target_generate_bootable_iso("kernel") |
