Subversion Repositories Kolibri OS

Rev

Rev 5255 | Rev 5275 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
5098 clevermous 1
-- Do nothing unless explicitly requested in tup.config.
2
build_type = tup.getconfig('BUILD_TYPE')
3
if build_type == "" then
4
  return
5
end
6
 
7
--[================================[ DATA ]================================]--
8
 
9
PROGS = "../programs"
10
 
11
-- Static data that doesn't need to be compiled
12
-- Files to be included in kolibri.img.
13
-- The first subitem of every item is name inside kolibri.img, the second is name of local file.
14
img_files = {
15
 {"MACROS.INC", PROGS .. "/macros.inc"},
16
 {"CONFIG.INC", PROGS .. "/config.inc"},
17
 {"STRUCT.INC", PROGS .. "/struct.inc"},
18
 {"DEVELOP/TE_ICON.PNG", PROGS .. "/other/t_edit/te_icon.png"},
19
 {"DEVELOP/TL_NOD_16.PNG", PROGS .. "/other/t_edit/tl_nod_16.png"},
20
 {"DEVELOP/TL_SYS_16.PNG", PROGS .. "/media/log_el/trunk/tl_sys_16.png"},
21
 {"DEVELOP/T_EDIT.INI", PROGS .. "/other/t_edit/t_edit.ini"},
22
 {"File Managers/Z_ICONS.PNG", PROGS .. "/fs/opendial/z_icons.png"},
23
 {"File Managers/BUTTONS.BMP", PROGS .. "/fs/kfm/trunk/buttons.bmp"},
24
 {"File Managers/ICONS.BMP", PROGS .. "/fs/kfm/trunk/icons.bmp"},
25
 {"FONTS/LITT.CHR", PROGS .. "/demos/bgitest/trunk/FONTS/LITT.CHR"},
26
 {"GAMES/SNAKE.INI", PROGS .. "/games/snake/trunk/snake.ini"},
27
 {"MEDIA/KIV.INI", PROGS .. "/media/kiv/trunk/kiv.ini"},
28
 {"NETWORK/WV_SKIN.PNG", PROGS .. "/cmm/browser/wv_skin.png"},
29
 {"SETTINGS/AUTORUN.DAT", build_type .. "/settings/autorun.dat"},
30
 {"DEFAULT.SKN", build_type .. "/default.skn"},
31
 {"SETTINGS/ICON.INI", build_type .. "/settings/icon.ini"},
32
 {"ICONSTRP.PNG", "common/iconstrp.png"},
33
 {"INDEX.HTM", build_type .. "/index_htm"},
34
 {"KERPACK", "common/kerpack"},
35
 {"SETTINGS/KEYMAP.KEY", build_type .. "/settings/keymap.key"},
36
 {"SETTINGS/LANG.INI", build_type .. "/settings/lang.ini"},
37
 {"KUZKINA.MID", "common/kuzkina.mid"},
38
 {"LANG.INC", build_type .. "/lang.inc"},
39
 {"SETTINGS/MENU.DAT", build_type .. "/settings/menu.dat"},
40
 {"SETTINGS/KOLIBRI.LBL", build_type .. "/settings/kolibri.lbl"},
41
 {"SETTINGS/PANEL.INI", build_type .. "/settings/panel.ini"},
42
 {"SETTINGS/DOCKY.INI", "common/settings/docky.ini"},
43
 {"NOTIFY3.PNG", "common/notify3.png"},
44
 {"SETTINGS/SETUP.DAT", build_type .. "/settings/setup.dat"},
45
 {"VMODE", "common/vmode"},
46
 {"3D/HOUSE.3DS", "common/3d/house.3ds"},
47
 {"DEMOS/AK47.LIF", "common/demos/ak47.lif"},
48
 {"DEMOS/LIFE2", "common/demos/life2"},
49
 {"DEMOS/RELAY.LIF", "common/demos/relay.lif"},
50
 {"DEMOS/RPENTO.LIF", "common/demos/rpento.lif"},
51
 {"File Managers/EOLITE.INI", "common/File Managers/eolite.ini"},
52
 {"File Managers/ICONS.INI", "common/File Managers/icons.ini"},
53
 {"File Managers/KFM.INI", "common/File Managers/kfm.ini"},
54
 {"GAMES/MEGAMAZE", build_type .. "/games/megamaze"},
55
 {"LIB/PIXLIB.OBJ", "common/lib/pixlib.obj"},
56
 {"LIB/ICONV.OBJ", "common/lib/iconv.obj"},
57
 {"LIB/NETCODE.OBJ", "common/lib/netcode.obj"},
58
 {"MEDIA/ImgF/ImgF", "common/media/ImgF/ImgF"},
59
 {"MEDIA/ImgF/cEdg.obj", "common/media/ImgF/cEdg.obj"},
60
 {"MEDIA/ImgF/dither.obj", "common/media/ImgF/dither.obj"},
61
 {"MEDIA/ImgF/invSol.obj", "common/media/ImgF/invSol.obj"},
62
 {"SETTINGS/NETWORK.INI", build_type .. "/settings/network.ini"},
63
 {"NETWORK/FTPD.INI", "common/network/ftpd.ini"},
64
 {"NETWORK/USERS.INI", "common/network/users.ini"},
65
}
66
-- For russian build, add russian-only files.
67
if build_type == "rus" then tup.append_table(img_files, {
68
 {"File Managers/KFM_KEYS.TXT", PROGS .. "/fs/kfm/trunk/docs/russian/dos_kolibri/kfm_keys.txt"},
69
 {"SETTINGS/.shell", PROGS .. "/system/shell/bin/rus/.shell"},
70
 {"SETTINGS/MYKEY.INI", PROGS .. "/system/MyKey/trunk/mykey.ini"},
71
 {"EXAMPLE.ASM", PROGS .. "/develop/examples/example/trunk/rus/example.asm"},
72
 {"PIPETKA", build_type .. "/pipetka"},
73
 {"File Managers/KFAR.INI", build_type .. "/File Managers/kfar.ini"},
74
 {"GAMES/APPDATA.DAT", build_type .. "/games/appdata.dat"},
75
 {"GAMES/ATAKA", build_type .. "/games/ataka"},
76
 {"GAMES/BASEKURS.KLA", build_type .. "/games/basekurs.kla"},
77
 {"GAMES/PADENIE", build_type .. "/games/padenie"},
78
 {"GAMES/WHOWTBAM", build_type .. "/games/whowtbam"},
79
}) else tup.append_table(img_files, {
80
 {"File Managers/KFM_KEYS.TXT", PROGS .. "/fs/kfm/trunk/docs/english/kfm_keys.txt"},
81
 {"GAMES/SKIN.RAW", PROGS .. "/games/soko/trunk/SKIN.RAW"},
82
 {"GAMES/SOKO-4.LEV", PROGS .. "/games/soko/trunk/SOKO-4.LEV"},
83
 {"GAMES/SOKO-5.LEV", PROGS .. "/games/soko/trunk/SOKO-5.LEV"},
84
 {"GAMES/SOKO-6.LEV", PROGS .. "/games/soko/trunk/SOKO-6.LEV"},
85
 {"GAMES/SOKO-7.LEV", PROGS .. "/games/soko/trunk/SOKO-7.LEV"},
86
 {"GAMES/SOKO-8.LEV", PROGS .. "/games/soko/trunk/SOKO-8.LEV"},
87
 {"GAMES/SOKO-9.LEV", PROGS .. "/games/soko/trunk/SOKO-9.LEV"},
88
 {"SETTINGS/.shell", PROGS .. "/system/shell/bin/eng/.shell"},
89
 {"EXAMPLE.ASM", PROGS .. "/develop/examples/example/trunk/example.asm"},
90
 {"File Managers/KFAR.INI", "common/File Managers/kfar.ini"},
91
}) end
92
if build_type == "it" then tup.append_table(img_files, {
93
 {"SETTINGS/MYKEY.INI", PROGS .. "/system/MyKey/trunk/mykey_it.ini"},
94
}) else tup.append_table(img_files, {
95
 {"SETTINGS/MYKEY.INI", PROGS .. "/system/MyKey/trunk/mykey.ini"},
96
}) end
97
 
