include_guard(GLOBAL) function(target_generate_bootable_iso TARGET) find_package("grub-mkrescue") set(MODULES_DIR "${PROJECT_SOURCE_DIR}/arch/${CMAKE_SYSTEM_PROCESSOR}/support/modules") set(COPY_MODULES_COMMAND) if(EXISTS "${MODULES_DIR}") set(COPY_MODULES_COMMAND COMMAND "${CMAKE_COMMAND}" -E copy_directory "${MODULES_DIR}" "$/isofs/modules" ) endif() file(GENERATE OUTPUT "$/isofs/boot/grub/grub.cfg" INPUT "${PROJECT_SOURCE_DIR}/arch/${CMAKE_SYSTEM_PROCESSOR}/support/grub.cfg.in" ) add_custom_command(TARGET "${TARGET}" POST_BUILD COMMAND "${CMAKE_COMMAND}" -E make_directory "$/isofs" ${COPY_MODULES_COMMAND} COMMAND "${GRUB_MKRESCUE_EXE}" "-o" "$/${TARGET}.iso" "$/isofs" "$" "2>/dev/null" BYPRODUCTS "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/$/${TARGET}.iso" COMMENT "Creating bootable ISO image" ) endfunction()