#[============================================================================[ # 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" "src/vga.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 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.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" "$" "2>/dev/null" DEPENDS "$" "isofs/boot/grub/grub.cfg" BYPRODUCTS "${ISO_FILE}" COMMENT "Creating bootable ISO image" ) endif()