diff options
Diffstat (limited to 'source/kernel/arch/x86_64')
| -rw-r--r-- | source/kernel/arch/x86_64/CMakeLists.txt | 29 | ||||
| -rw-r--r-- | source/kernel/arch/x86_64/support/grub.cfg.in | 7 |
2 files changed, 36 insertions, 0 deletions
diff --git a/source/kernel/arch/x86_64/CMakeLists.txt b/source/kernel/arch/x86_64/CMakeLists.txt index fe067ef..303ae1f 100644 --- a/source/kernel/arch/x86_64/CMakeLists.txt +++ b/source/kernel/arch/x86_64/CMakeLists.txt @@ -26,3 +26,32 @@ target_link_libraries("kernel" PRIVATE set_target_properties("kernel" PROPERTIES LINK_DEPENDS "${TEACHOS_KERNEL_LINKER_SCRIPT}" ) + +#[============================================================================[ +# Bootable ISO image generation +#]============================================================================] + +find_package("grub-mkrescue") + +if(grub-mkrescue_FOUND) + set(ISO_FILE "${PROJECT_BINARY_DIR}/teachos-${PROJECT_VERSION}.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:kernel>" + "2>/dev/null" + SOURCES + "$<TARGET_FILE:kernel>" + "isofs/boot/grub/grub.cfg" + BYPRODUCTS "${ISO_FILE}" + COMMENT "Creating bootable ISO image" + ) +endif()
\ No newline at end of file diff --git a/source/kernel/arch/x86_64/support/grub.cfg.in b/source/kernel/arch/x86_64/support/grub.cfg.in new file mode 100644 index 0000000..49f19ce --- /dev/null +++ b/source/kernel/arch/x86_64/support/grub.cfg.in @@ -0,0 +1,7 @@ +timeout=2 +default=0 + +menuentry "TeachOS" { + multiboot2 /$<TARGET_FILE_NAME:kernel> + boot +}
\ No newline at end of file |