98
--[[
99
Files to be included in kolibri.iso and distribution kit outside of kolibri.img.
5132 clevermous 100
 
5098 clevermous 101
The first subitem of every item is name relative to the root of ISO or distribution kit,
102
the second is name of local file.
5132 clevermous 103
 
5098 clevermous 104
If the first subitem ends in /, the last component of local file name is appended.
105
The last component of the second subitem may contain '*'; if so, it will be expanded
106
according to usual rules, but without matching directories.
5132 clevermous 107
 
108
Tup does not allow a direct dependency on a file that is generated in a directory
109
other than where Tupfile.lua is and its children. Most files are generated
110
in the directory with Tupfile.lua; for other files, the item should contain
111
a named subitem "group=path/" and the file should be put in .
5098 clevermous 112
--]]
113
extra_files = {
114
 {"/", build_type .. "/distr_data/autorun.inf"},
115
 {"/", build_type .. "/distr_data/KolibriOS_icon.ico"},
116
 {"/", build_type .. "/settings/kolibri.lbl"},
117
 {"Skins/", "../skins/authors.txt"},
118
 {"Docs/stack.txt", build_type .. "/docs/STACK.TXT"},
119
 {"HD_Load/9x2klbr/", "common/HD_load/9x2klbr/LDKLBR.VXD"},
120
 {"HD_Load/MeOSLoad/", PROGS .. "/hd_load/meosload/AUTOEXEC.BAT"},
121
 {"HD_Load/MeOSLoad/", PROGS .. "/hd_load/meosload/CONFIG.SYS"},
122
 {"HD_Load/MeOSLoad/", PROGS .. "/hd_load/meosload/L_readme.txt"},
123
 {"HD_Load/MeOSLoad/", PROGS .. "/hd_load/meosload/L_readme_Win.txt"},
124
 {"HD_Load/mtldr/", PROGS .. "/hd_load/mtldr/vista_install.bat"},
125
 {"HD_Load/mtldr/", PROGS .. "/hd_load/mtldr/vista_remove.bat"},
126
 {"HD_Load/", "common/HD_load/memdisk"},
127
 {"HD_Load/USB_boot_old/", PROGS .. "/hd_load/usb_boot_old/usb_boot.rtf"},
128
 {"HD_Load/USB_boot_old/", PROGS .. "/hd_load/usb_boot_old/usb_boot_866.txt"},
129
 {"HD_Load/USB_boot_old/", PROGS .. "/hd_load/usb_boot_old/usb_boot_1251.txt"},
130
 {"games/pig/", "common/games/pig/*"},
131
 {"games/soko/soko", build_type .. "/games/soko"},
132
 {"games/soko/", "common/games/soko/*"},
133
 {"kolibrios/emul/dosbox/", "common/emul/DosBox/*"},
134
 {"kolibrios/emul/fceu/", "common/emul/fceu/*"},
135
 {"kolibrios/emul/", "common/emul/gameboy"},
136
 {"kolibrios/emul/", "common/emul/scummvm"},
137
 {"kolibrios/emul/", "common/emul/zsnes"},
138
 {"kolibrios/games/doom/", "common/games/doom/*"},
139
 {"kolibrios/games/fara/fara.gfx", "common/games/fara.gfx"},
140
 {"kolibrios/games/jumpbump/", "common/games/jumpbump/*"},
141
 {"kolibrios/games/lrl/", "common/games/lrl/*"},
5255 mario79 142
 {"kolibrios/games/rstearth/barret_8bpp.png", PROGS .. "/games/rstearth/resources/barret_8bpp.png"},
143
 {"kolibrios/games/rstearth/base_8bpp.png", PROGS .. "/games/rstearth/resources/base_8bpp.png"},
144
 {"kolibrios/games/rstearth/death_8bpp.png", PROGS .. "/games/rstearth/resources/death_8bpp.png"},
5265 mario79 145
 {"kolibrios/games/rstearth/font_russo_1bpp.png", PROGS .. "/games/rstearth/resources/font_russo_1bpp.png"},
5255 mario79 146
 {"kolibrios/games/rstearth/ifrit_8bpp.png", PROGS .. "/games/rstearth/resources/ifrit_8bpp.png"},
147
 {"kolibrios/games/rstearth/miku_8bpp.png", PROGS .. "/games/rstearth/resources/miku_8bpp.png"},
148
 {"kolibrios/games/rstearth/red_brick_8bpp.png", PROGS .. "/games/rstearth/resources/red_brick_8bpp.png"},
149
 {"kolibrios/games/rstearth/skeleton_8bpp.png", PROGS .. "/games/rstearth/resources/skeleton_8bpp.png"},
150
 {"kolibrios/games/rstearth/white_brick_8bpp.png", PROGS .. "/games/rstearth/resources/white_brick_8bpp.png"},
151
 {"kolibrios/games/rstearth/flaunch.wav", PROGS .. "/games/rstearth/resources/flaunch.wav"},
152
 {"kolibrios/games/rstearth/walking_with_poseidon.wav", PROGS .. "/games/rstearth/resources/walking_with_poseidon.wav"},
5098 clevermous 153
 {"kolibrios/lib/avcodec-55.dll", "common/lib/avcodec-55.dll"},
154
 {"kolibrios/lib/avdevice-55.dll", "common/lib/avdevice-55.dll"},
155
 {"kolibrios/lib/avformat-55.dll", "common/lib/avformat-55.dll"},
156
 {"kolibrios/lib/avutil-52.dll", "common/lib/avutil-52.dll"},
157
 {"kolibrios/lib/freetype.dll", "common/lib/freetype.dll"},
5132 clevermous 158
 {"kolibrios/lib/libc.dll", "../contrib/sdk/bin/libc.dll", group = "../contrib/sdk/lib/"},
5098 clevermous 159
 {"kolibrios/lib/pixlib.dll", "common/lib/pixlib.dll"},
160
 {"kolibrios/lib/swresample-0.dll", "common/lib/swresample-0.dll"},
161
 {"kolibrios/lib/swscale-2.dll", "common/lib/swscale-2.dll"},
162
 {"kolibrios/lib/zlib.dll", "common/lib/zlib.dll"},
163
 {"kolibrios/media/fplay-full", "common/media/fplay-full"},
164
 {"kolibrios/media/zsea/zsea.ini", PROGS .. "/media/zsea/zSea.ini"},
165
 {"kolibrios/media/zsea/buttons/buttons.png", PROGS .. "/media/zsea/buttons.png"},
166
}
167
if build_type == "rus" then tup.append_table(extra_files, {
168
 {"Docs/cp866/config.txt", build_type .. "/docs/CONFIG.TXT"},
169
 {"Docs/cp866/gnu.txt", build_type .. "/docs/GNU.TXT"},
170
 {"Docs/cp866/history.txt", build_type .. "/docs/HISTORY.TXT"},
171
 {"Docs/cp866/hot_keys.txt", build_type .. "/docs/HOT_KEYS.TXT"},
172
 {"Docs/cp866/install.txt", build_type .. "/docs/INSTALL.TXT"},
173
 {"Docs/cp866/readme.txt", build_type .. "/docs/README.TXT"},
174
 {"Docs/cp866/sysfuncr.txt", PROGS .. "/system/docpack/trunk/SYSFUNCR.TXT"},
175
 {"Docs/cp1251/config.txt", build_type .. "/docs/CONFIG.WIN.TXT", cp1251_from = build_type .. "/docs/CONFIG.TXT"},
176
 {"Docs/cp1251/gnu.txt", build_type .. "/docs/GNU.WIN.TXT", cp1251_from = build_type .. "/docs/GNU.TXT"},
177
 {"Docs/cp1251/history.txt", build_type .. "/docs/HISTORY.WIN.TXT", cp1251_from = build_type .. "/docs/HISTORY.TXT"},
178
 {"Docs/cp1251/hot_keys.txt", build_type .. "/docs/HOT_KEYS.WIN.TXT", cp1251_from = build_type .. "/docs/HOT_KEYS.TXT"},
179
 {"Docs/cp1251/install.txt", build_type .. "/docs/INSTALL.WIN.TXT", cp1251_from = build_type .. "/docs/INSTALL.TXT"},
180
 {"Docs/cp1251/readme.txt", build_type .. "/docs/README.WIN.TXT", cp1251_from = build_type .. "/docs/README.TXT"},
181
 {"Docs/cp1251/sysfuncr.txt", build_type .. "/docs/SYSFUNCR.WIN.TXT", cp1251_from = PROGS .. "/system/docpack/trunk/SYSFUNCR.TXT"},
182
 {"HD_Load/9x2klbr/", PROGS .. "/hd_load/9x2klbr/readme_dos.txt"},
183
 {"HD_Load/9x2klbr/", PROGS .. "/hd_load/9x2klbr/readme_win.txt"},
184
 {"HD_Load/mtldr/", PROGS .. "/hd_load/mtldr/install.txt"},
185
 {"HD_Load/USB_Boot/", PROGS .. "/hd_load/usb_boot/readme.txt"},
186
 {"kolibrios/media/zsea/zsea_keys.txt", PROGS .. "/media/zsea/Docs/zSea_keys_rus.txt"},
187
}) else tup.append_table(extra_files, {
188
 {"Docs/config.txt", build_type .. "/docs/CONFIG.TXT"},
189
 {"Docs/copying.txt", build_type .. "/docs/COPYING.TXT"},
190
 {"Docs/hot_keys.txt", build_type .. "/docs/HOT_KEYS.TXT"},
191
 {"Docs/install.txt", build_type .. "/docs/INSTALL.TXT"},
192
 {"Docs/readme.txt", build_type .. "/docs/README.TXT"},
193
 {"Docs/sysfuncs.txt", PROGS .. "/system/docpack/trunk/SYSFUNCS.TXT"},
194
 {"HD_Load/9x2klbr/", PROGS .. "/hd_load/9x2klbr/readme.txt"},
195
 {"HD_Load/mtldr/install.txt", PROGS .. "/hd_load/mtldr/install_eng.txt"},
196
 {"HD_Load/USB_Boot/readme.txt", PROGS .. "/hd_load/usb_boot/readme_eng.txt"},
197
 {"kolibrios/media/zsea/zsea_keys.txt", PROGS .. "/media/zsea/Docs/zSea_keys_eng.txt"},
198
}) end
199
--[[
200
Files to be included in distribution kit outside of kolibri.img, but not kolibri.iso.
201
Same syntax as extra_files.
202
]]--
203
if build_type == "rus" then
204
distr_extra_files = {
205
 {"/readme_dos.txt", build_type .. "/distr_data/readme_dos_distr.txt"},
206
 {"/readme.txt", build_type .. "/distr_data/readme_distr.txt", cp1251_from = build_type .. "/distr_data/readme_dos_distr.txt"},
207
}
208
else
209
distr_extra_files = {
210
 {"/readme.txt", build_type .. "/distr_data/readme_distr.txt"},
211
}
212
end
213
--[[
214
Files to be included in kolibri.iso outside of kolibri.img, but not distribution kit.
215
Same syntax as extra_files.
216
]]--
217
if build_type == "rus" then
218
iso_extra_files = {
219
 {"/readme_dos.txt", build_type .. "/distr_data/readme_dos.txt"},
220
 {"/readme.txt", build_type .. "/distr_data/readme.txt", cp1251_from = build_type .. "/distr_data/readme_dos.txt"},
221
}
222
else
223
iso_extra_files = {
224
 {"/readme.txt", build_type .. "/distr_data/readme.txt"},
225
}
226
end
227
 
