From cd70186845c90aaaefbdb21b6d0f3c7caaa90a27 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Wed, 1 Apr 2026 08:01:28 +0200 Subject: kernel: split off objects into a library --- kernel/CMakeLists.txt | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) (limited to 'kernel/CMakeLists.txt') diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index cb3d8a5..206923e 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" @@ -40,13 +40,29 @@ add_executable("kernel" "src/filesystem/vfs.cpp" ) -target_include_directories("kernel" PRIVATE +target_include_directories("kernel-objs" PUBLIC "include" ) +target_link_libraries("kernel-objs" PRIVATE + "os::kapi" +) + +file(GLOB_RECURSE KERNEL_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "include/**.hpp") + +target_sources("kernel-objs" PUBLIC + FILE_SET HEADERS + BASE_DIRS "include" + FILES + ${KERNEL_HEADERS} +) + +add_executable("kernel" + $ +) + target_link_libraries("kernel" PRIVATE "os::arch" - "os::kapi" ) target_link_options("kernel" PRIVATE @@ -61,15 +77,6 @@ set_property(TARGET "kernel" "${KERNEL_LINKER_SCRIPT}" ) -file(GLOB_RECURSE KERNEL_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "include/**.hpp") - -target_sources("kernel" PUBLIC - FILE_SET HEADERS - BASE_DIRS "include" - FILES - ${KERNEL_HEADERS} -) - target_disassemble("kernel") target_extract_debug_symbols("kernel") target_strip("kernel") -- cgit v1.2.3 From 9b80bd2ca528a376c2bb6831020b3d78e4b252d6 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Wed, 1 Apr 2026 08:10:10 +0200 Subject: build: fix kernel+arch build --- kernel/CMakeLists.txt | 49 +++++++++++++++++++++++++++---------------------- 1 file changed, 27 insertions(+), 22 deletions(-) (limited to 'kernel/CMakeLists.txt') diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index 206923e..4aa72e1 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -12,7 +12,6 @@ add_library("kernel-objs" OBJECT "kstd/print.cpp" # Kernel Implementation - "src/main.cpp" "src/memory/bitmap_allocator.cpp" "src/memory/block_list_allocator.cpp" "src/memory/operators.cpp" @@ -44,7 +43,7 @@ target_include_directories("kernel-objs" PUBLIC "include" ) -target_link_libraries("kernel-objs" PRIVATE +target_link_libraries("kernel-objs" PUBLIC "os::kapi" ) @@ -57,28 +56,34 @@ target_sources("kernel-objs" PUBLIC ${KERNEL_HEADERS} ) -add_executable("kernel" - $ -) +add_library("os::kernel" ALIAS "kernel-objs") -target_link_libraries("kernel" PRIVATE - "os::arch" -) +if(CMAKE_CROSSCOMPILING) + add_executable("kernel" + "src/main.cpp" + ) -target_link_options("kernel" PRIVATE - "-T${KERNEL_LINKER_SCRIPT}" - "-no-pie" - "-nostdlib" -) + target_link_libraries("kernel" PRIVATE + "os::arch" + "os::kernel" + ) -set_property(TARGET "kernel" - APPEND - PROPERTY LINK_DEPENDS - "${KERNEL_LINKER_SCRIPT}" -) + 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_disassemble("kernel") -target_extract_debug_symbols("kernel") -target_strip("kernel") + target_generate_bootable_iso("kernel") +endif() -target_generate_bootable_iso("kernel") -- cgit v1.2.3 From 5ae03c52fe33882416aa6044993d8422ccb33ab4 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Wed, 1 Apr 2026 08:49:21 +0200 Subject: kernel: begin basic bht implementation --- kernel/CMakeLists.txt | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'kernel/CMakeLists.txt') diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index 4aa72e1..854fb33 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -1,4 +1,4 @@ -add_library("kernel-objs" OBJECT +add_library("kernel_objs" OBJECT # Platform-independent KAPI implementation "kapi/boot_modules.cpp" "kapi/cio.cpp" @@ -14,7 +14,6 @@ add_library("kernel-objs" OBJECT # Kernel Implementation "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" @@ -39,28 +38,29 @@ add_library("kernel-objs" OBJECT "src/filesystem/vfs.cpp" ) -target_include_directories("kernel-objs" PUBLIC +target_include_directories("kernel_objs" PUBLIC "include" ) -target_link_libraries("kernel-objs" PUBLIC +target_link_libraries("kernel_objs" PUBLIC "os::kapi" ) file(GLOB_RECURSE KERNEL_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "include/**.hpp") -target_sources("kernel-objs" PUBLIC +target_sources("kernel_objs" PUBLIC FILE_SET HEADERS BASE_DIRS "include" FILES ${KERNEL_HEADERS} ) -add_library("os::kernel" ALIAS "kernel-objs") +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 @@ -85,5 +85,8 @@ if(CMAKE_CROSSCOMPILING) target_strip("kernel") target_generate_bootable_iso("kernel") +else() + enable_coverage("kernel_objs") + add_subdirectory("tests") endif() -- cgit v1.2.3 From 1f652b8b5ca5dbea588975466801cb1479f3dda8 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Wed, 1 Apr 2026 12:15:25 +0200 Subject: kernel/tests: dissolve tests into source tree --- kernel/CMakeLists.txt | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) (limited to 'kernel/CMakeLists.txt') diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index 854fb33..d6b3a1b 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -87,6 +87,46 @@ if(CMAKE_CROSSCOMPILING) target_generate_bootable_iso("kernel") else() enable_coverage("kernel_objs") - add_subdirectory("tests") + + add_library("kernel_test_support" + "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/simulated_memory.cpp" + ) + add_library("os::kernel_test_support" ALIAS "kernel_test_support") + + target_link_libraries("kernel_test_support" PUBLIC + "os::kernel" + "Catch2::Catch2" + ) + + add_executable("kernel_tests" + # KAPI Shim Tests + "kapi/cpu.tests.cpp" + "kapi/system.tests.cpp" + + # KSTD Shim Tests + "kstd/print.tests.cpp" + + # Test Executable Main + "src/main.tests.cpp" + ) + add_executable("os::kernel_tests" ALIAS "kernel_tests") + + target_link_libraries("kernel_tests" PRIVATE + "os::kernel_test_support" + ) + + set_target_properties("kernel_tests" PROPERTIES + C_CLANG_TIDY "" + CXX_CLANG_TIDY "" + EXCLUDE_FROM_ALL NO + ) + + enable_coverage("kernel_tests") + catch_discover_tests("os::kernel_tests") endif() -- cgit v1.2.3 From 6c1921d77a6d23bd5850db5b8db20e0f1bc67f40 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Wed, 1 Apr 2026 12:23:00 +0200 Subject: kernel/tests: update coverage configuration --- kernel/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'kernel/CMakeLists.txt') diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index d6b3a1b..9db2ab7 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -88,7 +88,7 @@ if(CMAKE_CROSSCOMPILING) else() enable_coverage("kernel_objs") - add_library("kernel_test_support" + add_library("kernel_test_support" OBJECT "src/test_support/kapi/cpu.cpp" "src/test_support/kapi/cio.cpp" "src/test_support/kapi/interrupts.cpp" @@ -117,13 +117,13 @@ else() 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 "" - EXCLUDE_FROM_ALL NO ) enable_coverage("kernel_tests") -- cgit v1.2.3 From 790ffa870dee2c14cd45f669c0eb3e95c15fd1b6 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Wed, 1 Apr 2026 13:31:20 +0200 Subject: kernel: add bitmap_allocator tests --- kernel/CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) (limited to 'kernel/CMakeLists.txt') diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index 9db2ab7..926a682 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -111,6 +111,9 @@ else() # KSTD Shim Tests "kstd/print.tests.cpp" + # Memory Subsystem Tests + "src/memory/bitmap_allocator.tests.cpp" + # Test Executable Main "src/main.tests.cpp" ) -- cgit v1.2.3 From 7fc60f9350ebf86e2e13d09af159635ee8a1d086 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Wed, 1 Apr 2026 14:25:04 +0200 Subject: kernel: add ram disk device tests --- kernel/CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) (limited to 'kernel/CMakeLists.txt') diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index 926a682..4fadf4c 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -114,6 +114,9 @@ else() # Memory Subsystem Tests "src/memory/bitmap_allocator.tests.cpp" + # Storage Subsystem Tests + "src/devices/storage/ram_disk/device.tests.cpp" + # Test Executable Main "src/main.tests.cpp" ) -- cgit v1.2.3 From eaec1833e978d2443ffdfc226fff60d0b5571cb6 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Wed, 1 Apr 2026 16:27:51 +0200 Subject: kernel/tests: move initialization to a listener --- kernel/CMakeLists.txt | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'kernel/CMakeLists.txt') diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index 4fadf4c..ffd5156 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -95,12 +95,13 @@ else() "src/test_support/kapi/memory.cpp" "src/test_support/log_buffer.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::Catch2" + "Catch2::Catch2WithMain" ) add_executable("kernel_tests" @@ -116,9 +117,6 @@ else() # Storage Subsystem Tests "src/devices/storage/ram_disk/device.tests.cpp" - - # Test Executable Main - "src/main.tests.cpp" ) add_executable("os::kernel_tests" ALIAS "kernel_tests") -- cgit v1.2.3 From b078f2bf4726b5c62584cebd84107ac1028bb083 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Wed, 1 Apr 2026 17:26:13 +0200 Subject: kernel/tests: clean up fake memory implementation --- kernel/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) (limited to 'kernel/CMakeLists.txt') diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index ffd5156..4264441 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -94,6 +94,7 @@ else() "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" ) -- cgit v1.2.3 From f8456a8709b6894166865eb4ca067604f480eb7f Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Wed, 1 Apr 2026 21:16:10 +0200 Subject: kernel/tests: add basic heap allocator tests --- kernel/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) (limited to 'kernel/CMakeLists.txt') diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index 4264441..1b71a5f 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -115,6 +115,7 @@ else() # 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" -- cgit v1.2.3