[CMAKE]
[reactos.git] / ros_cd.cmake
1 #reactos.dff
2 add_custom_command(
3 OUTPUT ${REACTOS_BINARY_DIR}/boot/reactos.dff
4 COMMAND ${CMAKE_COMMAND} -E copy ${REACTOS_SOURCE_DIR}/boot/bootdata/packages/reactos.dff.in ${REACTOS_BINARY_DIR}/boot/reactos.dff
5 DEPENDS ${REACTOS_SOURCE_DIR}/boot/bootdata/packages/reactos.dff.in)
6
7 file(STRINGS ${REACTOS_BINARY_DIR}/boot/ros_cab_target.txt CAB_TARGET_ENTRIES)
8 foreach(ENTRY ${CAB_TARGET_ENTRIES})
9 string(REGEX REPLACE "^(.*)\t.*" "\\1" _targetname ${ENTRY})
10 string(REGEX REPLACE "^.*\t(.)" "\\1" _dir_num ${ENTRY})
11 get_target_property(_FILENAME ${_targetname} LOCATION)
12 add_custom_command(
13 OUTPUT ${REACTOS_BINARY_DIR}/boot/reactos.dff
14 COMMAND ${CMAKE_COMMAND} -E echo ${_FILENAME} ${_dir_num} >> ${REACTOS_BINARY_DIR}/boot/reactos.dff
15 DEPENDS ${_targetname}
16 APPEND)
17 endforeach()
18
19 file(STRINGS ${REACTOS_BINARY_DIR}/boot/ros_cab.txt CAB_TARGET_ENTRIES)
20 foreach(ENTRY ${CAB_TARGET_ENTRIES})
21 string(REGEX REPLACE "^(.*)\t.*" "\\1" _FILENAME ${ENTRY})
22 string(REGEX REPLACE "^.*\t(.)" "\\1" _dir_num ${ENTRY})
23 add_custom_command(
24 OUTPUT ${REACTOS_BINARY_DIR}/boot/reactos.dff
25 COMMAND ${CMAKE_COMMAND} -E echo ${_FILENAME} ${_dir_num} >> ${REACTOS_BINARY_DIR}/boot/reactos.dff
26 DEPENDS ${_FILENAME}
27 APPEND)
28 endforeach()
29
30 #reactos.cab
31 add_custom_command(
32 OUTPUT ${REACTOS_BINARY_DIR}/boot/reactos.inf
33 COMMAND native-cabman -C ${REACTOS_BINARY_DIR}/boot/reactos.dff -L ${REACTOS_BINARY_DIR}/boot -I
34 DEPENDS ${REACTOS_BINARY_DIR}/boot/reactos.dff)
35 add_custom_command(
36 OUTPUT ${REACTOS_BINARY_DIR}/boot/reactos.cab
37 COMMAND native-cabman -C ${REACTOS_BINARY_DIR}/boot/reactos.dff -RC ${REACTOS_BINARY_DIR}/boot/reactos.inf -L ${REACTOS_BINARY_DIR}/boot -N
38 DEPENDS ${REACTOS_BINARY_DIR}/boot/reactos.inf)
39
40 #bootcd target
41 macro(create_bootcd_dir BOOTCD_DIR _target)
42
43 file(MAKE_DIRECTORY
44 "${BOOTCD_DIR}"
45 "${BOOTCD_DIR}/loader"
46 "${BOOTCD_DIR}/reactos"
47 "${BOOTCD_DIR}/reactos/system32")
48
49 file(STRINGS ${REACTOS_BINARY_DIR}/boot/ros_minicd_target.txt MINICD_TARGET_ENTRIES)
50 foreach(ENTRY ${MINICD_TARGET_ENTRIES})
51 string(REGEX REPLACE "^(.*)\t.*\t.*" "\\1" _targetname ${ENTRY})
52 string(REGEX REPLACE "^.*\t(.*)\t.*" "\\1" _DIR ${ENTRY})
53 string(REGEX REPLACE "^.*\t.*\t(.*)" "\\1"_NAMEONCD ${ENTRY})
54 get_target_property(_FILENAME ${_targetname} LOCATION)
55 set(filename ${BOOTCD_DIR}/${_DIR}/${_NAMEONCD})
56 list(APPEND ${_target}_FILES ${filename})
57 add_custom_command(
58 OUTPUT ${filename}
59 COMMAND ${CMAKE_COMMAND} -E copy ${_FILENAME} ${filename}
60 DEPENDS ${_targetname})
61 endforeach()
62
63 file(STRINGS ${REACTOS_BINARY_DIR}/boot/ros_minicd.txt MINICD_ENTRIES)
64 foreach(ENTRY ${MINICD_ENTRIES})
65 string(REGEX REPLACE "^(.*)\t.*\t.*" "\\1" _FILENAME ${ENTRY})
66 string(REGEX REPLACE "^.*\t(.*)\t.*" "\\1" _DIR ${ENTRY})
67 string(REGEX REPLACE "^.*\t.*\t(.*)" "\\1"_NAMEONCD ${ENTRY})
68 set(filename ${BOOTCD_DIR}/${_DIR}/${_NAMEONCD})
69 list(APPEND ${_target}_FILES ${filename})
70 add_custom_command(
71 OUTPUT ${filename}
72 COMMAND ${CMAKE_COMMAND} -E copy ${_FILENAME} ${filename}
73 DEPENDS ${_FILENAME})
74 endforeach()
75
76 add_custom_command(
77 OUTPUT ${BOOTCD_DIR}/reactos/reactos.inf ${BOOTCD_DIR}/reactos/reactos.cab
78 COMMAND ${CMAKE_COMMAND} -E copy ${REACTOS_BINARY_DIR}/boot/reactos.inf ${BOOTCD_DIR}/reactos/reactos.inf
79 COMMAND ${CMAKE_COMMAND} -E copy ${REACTOS_BINARY_DIR}/boot/reactos.cab ${BOOTCD_DIR}/reactos/reactos.cab
80 DEPENDS ${REACTOS_BINARY_DIR}/boot/reactos.cab)
81 list(APPEND ${_target}_FILES ${filename} ${BOOTCD_DIR}/reactos/reactos.inf ${BOOTCD_DIR}/reactos/reactos.cab)
82 endmacro()
83
84 create_bootcd_dir(${REACTOS_BINARY_DIR}/boot/bootcd bootcd)
85 add_custom_target(bootcd
86 COMMAND native-cdmake -v -j -m -b ${CMAKE_CURRENT_BINARY_DIR}/boot/freeldr/bootsect/isoboot.bin ${BOOTCD_DIR} REACTOS ${REACTOS_BINARY_DIR}/bootcd.iso
87 DEPENDS ${bootcd_FILES})
88 add_dependencies(bootcd dosmbr ext2 fat32 fat isoboot isobtrt vgafonts)
89 set_directory_properties(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${REACTOS_BINARY_DIR}/bootcd.iso)
90
91 #bootcdregtest target
92 create_bootcd_dir(${REACTOS_BINARY_DIR}/boot/bootcdregtest bootcdregtest)
93 add_custom_command(
94 OUTPUT ${REACTOS_BINARY_DIR}/boot/bootcdregtest/reactos/unattend.inf
95 COMMAND ${CMAKE_COMMAND} -E copy ${REACTOS_SOURCE_DIR}/boot/bootdata/bootcdregtest/unattend.inf ${REACTOS_BINARY_DIR}/boot/bootcdregtest/reactos/unattend.inf
96 DEPENDS ${REACTOS_SOURCE_DIR}/boot/bootdata/bootcdregtest/unattend.inf ${REACTOS_BINARY_DIR}/boot/bootcdregtest)
97 add_custom_target(bootcdregtest
98 COMMAND native-cdmake -v -j -m -b ${CMAKE_CURRENT_BINARY_DIR}/boot/freeldr/bootsect/isoboot.bin ${REACTOS_BINARY_DIR}/boot/bootcdregtest REACTOS ${REACTOS_BINARY_DIR}/bootcdregtest.iso
99 DEPENDS ${REACTOS_BINARY_DIR}/boot/bootcdregtest/reactos/unattend.inf ${bootcdregtest_FILES})
100 add_dependencies(bootcdregtest dosmbr ext2 fat32 fat isoboot isobtrt vgafonts)
101
102
103 #livecd target
104 file(MAKE_DIRECTORY
105 "${LIVECD_DIR}"
106 "${LIVECD_DIR}/loader"
107 "${LIVECD_DIR}/Profiles"
108 "${LIVECD_DIR}/Profiles/All Users"
109 "${LIVECD_DIR}/Profiles/All Users/Desktop"
110 "${LIVECD_DIR}/Profiles/Default User"
111 "${LIVECD_DIR}/Profiles/Default User/Desktop"
112 "${LIVECD_DIR}/Profiles/Default User/My Documents"
113 "${LIVECD_DIR}/reactos"
114 "${LIVECD_DIR}/reactos/inf"
115 "${LIVECD_DIR}/reactos/fonts"
116 "${LIVECD_DIR}/reactos/system32"
117 "${LIVECD_DIR}/reactos/system32/config")
118
119 file(STRINGS ${REACTOS_BINARY_DIR}/boot/ros_livecd_target.txt LIVECD_TARGET_ENTRIES)
120 foreach(ENTRY ${LIVECD_TARGET_ENTRIES})
121 string(REGEX REPLACE "^(.*)\t.*\t.*" "\\1" _targetname ${ENTRY})
122 string(REGEX REPLACE "^.*\t(.*)\t.*" "\\1" _DIR ${ENTRY})
123 string(REGEX REPLACE "^.*\t.*\t(.*)" "\\1"_NAMEONCD ${ENTRY})
124 get_target_property(_FILENAME ${_targetname} LOCATION)
125 set(filename ${LIVECD_DIR}/${_DIR}/${_NAMEONCD})
126 list(APPEND LIVECD_FILES ${filename})
127 add_custom_command(
128 OUTPUT ${filename}
129 COMMAND ${CMAKE_COMMAND} -E copy ${_FILENAME} ${LIVECD_DIR}/${_DIR}/${_NAMEONCD}
130 DEPENDS ${_targetname})
131 endforeach()
132 file(STRINGS ${REACTOS_BINARY_DIR}/boot/ros_livecd.txt LIVECD_ENTRIES)
133
134 foreach(ENTRY ${LIVECD_ENTRIES})
135 string(REGEX REPLACE "^(.*)\t.*\t.*" "\\1" _FILENAME ${ENTRY})
136 string(REGEX REPLACE "^.*\t(.*)\t.*" "\\1" _DIR ${ENTRY})
137 string(REGEX REPLACE "^.*\t.*\t(.*)" "\\1"_NAMEONCD ${ENTRY})
138 set(filename ${LIVECD_DIR}/${_DIR}/${_NAMEONCD})
139 list(APPEND LIVECD_FILES ${filename})
140 add_custom_command(
141 OUTPUT ${filename}
142 COMMAND ${CMAKE_COMMAND} -E copy ${_FILENAME} ${LIVECD_DIR}/${_DIR}/${_NAMEONCD}
143 DEPENDS ${_FILENAME})
144 endforeach()
145
146 add_custom_target(livecd
147 COMMAND native-cdmake -v -j -m -b ${CMAKE_CURRENT_BINARY_DIR}/boot/freeldr/bootsect/isoboot.bin ${LIVECD_DIR} REACTOS ${REACTOS_BINARY_DIR}/livecd.iso
148 DEPENDS ${LIVECD_FILES})
149 add_dependencies(livecd isoboot livecd_hives vgafonts)
150
151 set_directory_properties(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${REACTOS_BINARY_DIR}/livecd.iso)