aboutsummaryrefslogtreecommitdiff
path: root/source/kernel/CMakeLists.txt
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2023-10-07 11:31:42 +0200
committerFelix Morgner <felix.morgner@ost.ch>2023-10-07 11:31:42 +0200
commit0942321b4f09db58927dcd56940785567e19db92 (patch)
tree496fa2db10dff18ae54c973592ee6d273877d2d0 /source/kernel/CMakeLists.txt
parent090ba239c5c71c765706019fa2733ed2b28ece8f (diff)
downloadteachos-0942321b4f09db58927dcd56940785567e19db92.tar.xz
teachos-0942321b4f09db58927dcd56940785567e19db92.zip
build: perform cleaner split for platform settings
Diffstat (limited to 'source/kernel/CMakeLists.txt')
-rw-r--r--source/kernel/CMakeLists.txt33
1 files changed, 13 insertions, 20 deletions
diff --git a/source/kernel/CMakeLists.txt b/source/kernel/CMakeLists.txt
index 48c9e4a..64b5bcf 100644
--- a/source/kernel/CMakeLists.txt
+++ b/source/kernel/CMakeLists.txt
@@ -1,9 +1,11 @@
-set(TEACHOS_KERNEL_LINKER_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/arch/${CMAKE_SYSTEM_PROCESSOR}/kern.ld")
-mark_as_advanced(TEACHOS_KERNEL_LINKER_SCRIPT)
+#[============================================================================[
+# Configure the generic settings for the kernel image.
+#
+# All the settings (e.g. include paths, linker flags, etc.) applied in this
+# directly, are expected to be platform independent.
+#]============================================================================]
-add_executable("kernel"
- "arch/${CMAKE_SYSTEM_PROCESSOR}/src/entry.cpp"
-)
+add_executable("kernel")
target_compile_features("kernel" PRIVATE
"cxx_std_20"
@@ -16,22 +18,13 @@ target_compile_options("kernel" PRIVATE
"$<$<CXX_COMPILER_ID:GNU>:-pedantic-errors>"
)
-target_include_directories("kernel" PRIVATE
- "arch/${CMAKE_SYSTEM_PROCESSOR}/include"
-)
-
-target_link_options("kernel" PRIVATE
- "-T${TEACHOS_KERNEL_LINKER_SCRIPT}"
-)
-
-target_link_libraries("kernel" PRIVATE
- "-Wl,--whole-archive"
- "teachos::boot"
- "-Wl,--no-whole-archive"
-)
-
set_target_properties("kernel" PROPERTIES
CXX_EXTENSIONS OFF
CXX_STANDARD_REQUIRED YES
- LINK_DEPENDS "${TEACHOS_KERNEL_LINKER_SCRIPT}"
)
+
+#[============================================================================[
+# Apply the platform dependent settings to the kernel image.
+#]============================================================================]
+
+add_subdirectory("arch/${CMAKE_SYSTEM_PROCESSOR}") \ No newline at end of file