From 64290dd2c98f430c23a47100f655ce7e6849c3ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Mon, 21 Mar 2022 02:45:34 +0100 Subject: [PATCH] [BOOT] Move boot-related commands from boot/CMakeLists.txt into a boot_images.cmake sub-file. (#4407) This allows the CMakeLists.txt file to be less cluttered by unrelated stuff. --- boot/CMakeLists.txt | 167 +---------------------------------------- boot/boot_images.cmake | 165 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 167 insertions(+), 165 deletions(-) create mode 100644 boot/boot_images.cmake diff --git a/boot/CMakeLists.txt b/boot/CMakeLists.txt index 602b8600361..8ce56ed64fb 100644 --- a/boot/CMakeLists.txt +++ b/boot/CMakeLists.txt @@ -1,169 +1,6 @@ -## efisys.bin -# EFI platform ID, used in environ/CMakelists.txt for bootmgfw filename naming also. -if(ARCH STREQUAL "amd64") - set(EFI_PLATFORM_ID "x64") -elseif(ARCH STREQUAL "i386") - set(EFI_PLATFORM_ID "ia32") -elseif(ARCH STREQUAL "ia64") - set(EFI_PLATFORM_ID "ia64") -elseif(ARCH STREQUAL "arm") - set(EFI_PLATFORM_ID "arm") -elseif(ARCH STREQUAL "arm64") - set(EFI_PLATFORM_ID "aa64") -else() - message(FATAL_ERROR "Unknown ARCH '" ${ARCH} "', cannot generate a valid UEFI boot filename.") -endif() +include(boot_images.cmake) -# FIXME: this command creates a dummy EFI partition, add EFI/BOOT/boot${EFI_PLATFORM_ID}.efi file -# once ReactOS supports UEFI -add_custom_target(efisys - COMMAND native-fatten ${CMAKE_CURRENT_BINARY_DIR}/efisys.bin -format 2880 EFIBOOT -boot ${CMAKE_CURRENT_BINARY_DIR}/freeldr/bootsect/fat.bin -mkdir EFI -mkdir EFI/BOOT - DEPENDS native-fatten fat - VERBATIM) - - -# Create an 'empty' directory (guaranteed to be empty) to be able to add -# arbitrary empty directories to the ISO image using mkisofs. -file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/empty) - -# Retrieve the full paths to the generated files of the 'isombr', 'isoboot', 'isobtrt' and 'efisys' targets -set(_isombr_file ${CMAKE_CURRENT_BINARY_DIR}/freeldr/bootsect/isombr.bin) # get_target_property(_isombr_file isombr LOCATION) -set(_isoboot_file ${CMAKE_CURRENT_BINARY_DIR}/freeldr/bootsect/isoboot.bin) # get_target_property(_isoboot_file isoboot LOCATION) -set(_isobtrt_file ${CMAKE_CURRENT_BINARY_DIR}/freeldr/bootsect/isobtrt.bin) # get_target_property(_isobtrt_file isobtrt LOCATION) -set(_efisys_file ${CMAKE_CURRENT_BINARY_DIR}/efisys.bin) # get_target_property(_efisys_file efisys LOCATION) - -# Create a mkisofs sort file to specify an explicit ordering for the boot files -# to place them at the beginning of the image (makes ISO image analysis easier). -# See mkisofs/schilytools/mkisofs/README.sort for more details. -# As the default file sort weight is '0', give the boot files sort weights >= 1. -# Note that it is sad that '-sort' does not work using grafted points, and as a -# result we need in particular to use the boot catalog file "path" mkisofs that -# mkisofs expects, that is, the boot catalog file name is appended to the first -# host-system path listed in the file list, whatever it is, and that does not -# work well if the first item is a graft point (and especially if it's a file -# and not a directory). To fix that, the trick is to use as the first file item -# the empty directory created earlier. This ensures that: -# - the boot catalog file path is meaningful; -# - since its contents are included by mkisofs in the root of the ISO image, -# using the empty directory ensures that no extra unwanted files are added. -# -file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/bootfiles.sort "\ -${CMAKE_CURRENT_BINARY_DIR}/empty/boot.catalog 4 -${_isoboot_file} 3 -${_isobtrt_file} 2 -${_efisys_file} 1 -") - -# ISO image identifier names -set(ISO_MANUFACTURER "ReactOS Foundation") # For both the publisher and the preparer -set(ISO_VOLNAME "ReactOS") # For both the Volume ID and the Volume set ID - - -# Create user profile directories in the LiveImage -function(add_allusers_profile_dirs _image_filelist _rootdir) - file(APPEND ${_image_filelist} "${_rootdir}/All Users/Application Data=${CMAKE_CURRENT_BINARY_DIR}/empty\n") - file(APPEND ${_image_filelist} "${_rootdir}/All Users/Documents/My Music=${CMAKE_CURRENT_BINARY_DIR}/empty\n") - file(APPEND ${_image_filelist} "${_rootdir}/All Users/Documents/My Pictures=${CMAKE_CURRENT_BINARY_DIR}/empty\n") - file(APPEND ${_image_filelist} "${_rootdir}/All Users/Documents/My Videos=${CMAKE_CURRENT_BINARY_DIR}/empty\n") - file(APPEND ${_image_filelist} "${_rootdir}/All Users/Favorites=${CMAKE_CURRENT_BINARY_DIR}/empty\n") - file(APPEND ${_image_filelist} "${_rootdir}/All Users/My Documents=${CMAKE_CURRENT_BINARY_DIR}/empty\n") - file(APPEND ${_image_filelist} "${_rootdir}/All Users/Start Menu/Programs/StartUp=${CMAKE_CURRENT_BINARY_DIR}/empty\n") - file(APPEND ${_image_filelist} "${_rootdir}/All Users/Templates=${CMAKE_CURRENT_BINARY_DIR}/empty\n") -endfunction() -function(add_user_profile_dirs _image_filelist _rootdir _username) - file(APPEND ${_image_filelist} "${_rootdir}/${_username}/Application Data=${CMAKE_CURRENT_BINARY_DIR}/empty\n") - file(APPEND ${_image_filelist} "${_rootdir}/${_username}/Application Data/Microsoft/Internet Explorer/Quick Launch=${CMAKE_CURRENT_BINARY_DIR}/empty\n") - file(APPEND ${_image_filelist} "${_rootdir}/${_username}/Cookies=${CMAKE_CURRENT_BINARY_DIR}/empty\n") - file(APPEND ${_image_filelist} "${_rootdir}/${_username}/Desktop=${CMAKE_CURRENT_BINARY_DIR}/empty\n") - file(APPEND ${_image_filelist} "${_rootdir}/${_username}/Favorites=${CMAKE_CURRENT_BINARY_DIR}/empty\n") - file(APPEND ${_image_filelist} "${_rootdir}/${_username}/Local Settings/Application Data=${CMAKE_CURRENT_BINARY_DIR}/empty\n") - file(APPEND ${_image_filelist} "${_rootdir}/${_username}/Local Settings/History=${CMAKE_CURRENT_BINARY_DIR}/empty\n") - file(APPEND ${_image_filelist} "${_rootdir}/${_username}/Local Settings/Temporary Internet Files=${CMAKE_CURRENT_BINARY_DIR}/empty\n") - file(APPEND ${_image_filelist} "${_rootdir}/${_username}/My Music=${CMAKE_CURRENT_BINARY_DIR}/empty\n") - file(APPEND ${_image_filelist} "${_rootdir}/${_username}/My Pictures=${CMAKE_CURRENT_BINARY_DIR}/empty\n") - file(APPEND ${_image_filelist} "${_rootdir}/${_username}/My Videos=${CMAKE_CURRENT_BINARY_DIR}/empty\n") - file(APPEND ${_image_filelist} "${_rootdir}/${_username}/NetHood=${CMAKE_CURRENT_BINARY_DIR}/empty\n") - file(APPEND ${_image_filelist} "${_rootdir}/${_username}/PrintHood=${CMAKE_CURRENT_BINARY_DIR}/empty\n") - file(APPEND ${_image_filelist} "${_rootdir}/${_username}/Recent=${CMAKE_CURRENT_BINARY_DIR}/empty\n") - file(APPEND ${_image_filelist} "${_rootdir}/${_username}/SendTo=${CMAKE_CURRENT_BINARY_DIR}/empty\n") - file(APPEND ${_image_filelist} "${_rootdir}/${_username}/Start Menu/Programs=${CMAKE_CURRENT_BINARY_DIR}/empty\n") - file(APPEND ${_image_filelist} "${_rootdir}/${_username}/Start Menu/Programs/Administrative Tools=${CMAKE_CURRENT_BINARY_DIR}/empty\n") - file(APPEND ${_image_filelist} "${_rootdir}/${_username}/Start Menu/Programs/StartUp=${CMAKE_CURRENT_BINARY_DIR}/empty\n") - file(APPEND ${_image_filelist} "${_rootdir}/${_username}/Templates=${CMAKE_CURRENT_BINARY_DIR}/empty\n") -endfunction() - - -## BootCD -# Create the file list -file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/bootcd.cmake.lst "") -file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/bootcd.cmake.lst "${CMAKE_CURRENT_BINARY_DIR}/empty\n") - -add_custom_target(bootcd - COMMAND native-mkisofs -quiet -o ${REACTOS_BINARY_DIR}/bootcd.iso -iso-level 4 - -publisher ${ISO_MANUFACTURER} -preparer ${ISO_MANUFACTURER} -volid ${ISO_VOLNAME} -volset ${ISO_VOLNAME} - -eltorito-boot loader/isoboot.bin -no-emul-boot -boot-load-size 4 -eltorito-alt-boot -eltorito-platform efi -eltorito-boot loader/efisys.bin -no-emul-boot -hide boot.catalog - -sort ${CMAKE_CURRENT_BINARY_DIR}/bootfiles.sort - -no-cache-inodes -graft-points -path-list ${CMAKE_CURRENT_BINARY_DIR}/bootcd.$.lst - COMMAND native-isohybrid -b ${_isombr_file} -t 0x96 ${REACTOS_BINARY_DIR}/bootcd.iso - DEPENDS isombr native-isohybrid native-mkisofs - VERBATIM) - -## BootCDRegTest -# Create the file list -file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/bootcdregtest.cmake.lst "") -file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/bootcdregtest.cmake.lst "${CMAKE_CURRENT_BINARY_DIR}/empty\n") - -add_custom_target(bootcdregtest - COMMAND native-mkisofs -quiet -o ${REACTOS_BINARY_DIR}/bootcdregtest.iso -iso-level 4 - -publisher ${ISO_MANUFACTURER} -preparer ${ISO_MANUFACTURER} -volid ${ISO_VOLNAME} -volset ${ISO_VOLNAME} - -eltorito-boot loader/isobtrt.bin -no-emul-boot -boot-load-size 4 -eltorito-alt-boot -eltorito-platform efi -eltorito-boot loader/efisys.bin -no-emul-boot -hide boot.catalog - -sort ${CMAKE_CURRENT_BINARY_DIR}/bootfiles.sort - -no-cache-inodes -graft-points -path-list ${CMAKE_CURRENT_BINARY_DIR}/bootcdregtest.$.lst - COMMAND native-isohybrid -b ${_isombr_file} -t 0x96 ${REACTOS_BINARY_DIR}/bootcdregtest.iso - DEPENDS isombr native-isohybrid native-mkisofs - VERBATIM) - -## LiveCD -# Create the file list -file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/livecd.cmake.lst "") -file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/livecd.cmake.lst "${CMAKE_CURRENT_BINARY_DIR}/empty\n") - -# Create user profile directories -add_allusers_profile_dirs(${CMAKE_CURRENT_BINARY_DIR}/livecd.cmake.lst "Profiles") -add_user_profile_dirs(${CMAKE_CURRENT_BINARY_DIR}/livecd.cmake.lst "Profiles" "Default User") - -add_custom_target(livecd - COMMAND native-mkisofs -quiet -o ${REACTOS_BINARY_DIR}/livecd.iso -iso-level 4 - -publisher ${ISO_MANUFACTURER} -preparer ${ISO_MANUFACTURER} -volid ${ISO_VOLNAME} -volset ${ISO_VOLNAME} - -eltorito-boot loader/isoboot.bin -no-emul-boot -boot-load-size 4 -eltorito-alt-boot -eltorito-platform efi -eltorito-boot loader/efisys.bin -no-emul-boot -hide boot.catalog - -sort ${CMAKE_CURRENT_BINARY_DIR}/bootfiles.sort - -no-cache-inodes -graft-points -path-list ${CMAKE_CURRENT_BINARY_DIR}/livecd.$.lst - COMMAND native-isohybrid -b ${_isombr_file} -t 0x96 ${REACTOS_BINARY_DIR}/livecd.iso - DEPENDS isombr native-isohybrid native-mkisofs - VERBATIM) - -## HybridCD -# Create the file list -file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/hybridcd.cmake.lst "") -file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/hybridcd.cmake.lst "${CMAKE_CURRENT_BINARY_DIR}/empty\n") - -# Create user profile directories -add_allusers_profile_dirs(${CMAKE_CURRENT_BINARY_DIR}/hybridcd.cmake.lst "livecd/Profiles") -add_user_profile_dirs(${CMAKE_CURRENT_BINARY_DIR}/hybridcd.cmake.lst "livecd/Profiles" "Default User") - -add_custom_target(hybridcd - COMMAND native-mkisofs -quiet -o ${REACTOS_BINARY_DIR}/hybridcd.iso -iso-level 4 - -publisher ${ISO_MANUFACTURER} -preparer ${ISO_MANUFACTURER} -volid ${ISO_VOLNAME} -volset ${ISO_VOLNAME} - -eltorito-boot loader/isoboot.bin -no-emul-boot -boot-load-size 4 -eltorito-alt-boot -eltorito-platform efi -eltorito-boot loader/efisys.bin -no-emul-boot -hide boot.catalog - -sort ${CMAKE_CURRENT_BINARY_DIR}/bootfiles.sort - -duplicates-once -no-cache-inodes -graft-points -path-list ${CMAKE_CURRENT_BINARY_DIR}/hybridcd.$.lst - COMMAND native-isohybrid -b ${_isombr_file} -t 0x96 ${REACTOS_BINARY_DIR}/hybridcd.iso - DEPENDS bootcd livecd - VERBATIM) - -add_cd_file(TARGET efisys FILE ${CMAKE_CURRENT_BINARY_DIR}/efisys.bin DESTINATION loader NO_CAB NOT_IN_HYBRIDCD FOR bootcd regtest livecd hybridcd) - -add_subdirectory(freeldr) add_subdirectory(bootdata) # add_subdirectory(environ) +add_subdirectory(freeldr) diff --git a/boot/boot_images.cmake b/boot/boot_images.cmake new file mode 100644 index 00000000000..9abe78d4245 --- /dev/null +++ b/boot/boot_images.cmake @@ -0,0 +1,165 @@ +## efisys.bin + +# EFI platform ID, used in environ/CMakelists.txt for bootmgfw filename naming also. +if(ARCH STREQUAL "amd64") + set(EFI_PLATFORM_ID "x64") +elseif(ARCH STREQUAL "i386") + set(EFI_PLATFORM_ID "ia32") +elseif(ARCH STREQUAL "ia64") + set(EFI_PLATFORM_ID "ia64") +elseif(ARCH STREQUAL "arm") + set(EFI_PLATFORM_ID "arm") +elseif(ARCH STREQUAL "arm64") + set(EFI_PLATFORM_ID "aa64") +else() + message(FATAL_ERROR "Unknown ARCH '" ${ARCH} "', cannot generate a valid UEFI boot filename.") +endif() + +# FIXME: this command creates a dummy EFI partition, add EFI/BOOT/boot${EFI_PLATFORM_ID}.efi file +# once ReactOS supports UEFI +add_custom_target(efisys + COMMAND native-fatten ${CMAKE_CURRENT_BINARY_DIR}/efisys.bin -format 2880 EFIBOOT -boot ${CMAKE_CURRENT_BINARY_DIR}/freeldr/bootsect/fat.bin -mkdir EFI -mkdir EFI/BOOT + DEPENDS native-fatten fat + VERBATIM) + + +# Create an 'empty' directory (guaranteed to be empty) to be able to add +# arbitrary empty directories to the ISO image using mkisofs. +file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/empty) + +# Retrieve the full paths to the generated files of the 'isombr', 'isoboot', 'isobtrt' and 'efisys' targets +set(_isombr_file ${CMAKE_CURRENT_BINARY_DIR}/freeldr/bootsect/isombr.bin) # get_target_property(_isombr_file isombr LOCATION) +set(_isoboot_file ${CMAKE_CURRENT_BINARY_DIR}/freeldr/bootsect/isoboot.bin) # get_target_property(_isoboot_file isoboot LOCATION) +set(_isobtrt_file ${CMAKE_CURRENT_BINARY_DIR}/freeldr/bootsect/isobtrt.bin) # get_target_property(_isobtrt_file isobtrt LOCATION) +set(_efisys_file ${CMAKE_CURRENT_BINARY_DIR}/efisys.bin) # get_target_property(_efisys_file efisys LOCATION) + +# Create a mkisofs sort file to specify an explicit ordering for the boot files +# to place them at the beginning of the image (makes ISO image analysis easier). +# See mkisofs/schilytools/mkisofs/README.sort for more details. +# As the default file sort weight is '0', give the boot files sort weights >= 1. +# Note that it is sad that '-sort' does not work using grafted points, and as a +# result we need in particular to use the boot catalog file "path" mkisofs that +# mkisofs expects, that is, the boot catalog file name is appended to the first +# host-system path listed in the file list, whatever it is, and that does not +# work well if the first item is a graft point (and especially if it's a file +# and not a directory). To fix that, the trick is to use as the first file item +# the empty directory created earlier. This ensures that: +# - the boot catalog file path is meaningful; +# - since its contents are included by mkisofs in the root of the ISO image, +# using the empty directory ensures that no extra unwanted files are added. +# +file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/bootfiles.sort "\ +${CMAKE_CURRENT_BINARY_DIR}/empty/boot.catalog 4 +${_isoboot_file} 3 +${_isobtrt_file} 2 +${_efisys_file} 1 +") + +# ISO image identifier names +set(ISO_MANUFACTURER "ReactOS Foundation") # For both the publisher and the preparer +set(ISO_VOLNAME "ReactOS") # For both the Volume ID and the Volume set ID + + +# Create user profile directories in the LiveImage +function(add_allusers_profile_dirs _image_filelist _rootdir) + file(APPEND ${_image_filelist} "${_rootdir}/All Users/Application Data=${CMAKE_CURRENT_BINARY_DIR}/empty\n") + file(APPEND ${_image_filelist} "${_rootdir}/All Users/Documents/My Music=${CMAKE_CURRENT_BINARY_DIR}/empty\n") + file(APPEND ${_image_filelist} "${_rootdir}/All Users/Documents/My Pictures=${CMAKE_CURRENT_BINARY_DIR}/empty\n") + file(APPEND ${_image_filelist} "${_rootdir}/All Users/Documents/My Videos=${CMAKE_CURRENT_BINARY_DIR}/empty\n") + file(APPEND ${_image_filelist} "${_rootdir}/All Users/Favorites=${CMAKE_CURRENT_BINARY_DIR}/empty\n") + file(APPEND ${_image_filelist} "${_rootdir}/All Users/My Documents=${CMAKE_CURRENT_BINARY_DIR}/empty\n") + file(APPEND ${_image_filelist} "${_rootdir}/All Users/Start Menu/Programs/StartUp=${CMAKE_CURRENT_BINARY_DIR}/empty\n") + file(APPEND ${_image_filelist} "${_rootdir}/All Users/Templates=${CMAKE_CURRENT_BINARY_DIR}/empty\n") +endfunction() +function(add_user_profile_dirs _image_filelist _rootdir _username) + file(APPEND ${_image_filelist} "${_rootdir}/${_username}/Application Data=${CMAKE_CURRENT_BINARY_DIR}/empty\n") + file(APPEND ${_image_filelist} "${_rootdir}/${_username}/Application Data/Microsoft/Internet Explorer/Quick Launch=${CMAKE_CURRENT_BINARY_DIR}/empty\n") + file(APPEND ${_image_filelist} "${_rootdir}/${_username}/Cookies=${CMAKE_CURRENT_BINARY_DIR}/empty\n") + file(APPEND ${_image_filelist} "${_rootdir}/${_username}/Desktop=${CMAKE_CURRENT_BINARY_DIR}/empty\n") + file(APPEND ${_image_filelist} "${_rootdir}/${_username}/Favorites=${CMAKE_CURRENT_BINARY_DIR}/empty\n") + file(APPEND ${_image_filelist} "${_rootdir}/${_username}/Local Settings/Application Data=${CMAKE_CURRENT_BINARY_DIR}/empty\n") + file(APPEND ${_image_filelist} "${_rootdir}/${_username}/Local Settings/History=${CMAKE_CURRENT_BINARY_DIR}/empty\n") + file(APPEND ${_image_filelist} "${_rootdir}/${_username}/Local Settings/Temporary Internet Files=${CMAKE_CURRENT_BINARY_DIR}/empty\n") + file(APPEND ${_image_filelist} "${_rootdir}/${_username}/My Music=${CMAKE_CURRENT_BINARY_DIR}/empty\n") + file(APPEND ${_image_filelist} "${_rootdir}/${_username}/My Pictures=${CMAKE_CURRENT_BINARY_DIR}/empty\n") + file(APPEND ${_image_filelist} "${_rootdir}/${_username}/My Videos=${CMAKE_CURRENT_BINARY_DIR}/empty\n") + file(APPEND ${_image_filelist} "${_rootdir}/${_username}/NetHood=${CMAKE_CURRENT_BINARY_DIR}/empty\n") + file(APPEND ${_image_filelist} "${_rootdir}/${_username}/PrintHood=${CMAKE_CURRENT_BINARY_DIR}/empty\n") + file(APPEND ${_image_filelist} "${_rootdir}/${_username}/Recent=${CMAKE_CURRENT_BINARY_DIR}/empty\n") + file(APPEND ${_image_filelist} "${_rootdir}/${_username}/SendTo=${CMAKE_CURRENT_BINARY_DIR}/empty\n") + file(APPEND ${_image_filelist} "${_rootdir}/${_username}/Start Menu/Programs=${CMAKE_CURRENT_BINARY_DIR}/empty\n") + file(APPEND ${_image_filelist} "${_rootdir}/${_username}/Start Menu/Programs/Administrative Tools=${CMAKE_CURRENT_BINARY_DIR}/empty\n") + file(APPEND ${_image_filelist} "${_rootdir}/${_username}/Start Menu/Programs/StartUp=${CMAKE_CURRENT_BINARY_DIR}/empty\n") + file(APPEND ${_image_filelist} "${_rootdir}/${_username}/Templates=${CMAKE_CURRENT_BINARY_DIR}/empty\n") +endfunction() + + +## BootCD +# Create the file list +file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/bootcd.cmake.lst "") +file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/bootcd.cmake.lst "${CMAKE_CURRENT_BINARY_DIR}/empty\n") + +add_custom_target(bootcd + COMMAND native-mkisofs -quiet -o ${REACTOS_BINARY_DIR}/bootcd.iso -iso-level 4 + -publisher ${ISO_MANUFACTURER} -preparer ${ISO_MANUFACTURER} -volid ${ISO_VOLNAME} -volset ${ISO_VOLNAME} + -eltorito-boot loader/isoboot.bin -no-emul-boot -boot-load-size 4 -eltorito-alt-boot -eltorito-platform efi -eltorito-boot loader/efisys.bin -no-emul-boot -hide boot.catalog + -sort ${CMAKE_CURRENT_BINARY_DIR}/bootfiles.sort + -no-cache-inodes -graft-points -path-list ${CMAKE_CURRENT_BINARY_DIR}/bootcd.$.lst + COMMAND native-isohybrid -b ${_isombr_file} -t 0x96 ${REACTOS_BINARY_DIR}/bootcd.iso + DEPENDS isombr native-isohybrid native-mkisofs + VERBATIM) + +## BootCDRegTest +# Create the file list +file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/bootcdregtest.cmake.lst "") +file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/bootcdregtest.cmake.lst "${CMAKE_CURRENT_BINARY_DIR}/empty\n") + +add_custom_target(bootcdregtest + COMMAND native-mkisofs -quiet -o ${REACTOS_BINARY_DIR}/bootcdregtest.iso -iso-level 4 + -publisher ${ISO_MANUFACTURER} -preparer ${ISO_MANUFACTURER} -volid ${ISO_VOLNAME} -volset ${ISO_VOLNAME} + -eltorito-boot loader/isobtrt.bin -no-emul-boot -boot-load-size 4 -eltorito-alt-boot -eltorito-platform efi -eltorito-boot loader/efisys.bin -no-emul-boot -hide boot.catalog + -sort ${CMAKE_CURRENT_BINARY_DIR}/bootfiles.sort + -no-cache-inodes -graft-points -path-list ${CMAKE_CURRENT_BINARY_DIR}/bootcdregtest.$.lst + COMMAND native-isohybrid -b ${_isombr_file} -t 0x96 ${REACTOS_BINARY_DIR}/bootcdregtest.iso + DEPENDS isombr native-isohybrid native-mkisofs + VERBATIM) + +## LiveCD +# Create the file list +file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/livecd.cmake.lst "") +file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/livecd.cmake.lst "${CMAKE_CURRENT_BINARY_DIR}/empty\n") + +# Create user profile directories +add_allusers_profile_dirs(${CMAKE_CURRENT_BINARY_DIR}/livecd.cmake.lst "Profiles") +add_user_profile_dirs(${CMAKE_CURRENT_BINARY_DIR}/livecd.cmake.lst "Profiles" "Default User") + +add_custom_target(livecd + COMMAND native-mkisofs -quiet -o ${REACTOS_BINARY_DIR}/livecd.iso -iso-level 4 + -publisher ${ISO_MANUFACTURER} -preparer ${ISO_MANUFACTURER} -volid ${ISO_VOLNAME} -volset ${ISO_VOLNAME} + -eltorito-boot loader/isoboot.bin -no-emul-boot -boot-load-size 4 -eltorito-alt-boot -eltorito-platform efi -eltorito-boot loader/efisys.bin -no-emul-boot -hide boot.catalog + -sort ${CMAKE_CURRENT_BINARY_DIR}/bootfiles.sort + -no-cache-inodes -graft-points -path-list ${CMAKE_CURRENT_BINARY_DIR}/livecd.$.lst + COMMAND native-isohybrid -b ${_isombr_file} -t 0x96 ${REACTOS_BINARY_DIR}/livecd.iso + DEPENDS isombr native-isohybrid native-mkisofs + VERBATIM) + +## HybridCD +# Create the file list +file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/hybridcd.cmake.lst "") +file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/hybridcd.cmake.lst "${CMAKE_CURRENT_BINARY_DIR}/empty\n") + +# Create user profile directories +add_allusers_profile_dirs(${CMAKE_CURRENT_BINARY_DIR}/hybridcd.cmake.lst "livecd/Profiles") +add_user_profile_dirs(${CMAKE_CURRENT_BINARY_DIR}/hybridcd.cmake.lst "livecd/Profiles" "Default User") + +add_custom_target(hybridcd + COMMAND native-mkisofs -quiet -o ${REACTOS_BINARY_DIR}/hybridcd.iso -iso-level 4 + -publisher ${ISO_MANUFACTURER} -preparer ${ISO_MANUFACTURER} -volid ${ISO_VOLNAME} -volset ${ISO_VOLNAME} + -eltorito-boot loader/isoboot.bin -no-emul-boot -boot-load-size 4 -eltorito-alt-boot -eltorito-platform efi -eltorito-boot loader/efisys.bin -no-emul-boot -hide boot.catalog + -sort ${CMAKE_CURRENT_BINARY_DIR}/bootfiles.sort + -duplicates-once -no-cache-inodes -graft-points -path-list ${CMAKE_CURRENT_BINARY_DIR}/hybridcd.$.lst + COMMAND native-isohybrid -b ${_isombr_file} -t 0x96 ${REACTOS_BINARY_DIR}/hybridcd.iso + DEPENDS bootcd livecd + VERBATIM) + +add_cd_file(TARGET efisys FILE ${CMAKE_CURRENT_BINARY_DIR}/efisys.bin DESTINATION loader NO_CAB NOT_IN_HYBRIDCD FOR bootcd regtest livecd hybridcd)