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