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 /kernel | |
| parent | 3441e7e164d8e5e8413a1eb47e3e9f3c824ed2d0 (diff) | |
| download | teachos-9b4cbc6ba3f8059278a20a4893780717851ce8e4.tar.xz teachos-9b4cbc6ba3f8059278a20a4893780717851ce8e4.zip | |
build: clean up configuration
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/CMakeLists.txt | 147 |
1 files changed, 97 insertions, 50 deletions
diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index e83e529..d4484cd 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -1,5 +1,12 @@ -add_library("kernel_objs" OBJECT - # Platform-independent KAPI implementation +#[============================================================================[ +# Library +#]============================================================================] + +add_library("kernel_lib" OBJECT) +add_library("kernel::lib" ALIAS "kernel_lib") + +target_sources("kernel_lib" PRIVATE + # Kernel-defined KAPI Implementation "kapi/acpi.cpp" "kapi/boot_modules.cpp" "kapi/cio.cpp" @@ -13,27 +20,31 @@ add_library("kernel_objs" OBJECT "kapi/memory.cpp" "kapi/system.cpp" - # KSTD OS Implementation + # Kernel-defined KSTD Implementation "kstd/os.cpp" "kstd/print.cpp" - # Kernel Implementation + # ACPI Subsystem "src/acpi/manager.cpp" + + # Memory Subsystem "src/memory/bitmap_allocator.cpp" "src/memory/block_list_allocator.cpp" "src/memory/mmio_allocator.cpp" "src/memory.cpp" + + # Device Subsystem "src/devices/block_device.cpp" "src/devices/block_device_utils.cpp" "src/devices/root_bus.cpp" + + # Storage Device Subsystem "src/devices/storage/controller.cpp" "src/devices/storage/management.cpp" "src/devices/storage/ram_disk/controller.cpp" "src/devices/storage/ram_disk/device.cpp" - "src/filesystem/devfs/filesystem.cpp" - "src/filesystem/devfs/inode.cpp" - "src/filesystem/ext2/filesystem.cpp" - "src/filesystem/ext2/inode.cpp" + + # Filesystem Subsystem "src/filesystem/dentry.cpp" "src/filesystem/device_inode.cpp" "src/filesystem/file_descriptor_table.cpp" @@ -42,86 +53,124 @@ add_library("kernel_objs" OBJECT "src/filesystem/mount_table.cpp" "src/filesystem/mount.cpp" "src/filesystem/open_file_description.cpp" - "src/filesystem/rootfs/filesystem.cpp" - "src/filesystem/rootfs/inode.cpp" "src/filesystem/vfs.cpp" -) -target_include_directories("kernel_objs" PUBLIC - "include" -) + # DevFS Filesystem + "src/filesystem/devfs/filesystem.cpp" + "src/filesystem/devfs/inode.cpp" -target_link_libraries("kernel_objs" PUBLIC - "os::kapi" + # ext2 Filesystem + "src/filesystem/ext2/filesystem.cpp" + "src/filesystem/ext2/inode.cpp" + + # Rootfs Filesystem + "src/filesystem/rootfs/filesystem.cpp" + "src/filesystem/rootfs/inode.cpp" ) -file(GLOB_RECURSE KERNEL_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "include/**.hpp") +file(GLOB_RECURSE KERNEL_HEADERS + RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} + CONFIGURE_DEPENDS + "include/**.hpp" +) -target_sources("kernel_objs" PUBLIC +target_sources("kernel_lib" PUBLIC FILE_SET HEADERS BASE_DIRS "include" FILES ${KERNEL_HEADERS} ) -add_library("os::kernel" ALIAS "kernel_objs") +target_include_directories("kernel_lib" PUBLIC + "include" +) + +target_link_libraries("kernel_lib" PUBLIC + "kapi::lib" + "kstd::lib" + "acpi::lib" +) + +set_target_properties("kernel_lib" PROPERTIES + VERIFY_INTERFACE_HEADER_SETS YES +) -if(CMAKE_CROSSCOMPILING) - add_executable("kernel" +#[============================================================================[ +# Executable +#]============================================================================] + +if(NOT BUILD_TESTING) + add_executable("kernel") + add_executable(kernel::exe ALIAS "kernel") + + target_sources("kernel" PRIVATE "src/main.cpp" "src/memory/operators.cpp" ) - target_link_libraries("kernel" PRIVATE - "os::arch" - "os::kernel" + target_link_libraries("kernel" PRIVATE + "kernel::lib" + "arch::lib" ) - target_link_options("kernel" PRIVATE + target_link_options("kernel" PRIVATE "-T${KERNEL_LINKER_SCRIPT}" "-no-pie" "-nostdlib" ) - set_property(TARGET "kernel" + 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() + +#[============================================================================[ +# Tests +#]============================================================================] + +if(BUILD_TESTING) + enable_coverage("kernel_lib") - target_generate_bootable_iso("kernel") -else() - enable_coverage("kernel_objs") + add_executable("kernel_tests") + add_executable("kernel::tests" ALIAS "kernel_tests") - add_library("kernel_test_support" OBJECT + target_sources("kernel_tests" PRIVATE + # Platform-defined KAPI "src/test_support/kapi/cpu.cpp" "src/test_support/kapi/cio.cpp" "src/test_support/kapi/interrupts.cpp" "src/test_support/kapi/memory.cpp" + + # Device Subsystem Support "src/test_support/devices/block_device.cpp" "src/test_support/devices/character_device.cpp" + + # Filesystem Subsystem Support "src/test_support/filesystem/inode.cpp" "src/test_support/filesystem/filesystem.cpp" "src/test_support/filesystem/ext2.cpp" "src/test_support/filesystem/storage_boot_module_fixture.cpp" - "src/test_support/filesystem/storage_boot_module_vfs_fixture.cpp" "src/test_support/log_buffer.cpp" + "src/test_support/filesystem/storage_boot_module_vfs_fixture.cpp" + + # I/O Support + "src/test_support/log_buffer.cpp" "src/test_support/output_device.cpp" + + # Memory Support "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" - ) + # Support System Listener + "src/test_support/state_reset_listener.cpp" - add_executable("kernel_tests" # KAPI Shim Tests "kapi/cpu.tests.cpp" "kapi/system.tests.cpp" @@ -154,23 +203,21 @@ else() "src/devices/block_device.tests.cpp" "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" + target_link_libraries("kernel_tests" PRIVATE + "kernel::lib" + "Catch2::Catch2WithMain" ) target_compile_definitions("kernel_tests" PRIVATE KERNEL_TEST_ASSETS_DIR="${CMAKE_CURRENT_SOURCE_DIR}/src/test_support/filesystem/test_assets" ) - set_target_properties("kernel_tests" PROPERTIES + set_target_properties("kernel_tests" PROPERTIES C_CLANG_TIDY "" CXX_CLANG_TIDY "" ) - enable_coverage("kernel_tests") - catch_discover_tests("os::kernel_tests") + enable_coverage("kernel_tests") + catch_discover_tests("kernel_tests") endif() - |
