aboutsummaryrefslogtreecommitdiff
path: root/kernel/CMakeLists.txt
diff options
context:
space:
mode:
authorMarcel Braun <marcel.braun@ost.ch>2026-04-02 08:48:00 +0200
committerMarcel Braun <marcel.braun@ost.ch>2026-04-02 08:48:00 +0200
commit0c01a95325b26151ff3c9a70142f5dc83ff7d53f (patch)
tree9bf034f544ae773b653554a54edfce232f835754 /kernel/CMakeLists.txt
parent022d3e872de9c5a6a52c67f74af13706552330c0 (diff)
parent3eb680cf5bcef626505cac82820996d8db4170d7 (diff)
downloadteachos-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.txt107
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")