aboutsummaryrefslogtreecommitdiff
path: root/source/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'source/kernel')
-rw-r--r--source/kernel/CMakeLists.txt33
-rw-r--r--source/kernel/arch/x86_64/CMakeLists.txt30
2 files changed, 43 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
diff --git a/source/kernel/arch/x86_64/CMakeLists.txt b/source/kernel/arch/x86_64/CMakeLists.txt
new file mode 100644
index 0000000..04701c6
--- /dev/null
+++ b/source/kernel/arch/x86_64/CMakeLists.txt
@@ -0,0 +1,30 @@
+#[============================================================================[
+# x86_64 specific configuration for the kernel image.
+#]============================================================================]
+
+set(TEACHOS_KERNEL_LINKER_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/kern.ld")
+mark_as_advanced(TEACHOS_KERNEL_LINKER_SCRIPT)
+
+target_sources("kernel" PRIVATE
+ "src/entry.cpp"
+)
+
+target_include_directories("kernel" PRIVATE
+ "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}"
+)