aboutsummaryrefslogtreecommitdiff
path: root/arch/x86_64/CMakeLists.txt
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2024-09-16 14:07:41 +0000
committerFelix Morgner <felix.morgner@ost.ch>2024-09-17 08:58:55 +0200
commit8f9b9cd8aac30572b7e275bbeb1b32d2cbb8950a (patch)
tree5e215dd93c34b3d58c287b036ad2d190e0a9a772 /arch/x86_64/CMakeLists.txt
parentc16a3739649fa15178df667d610553e93db83e4c (diff)
downloadteachos-8f9b9cd8aac30572b7e275bbeb1b32d2cbb8950a.tar.xz
teachos-8f9b9cd8aac30572b7e275bbeb1b32d2cbb8950a.zip
build: migrate away from conan
Diffstat (limited to 'arch/x86_64/CMakeLists.txt')
-rw-r--r--arch/x86_64/CMakeLists.txt64
1 files changed, 64 insertions, 0 deletions
diff --git a/arch/x86_64/CMakeLists.txt b/arch/x86_64/CMakeLists.txt
new file mode 100644
index 0000000..6ff1332
--- /dev/null
+++ b/arch/x86_64/CMakeLists.txt
@@ -0,0 +1,64 @@
+#[============================================================================[
+# The Kernel Library
+#]============================================================================]
+
+set(TEACHOS_KERNEL_LINKER_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/kernel.ld")
+mark_as_advanced(TEACHOS_KERNEL_LINKER_SCRIPT)
+
+target_sources("_kernel" PRIVATE
+ "src/kernel/main.cpp"
+)
+
+target_link_options("_kernel" PRIVATE
+ "-T${TEACHOS_KERNEL_LINKER_SCRIPT}"
+)
+
+set_target_properties("_kernel" PROPERTIES
+ LINK_DEPENDS "${TEACHOS_KERNEL_LINKER_SCRIPT}"
+)
+
+#[============================================================================[
+# The Bootstrap Library
+#]============================================================================]
+
+target_sources("_boot" PRIVATE
+ "src/boot/boot.s"
+ "src/boot/crti.s"
+ "src/boot/crtn.s"
+ "src/boot/multiboot.s"
+)
+
+#[============================================================================[
+# The Video Library
+#]============================================================================]
+
+target_sources("_video" PRIVATE
+ "src/video/vga/text.cpp"
+)
+
+#[============================================================================[
+# The Bootable ISO Image
+#]============================================================================]
+
+find_package("grub-mkrescue")
+
+if(grub-mkrescue_FOUND)
+ file(GENERATE
+ OUTPUT "isofs/boot/grub/grub.cfg"
+ INPUT "support/grub.cfg.in"
+ )
+
+ add_custom_target("bootable-iso"
+ COMMAND "${GRUB_MKRESCUE_EXE}"
+ "-o"
+ "${PROJECT_BINARY_DIR}/teachos-$<CONFIGURATION>.iso"
+ "${CMAKE_CURRENT_BINARY_DIR}/isofs"
+ "$<TARGET_FILE:teachos::kernel>"
+ "2>/dev/null"
+ DEPENDS
+ "$<TARGET_FILE:teachos::kernel>"
+ "isofs/boot/grub/grub.cfg"
+ BYPRODUCTS "${PROJECT_BINARY_DIR}/teachos-$<CONFIGURATION>.iso"
+ COMMENT "Creating bootable ISO image"
+ )
+endif()