228
-- Programs that require FASM to compile.
229
if tup.getconfig('NO_FASM') ~= 'full' then
230
tup.append_table(img_files, {
231
 {"KERNEL.MNT", "../kernel/trunk/kernel.mnt"},
232
 {"@MENU", PROGS .. "/system/menu/trunk/menu"},
233
 {"@PANEL", PROGS .. "/system/panel/trunk/@PANEL"},
234
 {"@DOCKY", PROGS .. "/system/docky/trunk/docky"},
235
 {"@NOTIFY", PROGS .. "/system/notify3/notify"},
236
 {"@SS", PROGS .. "/system/ss/trunk/@ss"},
237
 {"REFRSCRN", PROGS .. "/system/refrscrn/refrscrn"},
238
 {"ASCIIVJU", PROGS .. "/develop/asciivju/trunk/asciivju"},
239
 {"CALC", PROGS .. "/other/calc/trunk/calc"},
240
 {"CALENDAR", PROGS .. "/system/calendar/trunk/calendar"},
241
 {"COLRDIAL", PROGS .. "/system/colrdial/color_dialog"},
242
 {"LOADDRV", PROGS .. "/system/loaddrv/loaddrv"},
243
 {"CPU", PROGS .. "/system/cpu/trunk/cpu"},
244
 {"CPUID", PROGS .. "/system/cpuid/trunk/CPUID"},
245
 {"DESKTOP", PROGS .. "/system/desktop/trunk/desktop"},
246
 {"DISPTEST", PROGS .. "/system/disptest/trunk/disptest"},
247
 {"DOCPACK", PROGS .. "/system/docpack/trunk/docpack"},
248
 {"END", PROGS .. "/system/end/light/end"},
249
 {"FSPEED", PROGS .. "/fs/fspeed/fspeed"},
250
 {"GMON", PROGS .. "/system/gmon/gmon"},
251
 {"HDD_INFO", PROGS .. "/system/hdd_info/trunk/hdd_info"},
252
 {"@ICON", PROGS .. "/system/icon_new/@icon"},
253
 {"CROPFLAT", PROGS .. "/system/cropflat/cropflat"},
254
 {"KBD", PROGS .. "/system/kbd/trunk/kbd"},
255
 {"KPACK", PROGS .. "/other/kpack/trunk/kpack"},
256
 {"LAUNCHER", PROGS .. "/system/launcher/trunk/launcher"},
257
 {"MAGNIFY", PROGS .. "/demos/magnify/trunk/magnify"},
258
 {"MGB", PROGS .. "/system/mgb/trunk/mgb"},
259
 {"MOUSEMUL", PROGS .. "/system/mousemul/trunk/mousemul"},
260
 {"MADMOUSE", PROGS .. "/other/madmouse/madmouse"},
261
 {"MYKEY", PROGS .. "/system/MyKey/trunk/MyKey"},
262
 {"PCIDEV", PROGS .. "/system/pcidev/trunk/PCIDEV"},
263
 {"RDSAVE", PROGS .. "/system/rdsave/trunk/rdsave"},
264
 {"RTFREAD", PROGS .. "/other/rtfread/trunk/rtfread"},
265
 {"RUN", PROGS .. "/system/run/trunk/run"},
266
 {"SEARCHAP", PROGS .. "/system/searchap/searchap"},
267
 {"SCRSHOOT", PROGS .. "/media/scrshoot/scrshoot"},
268
 {"SETUP", PROGS .. "/system/setup/trunk/setup"},
269
 {"TEST", PROGS .. "/system/test/trunk/test"},
270
 {"TINYPAD", PROGS .. "/develop/tinypad/trunk/tinypad"},
271
 {"ZKEY", PROGS .. "/system/zkey/trunk/ZKEY"},
272
 {"TERMINAL", PROGS .. "/system/terminal/terminal"},
273
 {"3D/3DSHEART", PROGS .. "/demos/3dsheart/trunk/3dsheart"},
274
 {"3D/3DWAV", PROGS .. "/demos/3dwav/trunk/3dwav"},
275
 {"3D/CROWNSCR", PROGS .. "/demos/crownscr/trunk/crownscr"},
276
 {"3D/FREE3D04", PROGS .. "/demos/free3d04/trunk/free3d04"},
277
 {"3D/VIEW3DS", PROGS .. "/demos/3DS/VIEW3DS"},
278
 {"DEMOS/BCDCLK", PROGS .. "/demos/bcdclk/trunk/bcdclk"},
279
 {"DEMOS/CIRCLE", PROGS .. "/develop/examples/circle/trunk/circle"},
280
 {"DEMOS/COLORREF", PROGS .. "/demos/colorref/trunk/colorref"},
281
 {"DEMOS/CSLIDE", PROGS .. "/demos/cslide/trunk/cslide"},
282
 {"DEMOS/EYES", PROGS .. "/demos/eyes/trunk/eyes"},
283
 {"DEMOS/FIREWORK", PROGS .. "/demos/firework/trunk/firework"},
284
 {"DEMOS/MOVBACK", PROGS .. "/demos/movback/trunk/movback"},
285
 {"DEMOS/PLASMA", PROGS .. "/demos/plasma/trunk/plasma"},
286
 {"DEMOS/TINYFRAC", PROGS .. "/demos/tinyfrac/trunk/tinyfrac"},
287
 {"DEMOS/TRANTEST", PROGS .. "/demos/trantest/trunk/trantest"},
288
 {"DEMOS/TUBE", PROGS .. "/demos/tube/trunk/tube"},
289
 {"DEMOS/UNVWATER", PROGS .. "/demos/unvwater/trunk/unvwater"},
290
 {"DEMOS/USE_MB", PROGS .. "/demos/use_mb/use_mb"},
291
 {"DEMOS/WEB", PROGS .. "/demos/web/trunk/web"},
292
 {"DEVELOP/BOARD", PROGS .. "/system/board/trunk/board"},
293
 {"DEVELOP/cObj", PROGS .. "/develop/cObj/trunk/cObj"},
294
 {"DEVELOP/FASM", PROGS .. "/develop/fasm/trunk/fasm"},
295
 {"DEVELOP/H2D2B", PROGS .. "/develop/h2d2b/trunk/h2d2b"},
296
 {"DEVELOP/HEED", PROGS .. "/develop/heed/trunk/heed"},
297
 {"DEVELOP/KEYASCII", PROGS .. "/develop/keyascii/trunk/keyascii"},
298
 {"DEVELOP/MTDBG", PROGS .. "/develop/mtdbg/mtdbg"},
299
 {"DEVELOP/SCANCODE", PROGS .. "/develop/scancode/trunk/scancode"},
300
 {"DEVELOP/T_EDIT", PROGS .. "/other/t_edit/t_edit"},
301
 {"DEVELOP/test_gets", PROGS .. "/develop/libraries/console/examples/test_gets"},
302
 {"DEVELOP/THREAD", PROGS .. "/develop/examples/thread/trunk/thread"},
303
 {"DEVELOP/INFO/ASM.SYN", PROGS .. "/other/t_edit/info/asm.syn"},
304
 {"DEVELOP/INFO/CPP_KOL_CLA.SYN", PROGS .. "/other/t_edit/info/cpp_kol_cla.syn"},
305
 {"DEVELOP/INFO/CPP_KOL_DAR.SYN", PROGS .. "/other/t_edit/info/cpp_kol_dar.syn"},
306
 {"DEVELOP/INFO/CPP_KOL_DEF.SYN", PROGS .. "/other/t_edit/info/cpp_kol_def.syn"},
307
 {"DEVELOP/INFO/DEFAULT.SYN", PROGS .. "/other/t_edit/info/default.syn"},
308
 {"DEVELOP/INFO/HTML.SYN", PROGS .. "/other/t_edit/info/html.syn"},
309
 {"DEVELOP/INFO/INI_FILES.SYN", PROGS .. "/other/t_edit/info/ini_files.syn"},
310
 {"DEVELOP/INFO/WIN_CONST.SYN", PROGS .. "/other/t_edit/info/win_const.syn"},
311
 {"File Managers/KFAR", PROGS .. "/fs/kfar/trunk/kfar"},
312
 {"File Managers/KFM", PROGS .. "/fs/kfm/trunk/kfm"},
313
 {"File Managers/OPENDIAL", PROGS .. "/fs/opendial/opendial"},
314
 {"GAMES/15", PROGS .. "/games/15/trunk/15"},
315
 {"GAMES/ARCANII", PROGS .. "/games/arcanii/trunk/arcanii"},
316
 {"GAMES/FREECELL", PROGS .. "/games/freecell/freecell"},
317
 {"GAMES/GOMOKU", PROGS .. "/games/gomoku/trunk/gomoku"},
318
 {"GAMES/INVADERS", PROGS .. "/games/invaders/invaders"},
319
 {"GAMES/KLAVISHA", PROGS .. "/games/klavisha/trunk/klavisha"},
320
 {"GAMES/LINES", PROGS .. "/games/lines/lines"},
321
 {"GAMES/MBLOCKS", PROGS .. "/games/mblocks/trunk/mblocks"},
322
 {"GAMES/MSQUARE", PROGS .. "/games/MSquare/trunk/MSquare"},
323
 {"GAMES/PHENIX", PROGS .. "/games/phenix/trunk/phenix"},
324
 {"GAMES/PIPES", PROGS .. "/games/pipes/pipes"},
325
 {"GAMES/PONG", PROGS .. "/games/pong/trunk/pong"},
326
 {"GAMES/PONG3", PROGS .. "/games/pong3/trunk/pong3"},
327
 {"GAMES/RSQUARE", PROGS .. "/games/rsquare/trunk/rsquare"},
328
 {"GAMES/SNAKE", PROGS .. "/games/snake/trunk/snake"},
329
 {"GAMES/SQ_GAME", PROGS .. "/games/sq_game/trunk/SQ_GAME"},
330
 {"GAMES/SUDOKU", PROGS .. "/games/sudoku/trunk/sudoku"},
331
 {"GAMES/SW", PROGS .. "/games/sw/trunk/sw"},
332
 {"GAMES/TANKS", PROGS .. "/games/tanks/trunk/tanks"},
333
 {"GAMES/TETRIS", PROGS .. "/games/tetris/trunk/tetris"},
334
 {"LIB/ARCHIVER.OBJ", PROGS .. "/fs/kfar/trunk/kfar_arc/kfar_arc.obj"},
335
 {"LIB/BOX_LIB.OBJ", PROGS .. "/develop/libraries/box_lib/trunk/box_lib.obj"},
336
 {"LIB/BUF2D.OBJ", PROGS .. "/develop/libraries/buf2d/trunk/buf2d.obj"},
337
 {"LIB/CONSOLE.OBJ", PROGS .. "/develop/libraries/console/console.obj"},
338
 {"LIB/LIBGFX.OBJ", PROGS .. "/develop/libraries/libs-dev/libgfx/libgfx.obj"},
339
 {"LIB/LIBIMG.OBJ", PROGS .. "/develop/libraries/libs-dev/libimg/libimg.obj"},
340
 {"LIB/LIBINI.OBJ", PROGS .. "/develop/libraries/libs-dev/libini/libini.obj"},
341
 {"LIB/LIBIO.OBJ", PROGS .. "/develop/libraries/libs-dev/libio/libio.obj"},
342
 {"LIB/MSGBOX.OBJ", PROGS .. "/develop/libraries/msgbox/msgbox.obj"},
343
 {"LIB/NETWORK.OBJ", PROGS .. "/develop/libraries/network/network.obj"},
344
 {"LIB/SORT.OBJ", PROGS .. "/develop/libraries/sorter/sort.obj"},
345
 {"LIB/HTTP.OBJ", PROGS .. "/develop/libraries/http/http.obj"},
346
 {"LIB/PROC_LIB.OBJ", PROGS .. "/develop/libraries/proc_lib/trunk/proc_lib.obj"},
347
 {"LIB/CNV_PNG.OBJ", PROGS .. "/media/zsea/plugins/png/cnv_png.obj"},
348
 {"MEDIA/ANIMAGE", PROGS .. "/media/animage/trunk/animage"},
349
 {"MEDIA/KIV", PROGS .. "/media/kiv/trunk/kiv"},
350
 {"MEDIA/LISTPLAY", PROGS .. "/media/listplay/trunk/listplay"},
351
 {"MEDIA/MIDAMP", PROGS .. "/media/midamp/trunk/midamp"},
352
 {"MEDIA/PALITRA", PROGS .. "/media/palitra/trunk/palitra"},
353
 {"MEDIA/STARTMUS", PROGS .. "/media/startmus/trunk/STARTMUS"},
354
 {"NETWORK/PING", PROGS .. "/network/icmp/ping"},
355
 {"NETWORK/NETCFG", PROGS .. "/network/netcfg/netcfg"},
356
 {"NETWORK/NETSTAT", PROGS .. "/network/netstat/netstat"},
357
 {"NETWORK/NSLOOKUP", PROGS .. "/network/nslookup/nslookup"},
358
 {"NETWORK/PASTA", PROGS .. "/network/pasta/pasta"},
359
 {"NETWORK/SYNERGYC", PROGS .. "/network/synergyc/synergyc"},
360
 {"NETWORK/TCPSERV", PROGS .. "/network/tcpserv/tcpserv"},
361
 {"NETWORK/TELNET", PROGS .. "/network/telnet/telnet"},
362
 {"NETWORK/ZEROCONF", PROGS .. "/network/zeroconf/zeroconf"},
363
 {"NETWORK/FTPC", PROGS .. "/network/ftpc/ftpc"},
364
 {"NETWORK/FTPD", PROGS .. "/network/ftpd/ftpd"},
365
 {"NETWORK/TFTPC", PROGS .. "/network/tftpc/tftpc"},
366
 {"NETWORK/IRCC", PROGS .. "/network/ircc/ircc"},
367
 {"NETWORK/DOWNLOADER", PROGS .. "/network/downloader/downloader"},
368
 {"DRIVERS/VIDINTEL.SYS", "../drivers/video/vidintel.sys"},
369
 {"DRIVERS/3C59X.SYS", "../drivers/ethernet/3c59x.sys"},
370
 {"DRIVERS/DEC21X4X.SYS", "../drivers/ethernet/dec21x4x.sys"},
371
 {"DRIVERS/FORCEDETH.SYS", "../drivers/ethernet/forcedeth.sys"},
372
 {"DRIVERS/I8254X.SYS", "../drivers/ethernet/i8254x.sys"},
373
 {"DRIVERS/I8255X.SYS", "../drivers/ethernet/i8255x.sys"},
374
 {"DRIVERS/MTD80X.SYS", "../drivers/ethernet/mtd80x.sys"},
375
 {"DRIVERS/PCNET32.SYS", "../drivers/ethernet/pcnet32.sys"},
376
 {"DRIVERS/R6040.SYS", "../drivers/ethernet/R6040.sys"},
377
 {"DRIVERS/RHINE.SYS", "../drivers/ethernet/rhine.sys"},
378
 {"DRIVERS/RTL8029.SYS", "../drivers/ethernet/RTL8029.sys"},
379
 {"DRIVERS/RTL8139.SYS", "../drivers/ethernet/RTL8139.sys"},
380
 {"DRIVERS/RTL8169.SYS", "../drivers/ethernet/RTL8169.sys"},
381
 {"DRIVERS/SIS900.SYS", "../drivers/ethernet/sis900.sys"},
382
 {"DRIVERS/UHCI.SYS", "../drivers/usb/uhci.sys"},
383
 {"DRIVERS/OHCI.SYS", "../drivers/usb/ohci.sys"},
384
 {"DRIVERS/EHCI.SYS", "../drivers/usb/ehci.sys"},
385
 {"DRIVERS/USBHID.SYS", "../drivers/usb/usbhid/usbhid.sys"},
386
 {"DRIVERS/USBSTOR.SYS", "../drivers/usb/usbstor.sys"},
387
 {"DRIVERS/RDC.SYS", "../drivers/video/rdc.sys"},
388
 {"DRIVERS/COMMOUSE.SYS", "../drivers/mouse/commouse.sys"},
389
 {"DRIVERS/PS2MOUSE.SYS", "../drivers/mouse/ps2mouse4d/trunk/ps2mouse.sys"},
390
 {"DRIVERS/TMPDISK.SYS", "../drivers/disk/tmpdisk.sys"},
391
 {"DRIVERS/intel_hda.sys", "../drivers/audio/intel_hda/intel_hda.sys"},
392
 {"DRIVERS/SB16.SYS", "../drivers/audio/sb16/sb16.sys"},
393
 {"DRIVERS/SOUND.SYS", "../drivers/audio/sound.sys"},
394
 {"DRIVERS/INFINITY.SYS", "../drivers/audio/infinity/infinity.sys"},
395
 {"DRIVERS/INTELAC97.SYS", "../drivers/audio/intelac97.sys"},
396
 {"DRIVERS/EMU10K1X.SYS", "../drivers/audio/emu10k1x.sys"},
397
 {"DRIVERS/FM801.SYS", "../drivers/audio/fm801.sys"},
398
 {"DRIVERS/VT823X.SYS", "../drivers/audio/vt823x.sys"},
399
 {"DRIVERS/SIS.SYS", "../drivers/audio/sis.sys"},
400
})
401
tup.append_table(extra_files, {
402
 {"HD_Load/9x2klbr/", PROGS .. "/hd_load/9x2klbr/9x2klbr.exe"},
403
 {"HD_Load/MeOSLoad/", PROGS .. "/hd_load/meosload/MeOSload.com"},
404
 {"HD_Load/mtldr/", PROGS .. "/hd_load/mtldr/mtldr"},
405
 {"HD_Load/", PROGS .. "/hd_load/mtldr_install/mtldr_install.exe"},
406
 {"HD_Load/USB_Boot/", PROGS .. "/hd_load/usb_boot/BOOT_F32.BIN"},
407
 {"HD_Load/USB_Boot/", PROGS .. "/hd_load/usb_boot/MTLD_F32"},
408
 {"HD_Load/USB_Boot/", PROGS .. "/hd_load/usb_boot/inst.exe"},
409
 {"HD_Load/USB_Boot/", PROGS .. "/hd_load/usb_boot/setmbr.exe"},
410
 {"HD_Load/USB_boot_old/", PROGS .. "/hd_load/usb_boot_old/MeOSload.com"},
411
 {"HD_Load/USB_boot_old/", PROGS .. "/hd_load/usb_boot_old/enable.exe"},
5254 mario79 412
 {"kolibrios/games/rstearth/rstearth", PROGS .. "/games/rstearth/rstearth"},
5098 clevermous 413
 {"kolibrios/media/zsea/zsea", PROGS .. "/media/zsea/zSea"},
414
 {"kolibrios/media/zsea/plugins/cnv_bmp.obj", PROGS .. "/media/zsea/plugins/bmp/cnv_bmp.obj"},
415
 {"kolibrios/media/zsea/plugins/cnv_gif.obj", PROGS .. "/media/zsea/plugins/gif/cnv_gif.obj"},
416
 {"kolibrios/media/zsea/plugins/cnv_jpeg.obj", PROGS .. "/media/zsea/plugins/jpeg/cnv_jpeg.obj"},
417
 {"kolibrios/media/zsea/plugins/convert.obj", PROGS .. "/media/zsea/plugins/convert/convert.obj"},
418
 {"kolibrios/media/zsea/plugins/rotate.obj", PROGS .. "/media/zsea/plugins/rotate/rotate.obj"},
419
 {"kolibrios/media/zsea/plugins/scaling.obj", PROGS .. "/media/zsea/plugins/scaling/scaling.obj"},
420
})
421
-- For russian build, add russian-only programs.
422
if build_type == "rus" then tup.append_table(img_files, {
423
 {"PERIOD", PROGS .. "/other/period/trunk/period"},
424
 {"DEVELOP/TESTCON2", PROGS .. "/develop/libraries/console/examples/testcon2_rus"},
425
}) else tup.append_table(img_files, {
426
 {"DEVELOP/TESTCON2", PROGS .. "/develop/libraries/console/examples/testcon2_eng"},
427
 {"GAMES/SOKO", PROGS .. "/games/soko/trunk/SOKO"},
428
}) end
429
 
