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