diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2023-10-11 14:43:50 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2023-10-11 14:43:50 +0200 |
| commit | 74eaee0fcc7390d4290b41a2a92ee34346e2f7c2 (patch) | |
| tree | 3a38f8dbe0c6b757167bc264cb68e3da145bd069 /source/arch/x86_64/CMakeLists.txt | |
| parent | f47bee5f51a73593d3594940663f56f2427f480b (diff) | |
| download | teachos-74eaee0fcc7390d4290b41a2a92ee34346e2f7c2.tar.xz teachos-74eaee0fcc7390d4290b41a2a92ee34346e2f7c2.zip | |
teachos: restructure file layout
Diffstat (limited to 'source/arch/x86_64/CMakeLists.txt')
| -rw-r--r-- | source/arch/x86_64/CMakeLists.txt | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/source/arch/x86_64/CMakeLists.txt b/source/arch/x86_64/CMakeLists.txt new file mode 100644 index 0000000..f917cd0 --- /dev/null +++ b/source/arch/x86_64/CMakeLists.txt @@ -0,0 +1,66 @@ +#[============================================================================[ +# 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) + set(ISO_FILE "${PROJECT_BINARY_DIR}/teachos.iso") + + file(GENERATE + OUTPUT "isofs/boot/grub/grub.cfg" + INPUT "support/grub.cfg.in" + ) + + add_custom_target("bootable-iso" + COMMAND "${GRUB_MKRESCUE_EXE}" + "-o" + "${ISO_FILE}" + "${CMAKE_CURRENT_BINARY_DIR}/isofs" + "$<TARGET_FILE:teachos::kernel>" + "2>/dev/null" + DEPENDS + "$<TARGET_FILE:teachos::kernel>" + "isofs/boot/grub/grub.cfg" + BYPRODUCTS "${ISO_FILE}" + COMMENT "Creating bootable ISO image" + ) +endif() |