430
end -- tup.getconfig('NO_FASM') ~= 'full'
431
 
432
-- Programs that require NASM to compile.
433
if tup.getconfig('NO_NASM') ~= 'full' then
434
tup.append_table(img_files, {
435
 {"DEMOS/ACLOCK", PROGS .. "/demos/aclock/trunk/aclock"},
436
 {"DEMOS/TIMER", PROGS .. "/other/Timer/timer"},
437
 {"GAMES/C4", PROGS .. "/games/c4/trunk/c4"},
438
 {"TINFO", PROGS .. "/system/tinfo/tinfo"},
439
 {"DEVELOP/MSTATE", PROGS .. "/develop/mstate/mstate"},
440
})
441
end -- tup.getconfig('NO_NASM') ~= 'full'
442
 
443
-- Programs that require C-- to compile.
444
if tup.getconfig('NO_CMM') ~= 'full' then
445
tup.append_table(img_files, {
446
 {"File Managers/EOLITE", PROGS .. "/cmm/eolite/Eolite.com"},
447
 {"GAMES/CLICKS", PROGS .. "/games/clicks/trunk/clicks.com"},
448
 {"GAMES/FindNumbers", PROGS .. "/games/FindNumbers/trunk/FindNumbers"},
449
 {"GAMES/flood-it", PROGS .. "/games/flood-it/trunk/flood-it.com"},
450
 {"GAMES/MINE", PROGS .. "/games/mine/trunk/mine"},
451
 {"NETWORK/WebView", PROGS .. "/cmm/browser/WebView.com"},
452
 {"TMPDISK", PROGS .. "/cmm/tmpdisk/tmpdisk.com"},
453
})
454
end -- tup.getconfig('NO_CMM') ~= 'full'
455
 
