aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2025-12-15 16:37:39 +0100
committerFelix Morgner <felix.morgner@ost.ch>2025-12-15 16:37:39 +0100
commitd2ae06ac6c19c1d6258f2ba0888e03795712826d (patch)
tree4f3341aff1ce250a74c02e1ee28c21321b79c567
parent0f09b8ff164a69195ec6c25f6aea1cb607d826f8 (diff)
downloadteachos-d2ae06ac6c19c1d6258f2ba0888e03795712826d.tar.xz
teachos-d2ae06ac6c19c1d6258f2ba0888e03795712826d.zip
build: move kernel build configuration
-rw-r--r--CMakeLists.txt40
-rw-r--r--CMakePresets.json1
-rw-r--r--cmake/Modules/GenerateBootableIso.cmake2
-rw-r--r--kernel/CMakeLists.txt36
4 files changed, 39 insertions, 40 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c9b4e35..5bf8404 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -63,46 +63,10 @@ if(Doxygen_FOUND)
endif()
#[============================================================================[
-# Kernel Executable
+# Global Targets
#]============================================================================]
add_subdirectory("arch/${CMAKE_SYSTEM_PROCESSOR}")
add_subdirectory("kapi")
add_subdirectory("libs")
-
-add_executable("kernel"
- "kernel/src/kstd.cpp"
- "kernel/src/main.cpp"
-
- # Platform Independent KAPI implementation
- "kernel/src/kapi/cio.cpp"
- "kernel/src/kapi/memory.cpp"
- "kernel/src/kapi/system.cpp"
-)
-
-target_include_directories("kernel" PRIVATE
- "kernel/include"
-)
-
-target_link_libraries("kernel" PRIVATE
- "os::arch"
- "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}"
-)
-
-target_disassemble("kernel")
-target_extract_debug_symbols("kernel")
-target_strip("kernel")
-
-target_generate_bootable_iso("kernel")
+add_subdirectory("kernel") \ No newline at end of file
diff --git a/CMakePresets.json b/CMakePresets.json
index 26e02d1..fd88d3c 100644
--- a/CMakePresets.json
+++ b/CMakePresets.json
@@ -6,7 +6,6 @@
"hidden": true,
"binaryDir": "${sourceDir}/build",
"generator": "Ninja Multi-Config",
- "toolchainFile": "cmake/Platforms/x86_64.cmake",
"cacheVariables": {
"CMAKE_CONFIGURATION_TYPES": "Debug;MinSizeRel",
"CMAKE_EXPORT_COMPILE_COMMANDS": true,
diff --git a/cmake/Modules/GenerateBootableIso.cmake b/cmake/Modules/GenerateBootableIso.cmake
index 4698d6f..3d1ee30 100644
--- a/cmake/Modules/GenerateBootableIso.cmake
+++ b/cmake/Modules/GenerateBootableIso.cmake
@@ -5,7 +5,7 @@ function(target_generate_bootable_iso TARGET)
file(GENERATE
OUTPUT "$<TARGET_FILE_DIR:${TARGET}>/isofs/boot/grub/grub.cfg"
- INPUT "arch/${CMAKE_SYSTEM_PROCESSOR}/support/grub.cfg.in"
+ INPUT "${PROJECT_SOURCE_DIR}/arch/${CMAKE_SYSTEM_PROCESSOR}/support/grub.cfg.in"
)
add_custom_command(TARGET "${TARGET}"
diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt
new file mode 100644
index 0000000..6bddf7c
--- /dev/null
+++ b/kernel/CMakeLists.txt
@@ -0,0 +1,36 @@
+add_executable("kernel"
+ "src/kstd.cpp"
+ "src/main.cpp"
+
+ # Platform Independent KAPI implementation
+ "src/kapi/cio.cpp"
+ "src/kapi/memory.cpp"
+ "src/kapi/system.cpp"
+)
+
+target_include_directories("kernel" PRIVATE
+ "include"
+)
+
+target_link_libraries("kernel" PRIVATE
+ "os::arch"
+ "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}"
+)
+
+target_disassemble("kernel")
+target_extract_debug_symbols("kernel")
+target_strip("kernel")
+
+target_generate_bootable_iso("kernel")