aboutsummaryrefslogtreecommitdiff
path: root/cmake/Modules
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2025-07-14 21:29:10 +0000
committerFelix Morgner <felix.morgner@ost.ch>2025-07-14 21:29:10 +0000
commit05ac8c2bdd000d27b38411db2223eabb649c318f (patch)
treeb374fb6d8e7c068520547b2c25e7ce28c137e167 /cmake/Modules
parent3a47a8bd0edcfa3aa03562d0a5c390ef85ad0c6b (diff)
downloadteachos-05ac8c2bdd000d27b38411db2223eabb649c318f.tar.xz
teachos-05ac8c2bdd000d27b38411db2223eabb649c318f.zip
build: reintroduce bootable ISO
Diffstat (limited to 'cmake/Modules')
-rw-r--r--cmake/Modules/GenerateBootableIso.cmake22
1 files changed, 22 insertions, 0 deletions
diff --git a/cmake/Modules/GenerateBootableIso.cmake b/cmake/Modules/GenerateBootableIso.cmake
new file mode 100644
index 0000000..368dcf6
--- /dev/null
+++ b/cmake/Modules/GenerateBootableIso.cmake
@@ -0,0 +1,22 @@
+include_guard(GLOBAL)
+
+function(target_generate_bootable_iso TARGET)
+ find_package("grub-mkrescue")
+
+ file(GENERATE
+ OUTPUT "$<TARGET_FILE_DIR:${TARGET}>/isofs/boot/grub/grub.cfg"
+ INPUT "arch/${CMAKE_SYSTEM_PROCESSOR}/support/grub.cfg.in"
+ )
+
+ add_custom_command(TARGET "${TARGET}"
+ POST_BUILD
+ COMMAND "${GRUB_MKRESCUE_EXE}"
+ "-o"
+ "$<TARGET_FILE_DIR:${TARGET}>/${TARGET}.iso"
+ "$<TARGET_FILE_DIR:${TARGET}>/isofs"
+ "$<TARGET_FILE:${TARGET}>"
+ "2>/dev/null"
+ BYPRODUCTS "${PROJECT_BINARY_DIR}/$<CONFIGURATION>/${TARGET}.iso"
+ COMMENT "Creating bootable ISO image"
+ )
+endfunction()