456
-- Programs that require MSVC to compile.
457
if tup.getconfig('NO_MSVC') ~= 'full' then
458
tup.append_table(img_files, {
459
 {"GRAPH", PROGS .. "/other/graph/graph"},
460
 {"TABLE", PROGS .. "/other/table/table"},
461
 {"MEDIA/AC97SND", PROGS .. "/media/ac97snd/ac97snd.bin"},
462
 {"GAMES/KOSILKA", PROGS .. "/games/kosilka/kosilka"},
5113 clevermous 463
 {"GAMES/RFORCES", PROGS .. "/games/rforces/trunk/rforces"},
5115 clevermous 464
 {"GAMES/XONIX", PROGS .. "/games/xonix/trunk/xonix"},
5098 clevermous 465
})
5110 clevermous 466
tup.append_table(extra_files, {
5109 clevermous 467
 {"kolibrios/games/fara/fara", PROGS .. "/games/fara/trunk/fara"},
468
})
5098 clevermous 469
end -- tup.getconfig('NO_MSVC') ~= 'full'
470
 
471
-- Programs that require GCC to compile.
472
if tup.getconfig('NO_GCC') ~= 'full' then
473
tup.append_table(img_files, {
5109 clevermous 474
 {"3D/CUBELINE", PROGS .. "/demos/cubeline/trunk/cubeline"},
475
 {"3D/GEARS", PROGS .. "/demos/gears/trunk/gears"},
5123 clevermous 476
 {"GAMES/CHECKERS", PROGS .. "/games/checkers/trunk/checkers"},
5111 clevermous 477
 {"GAMES/REVERSI", PROGS .. "/games/reversi/trunk/reversi"},
5098 clevermous 478
 {"SHELL", PROGS .. "/system/shell/shell"},
479
})
480
tup.append_table(extra_files, {
481
 {"kolibrios/emul/e80/e80", PROGS .. "/emulator/e80/trunk/e80"},
5228 alpine 482
 {"kolibrios/games/heliothryx/", PROGS .. "/games/heliothryx/heliothryx"},
5233 raandoom 483
 {"kolibrios/games/2048/", PROGS .. "/games/2048/2048"},
5236 alpine 484
 {"kolibrios/games/marblematch3/", PROGS .. "/games/marblematch3/marblematch3"},
5131 clevermous 485
 {"kolibrios/games/quake/", "common/games/quake/*"}, -- not really gcc, but no sense without sdlquake
486
 {"kolibrios/games/quake/", "../contrib/other/sdlquake-1.0.9/sdlquake"},
5098 clevermous 487
})
488
end -- tup.getconfig('NO_GCC') ~= 'full'
489
 
490
-- Skins.
491
tup.include("../skins/skinlist.lua")
492
 
493
--[================================[ CODE ]================================]--
494
-- expand extra_files and similar
495
function expand_extra_files(files)
496
  local result = {}
497
  for i,v in ipairs(files) do
498
    if string.match(v[2], "%*")
499
    then
500
      local g = tup.glob(v[2])
501
      for j,x in ipairs(g) do
5132 clevermous 502
        table.insert(result, {v[1], x, group=v.group})
5098 clevermous 503
      end
504
    else
505
      if v.cp1251_from then
506
        tup.definerule{inputs = {v.cp1251_from}, command = 'iconv -f cp866 -t cp1251 "%f" > "%o"', outputs = {v[2]}}
507
      end
5132 clevermous 508
      table.insert(result, {v[1], v[2], group=v.group})
5098 clevermous 509
    end
510
  end
511
  return result
512
end
513
 
514
-- append skins to extra_files
515
for i,v in ipairs(skinlist) do
516
  table.insert(extra_files, {"Skins/", "../skins/" .. v})
517
end
518
 
519
-- prepare distr_extra_files and iso_extra_files: expand and append common part
520
extra_files = expand_extra_files(extra_files)
521
distr_extra_files = expand_extra_files(distr_extra_files)
522
iso_extra_files = expand_extra_files(iso_extra_files)
523
tup.append_table(distr_extra_files, extra_files)
524
tup.append_table(iso_extra_files, extra_files)
525
 
526
-- generate list of directories to be created inside kolibri.img
527
img_dirs = {}
528
input_deps = {}
529
for i,v in ipairs(img_files) do
530
  img_file = v[1]
531
  local_file = v[2]
532
 
533
  slash_pos = 0
534
  while true do
535
    slash_pos = string.find(img_file, '/', slash_pos + 1)
536
    if not slash_pos then break end
537
    table.insert(img_dirs, string.sub(img_file, 1, slash_pos - 1))
538
  end
539
 
540
  -- tup does not want to see hidden files as dependencies
541
  if not string.match(local_file, "/%.") then
5132 clevermous 542
    table.insert(input_deps, v.group or local_file)
5098 clevermous 543
  end
544
end
545
 
546
-- create empty 1.44M file
5118 clevermous 547
make_img_command = '^ MKIMG kolibri.img^ ' -- for tup: don't write full command to logs
548
make_img_command = make_img_command .. "dd if=/dev/zero of=kolibri.img count=2880 bs=512 2>&1"
5098 clevermous 549
-- format it as a standard 1.44M floppy
550
make_img_command = make_img_command .. " && mformat -f 1440 -i kolibri.img ::"
551
-- copy bootloader
552
if tup.getconfig("NO_FASM") ~= "full" then
553
bootloader = "../kernel/trunk/bootloader/boot_fat12.bin"
554
make_img_command = make_img_command .. " && dd if=" .. bootloader .. " of=kolibri.img count=1 bs=512 conv=notrunc 2>&1"
555
table.insert(input_deps, bootloader)
556
end
557
-- make folders
558
table.sort(img_dirs)
559
for i,v in ipairs(img_dirs) do
560
  if v ~= img_dirs[i-1] then
561
    make_img_command = make_img_command .. ' && mmd -i kolibri.img "::' .. v .. '"'
562
  end
563
end
564
-- copy files
565
for i,v in ipairs(img_files) do
566
  local_file = v[2]
567
  if v[1] == "KERNEL.MNT" and tup.getconfig("INSERT_REVISION_ID") ~= ""
568
  then
569
    -- for kernel.mnt, insert autobuild revision identifier
570
    -- from .revision to .kernel.mnt
571
    -- note that .revision and .kernel.mnt must begin with .
572
    -- to prevent tup from tracking them
573
    if build_type == "rus"
574
    then str='$(LANG=ru_RU.utf8 date -u +"[автосборка %d %b %Y %R, r$(cat .revision)]"|iconv -f utf8 -t cp866)'
575
    else str='$(date -u +"[auto-build %d %b %Y %R, r$(cat .revision)]")'
576
    end
577
    str = string.gsub(str, "%$", "\\$") -- escape $ as \$
578
    str = string.gsub(str, "%%", "%%%%") -- escape % as %%
579
    make_img_command = make_img_command .. " && cp " .. local_file .. " .kernel.mnt"
580
    make_img_command = make_img_command .. " && str=" .. str
581
    make_img_command = make_img_command .. ' && echo -n $str | dd of=.kernel.mnt bs=1 seek=`expr 279 - length "$str"` conv=notrunc 2>/dev/null'
582
    local_file = ".kernel.mnt"
583
  end
584
  make_img_command = make_img_command .. ' && mcopy -moi kolibri.img "' .. local_file .. '" "::' .. v[1] .. '"'
585
end
586
 
587
-- generate tup rule for kolibri.img
588
tup.definerule{inputs = input_deps, command = make_img_command, outputs = {"kolibri.img"}}
589
 
590
-- generate command and dependencies for mkisofs
591
input_deps = {"kolibri.img"}
592
iso_files_list = ""
593
for i,v in ipairs(iso_extra_files) do
594
  iso_files_list = iso_files_list .. ' "' .. v[1] .. '=' .. v[2] .. '"'
5132 clevermous 595
  table.insert(input_deps, v.group or v[2])
5098 clevermous 596
end
597
 
598
-- generate tup rule for kolibri.iso
599
if tup.getconfig("INSERT_REVISION_ID") ~= ""
600
then volume_id = "KolibriOS r`cat .revision`"
601
else volume_id = "KolibriOS"
602
end
603
tup.definerule{inputs = input_deps, command =
5118 clevermous 604
  '^ MKISOFS kolibri.iso^ ' .. -- for tup: don't write full command to logs
5098 clevermous 605
  'mkisofs -U -J -pad -b kolibri.img -c boot.catalog -hide-joliet boot.catalog -graft-points ' ..
606
  '-A "KolibriOS AutoBuilder" -p "CleverMouse" -publisher "KolibriOS Team" -V "' .. volume_id .. '" -sysid "KOLIBRI" ' ..
607
  '-iso-level 3 -o kolibri.iso kolibri.img' .. iso_files_list .. ' 2>&1',
608
  outputs = {"kolibri.iso"}}
609
 
610
-- generate command and dependencies for distribution kit
5104 clevermous 611
cp = 'cp "%f" "%o"'
5102 clevermous 612
tup.definerule{inputs = {"kolibri.img"}, command = cp, outputs = {"distribution_kit/kolibri.img"}}
5098 clevermous 613
for i,v in ipairs(distr_extra_files) do
5132 clevermous 614
  cmd = cp:gsub("%%f", v[2]) -- input can be a group, we can't rely on tup's expansion of %f in this case
5098 clevermous 615
  if string.sub(v[1], -1) == "/"
5132 clevermous 616
  then tup.definerule{inputs = {v.group or v[2]}, command = cmd, outputs = {"distribution_kit/" .. v[1] .. tup.file(v[2])}}
617
  else tup.definerule{inputs = {v.group or v[2]}, command = cmd, outputs = {"distribution_kit/" .. v[1]}}
5098 clevermous 618
  end
619
end