Subversion Repositories Kolibri OS

Rev

Rev 5336 | Rev 5378 | 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"},
5296 ZblCoder 140
 {"kolibrios/games/LaserTank/", "common/games/LaserTank/*"},
5098 clevermous 141
 {"kolibrios/games/jumpbump/", "common/games/jumpbump/*"},
142
 {"kolibrios/games/lrl/", "common/games/lrl/*"},
143
 {"kolibrios/lib/avcodec-55.dll", "common/lib/avcodec-55.dll"},
144
 {"kolibrios/lib/avdevice-55.dll", "common/lib/avdevice-55.dll"},
145
 {"kolibrios/lib/avformat-55.dll", "common/lib/avformat-55.dll"},
146
 {"kolibrios/lib/avutil-52.dll", "common/lib/avutil-52.dll"},
147
 {"kolibrios/lib/freetype.dll", "common/lib/freetype.dll"},
5132 clevermous 148
 {"kolibrios/lib/libc.dll", "../contrib/sdk/bin/libc.dll", group = "../contrib/sdk/lib/"},
5098 clevermous 149
 {"kolibrios/lib/pixlib.dll", "common/lib/pixlib.dll"},
150
 {"kolibrios/lib/swresample-0.dll", "common/lib/swresample-0.dll"},
151
 {"kolibrios/lib/swscale-2.dll", "common/lib/swscale-2.dll"},
152
 {"kolibrios/lib/zlib.dll", "common/lib/zlib.dll"},
153
 {"kolibrios/media/fplay-full", "common/media/fplay-full"},
154
 {"kolibrios/media/zsea/zsea.ini", PROGS .. "/media/zsea/zSea.ini"},
155
 {"kolibrios/media/zsea/buttons/buttons.png", PROGS .. "/media/zsea/buttons.png"},
156
}
157
if build_type == "rus" then tup.append_table(extra_files, {
158
 {"Docs/cp866/config.txt", build_type .. "/docs/CONFIG.TXT"},
159
 {"Docs/cp866/gnu.txt", build_type .. "/docs/GNU.TXT"},
160
 {"Docs/cp866/history.txt", build_type .. "/docs/HISTORY.TXT"},
161
 {"Docs/cp866/hot_keys.txt", build_type .. "/docs/HOT_KEYS.TXT"},
162
 {"Docs/cp866/install.txt", build_type .. "/docs/INSTALL.TXT"},
163
 {"Docs/cp866/readme.txt", build_type .. "/docs/README.TXT"},
164
 {"Docs/cp866/sysfuncr.txt", PROGS .. "/system/docpack/trunk/SYSFUNCR.TXT"},
165
 {"Docs/cp1251/config.txt", build_type .. "/docs/CONFIG.WIN.TXT", cp1251_from = build_type .. "/docs/CONFIG.TXT"},
166
 {"Docs/cp1251/gnu.txt", build_type .. "/docs/GNU.WIN.TXT", cp1251_from = build_type .. "/docs/GNU.TXT"},
167
 {"Docs/cp1251/history.txt", build_type .. "/docs/HISTORY.WIN.TXT", cp1251_from = build_type .. "/docs/HISTORY.TXT"},
168
 {"Docs/cp1251/hot_keys.txt", build_type .. "/docs/HOT_KEYS.WIN.TXT", cp1251_from = build_type .. "/docs/HOT_KEYS.TXT"},
169
 {"Docs/cp1251/install.txt", build_type .. "/docs/INSTALL.WIN.TXT", cp1251_from = build_type .. "/docs/INSTALL.TXT"},
170
 {"Docs/cp1251/readme.txt", build_type .. "/docs/README.WIN.TXT", cp1251_from = build_type .. "/docs/README.TXT"},
171
 {"Docs/cp1251/sysfuncr.txt", build_type .. "/docs/SYSFUNCR.WIN.TXT", cp1251_from = PROGS .. "/system/docpack/trunk/SYSFUNCR.TXT"},
172
 {"HD_Load/9x2klbr/", PROGS .. "/hd_load/9x2klbr/readme_dos.txt"},
173
 {"HD_Load/9x2klbr/", PROGS .. "/hd_load/9x2klbr/readme_win.txt"},
174
 {"HD_Load/mtldr/", PROGS .. "/hd_load/mtldr/install.txt"},
175
 {"HD_Load/USB_Boot/", PROGS .. "/hd_load/usb_boot/readme.txt"},
176
 {"kolibrios/media/zsea/zsea_keys.txt", PROGS .. "/media/zsea/Docs/zSea_keys_rus.txt"},
5334 Anton_K 177
 {"kolibrios/games/Dungeons/Resources/Textures/Environment/", PROGS .. "/games/Dungeons/Resources/Textures/Environment/*"},
178
 {"kolibrios/games/Dungeons/Resources/Textures/Objects/", PROGS .. "/games/Dungeons/Resources/Textures/Objects/*"},
179
 {"kolibrios/games/Dungeons/Resources/Textures/HUD/", PROGS .. "/games/Dungeons/Resources/Textures/HUD/*"},
180
 {"kolibrios/games/Dungeons/Resources/Textures/", PROGS .. "/games/Dungeons/Resources/Textures/Licenses.txt"},
181
 {"kolibrios/games/Dungeons/", PROGS .. "/games/Dungeons/readme_ru.txt"},
5098 clevermous 182
}) else tup.append_table(extra_files, {
183
 {"Docs/config.txt", build_type .. "/docs/CONFIG.TXT"},
184
 {"Docs/copying.txt", build_type .. "/docs/COPYING.TXT"},
185
 {"Docs/hot_keys.txt", build_type .. "/docs/HOT_KEYS.TXT"},
186
 {"Docs/install.txt", build_type .. "/docs/INSTALL.TXT"},
187
 {"Docs/readme.txt", build_type .. "/docs/README.TXT"},
188
 {"Docs/sysfuncs.txt", PROGS .. "/system/docpack/trunk/SYSFUNCS.TXT"},
189
 {"HD_Load/9x2klbr/", PROGS .. "/hd_load/9x2klbr/readme.txt"},
190
 {"HD_Load/mtldr/install.txt", PROGS .. "/hd_load/mtldr/install_eng.txt"},
191
 {"HD_Load/USB_Boot/readme.txt", PROGS .. "/hd_load/usb_boot/readme_eng.txt"},
192
 {"kolibrios/media/zsea/zsea_keys.txt", PROGS .. "/media/zsea/Docs/zSea_keys_eng.txt"},
193
}) end
194
--[[
195
Files to be included in distribution kit outside of kolibri.img, but not kolibri.iso.
196
Same syntax as extra_files.
197
]]--
198
if build_type == "rus" then
199
distr_extra_files = {
200
 {"/readme_dos.txt", build_type .. "/distr_data/readme_dos_distr.txt"},
201
 {"/readme.txt", build_type .. "/distr_data/readme_distr.txt", cp1251_from = build_type .. "/distr_data/readme_dos_distr.txt"},
202
}
203
else
204
distr_extra_files = {
205
 {"/readme.txt", build_type .. "/distr_data/readme_distr.txt"},
206
}
207
end
208
--[[
209
Files to be included in kolibri.iso outside of kolibri.img, but not distribution kit.
210
Same syntax as extra_files.
211
]]--
212
if build_type == "rus" then
213
iso_extra_files = {
214
 {"/readme_dos.txt", build_type .. "/distr_data/readme_dos.txt"},
215
 {"/readme.txt", build_type .. "/distr_data/readme.txt", cp1251_from = build_type .. "/distr_data/readme_dos.txt"},
216
}
217
else
218
iso_extra_files = {
219
 {"/readme.txt", build_type .. "/distr_data/readme.txt"},
220
}
221
end
222
 
223
-- Programs that require FASM to compile.
224
if tup.getconfig('NO_FASM') ~= 'full' then
225
tup.append_table(img_files, {
226
 {"KERNEL.MNT", "../kernel/trunk/kernel.mnt"},
227
 {"@MENU", PROGS .. "/system/menu/trunk/menu"},
228
 {"@PANEL", PROGS .. "/system/panel/trunk/@PANEL"},
229
 {"@DOCKY", PROGS .. "/system/docky/trunk/docky"},
230
 {"@NOTIFY", PROGS .. "/system/notify3/notify"},
231
 {"@SS", PROGS .. "/system/ss/trunk/@ss"},
232
 {"REFRSCRN", PROGS .. "/system/refrscrn/refrscrn"},
233
 {"ASCIIVJU", PROGS .. "/develop/asciivju/trunk/asciivju"},
234
 {"CALC", PROGS .. "/other/calc/trunk/calc"},
235
 {"CALENDAR", PROGS .. "/system/calendar/trunk/calendar"},
236
 {"COLRDIAL", PROGS .. "/system/colrdial/color_dialog"},
237
 {"LOADDRV", PROGS .. "/system/loaddrv/loaddrv"},
238
 {"CPU", PROGS .. "/system/cpu/trunk/cpu"},
239
 {"CPUID", PROGS .. "/system/cpuid/trunk/CPUID"},
240
 {"DESKTOP", PROGS .. "/system/desktop/trunk/desktop"},
241
 {"DISPTEST", PROGS .. "/system/disptest/trunk/disptest"},
242
 {"DOCPACK", PROGS .. "/system/docpack/trunk/docpack"},
243
 {"END", PROGS .. "/system/end/light/end"},
244
 {"FSPEED", PROGS .. "/fs/fspeed/fspeed"},
245
 {"GMON", PROGS .. "/system/gmon/gmon"},
246
 {"HDD_INFO", PROGS .. "/system/hdd_info/trunk/hdd_info"},
247
 {"@ICON", PROGS .. "/system/icon_new/@icon"},
248
 {"CROPFLAT", PROGS .. "/system/cropflat/cropflat"},
249
 {"KBD", PROGS .. "/system/kbd/trunk/kbd"},
250
 {"KPACK", PROGS .. "/other/kpack/trunk/kpack"},
251
 {"LAUNCHER", PROGS .. "/system/launcher/trunk/launcher"},
252
 {"MAGNIFY", PROGS .. "/demos/magnify/trunk/magnify"},
253
 {"MGB", PROGS .. "/system/mgb/trunk/mgb"},
254
 {"MOUSEMUL", PROGS .. "/system/mousemul/trunk/mousemul"},
255
 {"MADMOUSE", PROGS .. "/other/madmouse/madmouse"},
256
 {"MYKEY", PROGS .. "/system/MyKey/trunk/MyKey"},
257
 {"PCIDEV", PROGS .. "/system/pcidev/trunk/PCIDEV"},
258
 {"RDSAVE", PROGS .. "/system/rdsave/trunk/rdsave"},
259
 {"RTFREAD", PROGS .. "/other/rtfread/trunk/rtfread"},
260
 {"RUN", PROGS .. "/system/run/trunk/run"},
261
 {"SEARCHAP", PROGS .. "/system/searchap/searchap"},
262
 {"SCRSHOOT", PROGS .. "/media/scrshoot/scrshoot"},
263
 {"SETUP", PROGS .. "/system/setup/trunk/setup"},
264
 {"TEST", PROGS .. "/system/test/trunk/test"},
265
 {"TINYPAD", PROGS .. "/develop/tinypad/trunk/tinypad"},
266
 {"ZKEY", PROGS .. "/system/zkey/trunk/ZKEY"},
267
 {"TERMINAL", PROGS .. "/system/terminal/terminal"},
268
 {"3D/3DSHEART", PROGS .. "/demos/3dsheart/trunk/3dsheart"},
269
 {"3D/3DWAV", PROGS .. "/demos/3dwav/trunk/3dwav"},
270
 {"3D/CROWNSCR", PROGS .. "/demos/crownscr/trunk/crownscr"},
271
 {"3D/FREE3D04", PROGS .. "/demos/free3d04/trunk/free3d04"},
272
 {"3D/VIEW3DS", PROGS .. "/demos/3DS/VIEW3DS"},
273
 {"DEMOS/BCDCLK", PROGS .. "/demos/bcdclk/trunk/bcdclk"},
274
 {"DEMOS/CIRCLE", PROGS .. "/develop/examples/circle/trunk/circle"},
275
 {"DEMOS/COLORREF", PROGS .. "/demos/colorref/trunk/colorref"},
276
 {"DEMOS/CSLIDE", PROGS .. "/demos/cslide/trunk/cslide"},
277
 {"DEMOS/EYES", PROGS .. "/demos/eyes/trunk/eyes"},
278
 {"DEMOS/FIREWORK", PROGS .. "/demos/firework/trunk/firework"},
279
 {"DEMOS/MOVBACK", PROGS .. "/demos/movback/trunk/movback"},
280
 {"DEMOS/PLASMA", PROGS .. "/demos/plasma/trunk/plasma"},
281
 {"DEMOS/TINYFRAC", PROGS .. "/demos/tinyfrac/trunk/tinyfrac"},
282
 {"DEMOS/TRANTEST", PROGS .. "/demos/trantest/trunk/trantest"},
283
 {"DEMOS/TUBE", PROGS .. "/demos/tube/trunk/tube"},
284
 {"DEMOS/UNVWATER", PROGS .. "/demos/unvwater/trunk/unvwater"},
285
 {"DEMOS/USE_MB", PROGS .. "/demos/use_mb/use_mb"},
286
 {"DEMOS/WEB", PROGS .. "/demos/web/trunk/web"},
287
 {"DEVELOP/BOARD", PROGS .. "/system/board/trunk/board"},
288
 {"DEVELOP/cObj", PROGS .. "/develop/cObj/trunk/cObj"},
289
 {"DEVELOP/FASM", PROGS .. "/develop/fasm/trunk/fasm"},
290
 {"DEVELOP/H2D2B", PROGS .. "/develop/h2d2b/trunk/h2d2b"},
291
 {"DEVELOP/HEED", PROGS .. "/develop/heed/trunk/heed"},
292
 {"DEVELOP/KEYASCII", PROGS .. "/develop/keyascii/trunk/keyascii"},
293
 {"DEVELOP/MTDBG", PROGS .. "/develop/mtdbg/mtdbg"},
294
 {"DEVELOP/SCANCODE", PROGS .. "/develop/scancode/trunk/scancode"},
295
 {"DEVELOP/T_EDIT", PROGS .. "/other/t_edit/t_edit"},
296
 {"DEVELOP/test_gets", PROGS .. "/develop/libraries/console/examples/test_gets"},
297
 {"DEVELOP/THREAD", PROGS .. "/develop/examples/thread/trunk/thread"},
298
 {"DEVELOP/INFO/ASM.SYN", PROGS .. "/other/t_edit/info/asm.syn"},
299
 {"DEVELOP/INFO/CPP_KOL_CLA.SYN", PROGS .. "/other/t_edit/info/cpp_kol_cla.syn"},
300
 {"DEVELOP/INFO/CPP_KOL_DAR.SYN", PROGS .. "/other/t_edit/info/cpp_kol_dar.syn"},
301
 {"DEVELOP/INFO/CPP_KOL_DEF.SYN", PROGS .. "/other/t_edit/info/cpp_kol_def.syn"},
302
 {"DEVELOP/INFO/DEFAULT.SYN", PROGS .. "/other/t_edit/info/default.syn"},
303
 {"DEVELOP/INFO/HTML.SYN", PROGS .. "/other/t_edit/info/html.syn"},
304
 {"DEVELOP/INFO/INI_FILES.SYN", PROGS .. "/other/t_edit/info/ini_files.syn"},
305
 {"DEVELOP/INFO/WIN_CONST.SYN", PROGS .. "/other/t_edit/info/win_const.syn"},
306
 {"File Managers/KFAR", PROGS .. "/fs/kfar/trunk/kfar"},
307
 {"File Managers/KFM", PROGS .. "/fs/kfm/trunk/kfm"},
308
 {"File Managers/OPENDIAL", PROGS .. "/fs/opendial/opendial"},
309
 {"GAMES/15", PROGS .. "/games/15/trunk/15"},
310
 {"GAMES/ARCANII", PROGS .. "/games/arcanii/trunk/arcanii"},
311
 {"GAMES/FREECELL", PROGS .. "/games/freecell/freecell"},
312
 {"GAMES/GOMOKU", PROGS .. "/games/gomoku/trunk/gomoku"},
313
 {"GAMES/INVADERS", PROGS .. "/games/invaders/invaders"},
314
 {"GAMES/KLAVISHA", PROGS .. "/games/klavisha/trunk/klavisha"},
315
 {"GAMES/LINES", PROGS .. "/games/lines/lines"},
316
 {"GAMES/MBLOCKS", PROGS .. "/games/mblocks/trunk/mblocks"},
317
 {"GAMES/MSQUARE", PROGS .. "/games/MSquare/trunk/MSquare"},
318
 {"GAMES/PHENIX", PROGS .. "/games/phenix/trunk/phenix"},
319
 {"GAMES/PIPES", PROGS .. "/games/pipes/pipes"},
320
 {"GAMES/PONG", PROGS .. "/games/pong/trunk/pong"},
321
 {"GAMES/PONG3", PROGS .. "/games/pong3/trunk/pong3"},
322
 {"GAMES/RSQUARE", PROGS .. "/games/rsquare/trunk/rsquare"},
323
 {"GAMES/SNAKE", PROGS .. "/games/snake/trunk/snake"},
324
 {"GAMES/SQ_GAME", PROGS .. "/games/sq_game/trunk/SQ_GAME"},
325
 {"GAMES/SUDOKU", PROGS .. "/games/sudoku/trunk/sudoku"},
326
 {"GAMES/SW", PROGS .. "/games/sw/trunk/sw"},
327
 {"GAMES/TANKS", PROGS .. "/games/tanks/trunk/tanks"},
328
 {"GAMES/TETRIS", PROGS .. "/games/tetris/trunk/tetris"},
329
 {"LIB/ARCHIVER.OBJ", PROGS .. "/fs/kfar/trunk/kfar_arc/kfar_arc.obj"},
330
 {"LIB/BOX_LIB.OBJ", PROGS .. "/develop/libraries/box_lib/trunk/box_lib.obj"},
331
 {"LIB/BUF2D.OBJ", PROGS .. "/develop/libraries/buf2d/trunk/buf2d.obj"},
332
 {"LIB/CONSOLE.OBJ", PROGS .. "/develop/libraries/console/console.obj"},
333
 {"LIB/LIBGFX.OBJ", PROGS .. "/develop/libraries/libs-dev/libgfx/libgfx.obj"},
334
 {"LIB/LIBIMG.OBJ", PROGS .. "/develop/libraries/libs-dev/libimg/libimg.obj"},
335
 {"LIB/LIBINI.OBJ", PROGS .. "/develop/libraries/libs-dev/libini/libini.obj"},
336
 {"LIB/LIBIO.OBJ", PROGS .. "/develop/libraries/libs-dev/libio/libio.obj"},
337
 {"LIB/MSGBOX.OBJ", PROGS .. "/develop/libraries/msgbox/msgbox.obj"},
338
 {"LIB/NETWORK.OBJ", PROGS .. "/develop/libraries/network/network.obj"},
339
 {"LIB/SORT.OBJ", PROGS .. "/develop/libraries/sorter/sort.obj"},
340
 {"LIB/HTTP.OBJ", PROGS .. "/develop/libraries/http/http.obj"},
341
 {"LIB/PROC_LIB.OBJ", PROGS .. "/develop/libraries/proc_lib/trunk/proc_lib.obj"},
342
 {"LIB/CNV_PNG.OBJ", PROGS .. "/media/zsea/plugins/png/cnv_png.obj"},
343
 {"MEDIA/ANIMAGE", PROGS .. "/media/animage/trunk/animage"},
344
 {"MEDIA/KIV", PROGS .. "/media/kiv/trunk/kiv"},
345
 {"MEDIA/LISTPLAY", PROGS .. "/media/listplay/trunk/listplay"},
346
 {"MEDIA/MIDAMP", PROGS .. "/media/midamp/trunk/midamp"},
347
 {"MEDIA/PALITRA", PROGS .. "/media/palitra/trunk/palitra"},
348
 {"MEDIA/STARTMUS", PROGS .. "/media/startmus/trunk/STARTMUS"},
349
 {"NETWORK/PING", PROGS .. "/network/icmp/ping"},
350
 {"NETWORK/NETCFG", PROGS .. "/network/netcfg/netcfg"},
351
 {"NETWORK/NETSTAT", PROGS .. "/network/netstat/netstat"},
352
 {"NETWORK/NSLOOKUP", PROGS .. "/network/nslookup/nslookup"},
353
 {"NETWORK/PASTA", PROGS .. "/network/pasta/pasta"},
354
 {"NETWORK/SYNERGYC", PROGS .. "/network/synergyc/synergyc"},
355
 {"NETWORK/TCPSERV", PROGS .. "/network/tcpserv/tcpserv"},
356
 {"NETWORK/TELNET", PROGS .. "/network/telnet/telnet"},
357
 {"NETWORK/ZEROCONF", PROGS .. "/network/zeroconf/zeroconf"},
358
 {"NETWORK/FTPC", PROGS .. "/network/ftpc/ftpc"},
359
 {"NETWORK/FTPD", PROGS .. "/network/ftpd/ftpd"},
360
 {"NETWORK/TFTPC", PROGS .. "/network/tftpc/tftpc"},
361
 {"NETWORK/IRCC", PROGS .. "/network/ircc/ircc"},
362
 {"NETWORK/DOWNLOADER", PROGS .. "/network/downloader/downloader"},
363
 {"DRIVERS/VIDINTEL.SYS", "../drivers/video/vidintel.sys"},
364
 {"DRIVERS/3C59X.SYS", "../drivers/ethernet/3c59x.sys"},
365
 {"DRIVERS/DEC21X4X.SYS", "../drivers/ethernet/dec21x4x.sys"},
366
 {"DRIVERS/FORCEDETH.SYS", "../drivers/ethernet/forcedeth.sys"},
367
 {"DRIVERS/I8254X.SYS", "../drivers/ethernet/i8254x.sys"},
368
 {"DRIVERS/I8255X.SYS", "../drivers/ethernet/i8255x.sys"},
369
 {"DRIVERS/MTD80X.SYS", "../drivers/ethernet/mtd80x.sys"},
370
 {"DRIVERS/PCNET32.SYS", "../drivers/ethernet/pcnet32.sys"},
371
 {"DRIVERS/R6040.SYS", "../drivers/ethernet/R6040.sys"},
372
 {"DRIVERS/RHINE.SYS", "../drivers/ethernet/rhine.sys"},
373
 {"DRIVERS/RTL8029.SYS", "../drivers/ethernet/RTL8029.sys"},
374
 {"DRIVERS/RTL8139.SYS", "../drivers/ethernet/RTL8139.sys"},
375
 {"DRIVERS/RTL8169.SYS", "../drivers/ethernet/RTL8169.sys"},
376
 {"DRIVERS/SIS900.SYS", "../drivers/ethernet/sis900.sys"},
377
 {"DRIVERS/UHCI.SYS", "../drivers/usb/uhci.sys"},
378
 {"DRIVERS/OHCI.SYS", "../drivers/usb/ohci.sys"},
379
 {"DRIVERS/EHCI.SYS", "../drivers/usb/ehci.sys"},
380
 {"DRIVERS/USBHID.SYS", "../drivers/usb/usbhid/usbhid.sys"},
381
 {"DRIVERS/USBSTOR.SYS", "../drivers/usb/usbstor.sys"},
382
 {"DRIVERS/RDC.SYS", "../drivers/video/rdc.sys"},
383
 {"DRIVERS/COMMOUSE.SYS", "../drivers/mouse/commouse.sys"},
384
 {"DRIVERS/PS2MOUSE.SYS", "../drivers/mouse/ps2mouse4d/trunk/ps2mouse.sys"},
385
 {"DRIVERS/TMPDISK.SYS", "../drivers/disk/tmpdisk.sys"},
386
 {"DRIVERS/intel_hda.sys", "../drivers/audio/intel_hda/intel_hda.sys"},
387
 {"DRIVERS/SB16.SYS", "../drivers/audio/sb16/sb16.sys"},
388
 {"DRIVERS/SOUND.SYS", "../drivers/audio/sound.sys"},
389
 {"DRIVERS/INFINITY.SYS", "../drivers/audio/infinity/infinity.sys"},
390
 {"DRIVERS/INTELAC97.SYS", "../drivers/audio/intelac97.sys"},
391
 {"DRIVERS/EMU10K1X.SYS", "../drivers/audio/emu10k1x.sys"},
392
 {"DRIVERS/FM801.SYS", "../drivers/audio/fm801.sys"},
393
 {"DRIVERS/VT823X.SYS", "../drivers/audio/vt823x.sys"},
394
 {"DRIVERS/SIS.SYS", "../drivers/audio/sis.sys"},
395
})
396
tup.append_table(extra_files, {
397
 {"HD_Load/9x2klbr/", PROGS .. "/hd_load/9x2klbr/9x2klbr.exe"},
398
 {"HD_Load/MeOSLoad/", PROGS .. "/hd_load/meosload/MeOSload.com"},
399
 {"HD_Load/mtldr/", PROGS .. "/hd_load/mtldr/mtldr"},
400
 {"HD_Load/", PROGS .. "/hd_load/mtldr_install/mtldr_install.exe"},
401
 {"HD_Load/USB_Boot/", PROGS .. "/hd_load/usb_boot/BOOT_F32.BIN"},
402
 {"HD_Load/USB_Boot/", PROGS .. "/hd_load/usb_boot/MTLD_F32"},
403
 {"HD_Load/USB_Boot/", PROGS .. "/hd_load/usb_boot/inst.exe"},
404
 {"HD_Load/USB_Boot/", PROGS .. "/hd_load/usb_boot/setmbr.exe"},
405
 {"HD_Load/USB_boot_old/", PROGS .. "/hd_load/usb_boot_old/MeOSload.com"},
406
 {"HD_Load/USB_boot_old/", PROGS .. "/hd_load/usb_boot_old/enable.exe"},
5335 yogev_ezra 407
 {"kolibrios/games/codemaster/binary_master", PROGS .. "/games/codemaster/binary_master"},
408
 {"kolibrios/games/codemaster/hang_programmer", PROGS .. "/games/codemaster/hang_programmer"},
409
 {"kolibrios/games/codemaster/kolibri_puzzle", PROGS .. "/games/codemaster/kolibri_puzzle"},
5098 clevermous 410
 {"kolibrios/media/zsea/zsea", PROGS .. "/media/zsea/zSea"},
411
 {"kolibrios/media/zsea/plugins/cnv_bmp.obj", PROGS .. "/media/zsea/plugins/bmp/cnv_bmp.obj"},
412
 {"kolibrios/media/zsea/plugins/cnv_gif.obj", PROGS .. "/media/zsea/plugins/gif/cnv_gif.obj"},
413
 {"kolibrios/media/zsea/plugins/cnv_jpeg.obj", PROGS .. "/media/zsea/plugins/jpeg/cnv_jpeg.obj"},
414
 {"kolibrios/media/zsea/plugins/convert.obj", PROGS .. "/media/zsea/plugins/convert/convert.obj"},
415
 {"kolibrios/media/zsea/plugins/rotate.obj", PROGS .. "/media/zsea/plugins/rotate/rotate.obj"},
416
 {"kolibrios/media/zsea/plugins/scaling.obj", PROGS .. "/media/zsea/plugins/scaling/scaling.obj"},
417
})
418
-- For russian build, add russian-only programs.
419
if build_type == "rus" then tup.append_table(img_files, {
420
 {"PERIOD", PROGS .. "/other/period/trunk/period"},
421
 {"DEVELOP/TESTCON2", PROGS .. "/develop/libraries/console/examples/testcon2_rus"},
422
}) else tup.append_table(img_files, {
423
 {"DEVELOP/TESTCON2", PROGS .. "/develop/libraries/console/examples/testcon2_eng"},
424
 {"GAMES/SOKO", PROGS .. "/games/soko/trunk/SOKO"},
425
}) end
426
 
5334 Anton_K 427
if build_type == "rus" then tup.append_table(extra_files, {
428
 {"kolibrios/games/Dungeons/Dungeons", PROGS .. "/games/Dungeons/Dungeons"},
429
}) end
430
 
5098 clevermous 431
end -- tup.getconfig('NO_FASM') ~= 'full'
432
 
433
-- Programs that require NASM to compile.
434
if tup.getconfig('NO_NASM') ~= 'full' then
435
tup.append_table(img_files, {
436
 {"DEMOS/ACLOCK", PROGS .. "/demos/aclock/trunk/aclock"},
437
 {"DEMOS/TIMER", PROGS .. "/other/Timer/timer"},
438
 {"GAMES/C4", PROGS .. "/games/c4/trunk/c4"},
439
 {"TINFO", PROGS .. "/system/tinfo/tinfo"},
440
 {"DEVELOP/MSTATE", PROGS .. "/develop/mstate/mstate"},
441
})
442
end -- tup.getconfig('NO_NASM') ~= 'full'
443
 
444
-- Programs that require C-- to compile.
445
if tup.getconfig('NO_CMM') ~= 'full' then
446
tup.append_table(img_files, {
447
 {"File Managers/EOLITE", PROGS .. "/cmm/eolite/Eolite.com"},
448
 {"GAMES/CLICKS", PROGS .. "/games/clicks/trunk/clicks.com"},
449
 {"GAMES/FindNumbers", PROGS .. "/games/FindNumbers/trunk/FindNumbers"},
450
 {"GAMES/flood-it", PROGS .. "/games/flood-it/trunk/flood-it.com"},
451
 {"GAMES/MINE", PROGS .. "/games/mine/trunk/mine"},
452
 {"NETWORK/WebView", PROGS .. "/cmm/browser/WebView.com"},
453
 {"TMPDISK", PROGS .. "/cmm/tmpdisk/tmpdisk.com"},
454
})
455
end -- tup.getconfig('NO_CMM') ~= 'full'
456
 
457
-- Programs that require MSVC to compile.
458
if tup.getconfig('NO_MSVC') ~= 'full' then
459
tup.append_table(img_files, {
460
 {"GRAPH", PROGS .. "/other/graph/graph"},
461
 {"TABLE", PROGS .. "/other/table/table"},
462
 {"MEDIA/AC97SND", PROGS .. "/media/ac97snd/ac97snd.bin"},
463
 {"GAMES/KOSILKA", PROGS .. "/games/kosilka/kosilka"},
5113 clevermous 464
 {"GAMES/RFORCES", PROGS .. "/games/rforces/trunk/rforces"},
5115 clevermous 465
 {"GAMES/XONIX", PROGS .. "/games/xonix/trunk/xonix"},
5098 clevermous 466
})
5110 clevermous 467
tup.append_table(extra_files, {
5109 clevermous 468
 {"kolibrios/games/fara/fara", PROGS .. "/games/fara/trunk/fara"},
5276 ZblCoder 469
 {"kolibrios/games/LaserTank/LaserTank", PROGS .. "/games/LaserTank/trunk/LaserTank"},
5109 clevermous 470
})
5098 clevermous 471
end -- tup.getconfig('NO_MSVC') ~= 'full'
472
 
473
-- Programs that require GCC to compile.
474
if tup.getconfig('NO_GCC') ~= 'full' then
475
tup.append_table(img_files, {
5109 clevermous 476
 {"3D/CUBELINE", PROGS .. "/demos/cubeline/trunk/cubeline"},
477
 {"3D/GEARS", PROGS .. "/demos/gears/trunk/gears"},
5123 clevermous 478
 {"GAMES/CHECKERS", PROGS .. "/games/checkers/trunk/checkers"},
5111 clevermous 479
 {"GAMES/REVERSI", PROGS .. "/games/reversi/trunk/reversi"},
5098 clevermous 480
 {"SHELL", PROGS .. "/system/shell/shell"},
481
})
482
tup.append_table(extra_files, {
483
 {"kolibrios/emul/e80/e80", PROGS .. "/emulator/e80/trunk/e80"},
5228 alpine 484
 {"kolibrios/games/heliothryx/", PROGS .. "/games/heliothryx/heliothryx"},
5233 raandoom 485
 {"kolibrios/games/2048/", PROGS .. "/games/2048/2048"},
5236 alpine 486
 {"kolibrios/games/marblematch3/", PROGS .. "/games/marblematch3/marblematch3"},
5336 yogev_ezra 487
 {"kolibrios/games/nsider/", PROGS .. "/games/nsider/nsider"},
5131 clevermous 488
 {"kolibrios/games/quake/", "common/games/quake/*"}, -- not really gcc, but no sense without sdlquake
489
 {"kolibrios/games/quake/", "../contrib/other/sdlquake-1.0.9/sdlquake"},
5098 clevermous 490
})
5327 igevorse 491
-- For russian build, add russian-only programs.
5329 igevorse 492
if build_type == "rus" then tup.append_table(extra_files, {
5327 igevorse 493
 {"kolibrios/games/21days/", PROGS .. "/games/21days/21days"},
5328 igevorse 494
}) end
5098 clevermous 495
end -- tup.getconfig('NO_GCC') ~= 'full'
496
 
497
-- Skins.
498
tup.include("../skins/skinlist.lua")
499
 
500
--[================================[ CODE ]================================]--
501
-- expand extra_files and similar
502
function expand_extra_files(files)
503
  local result = {}
504
  for i,v in ipairs(files) do
505
    if string.match(v[2], "%*")
506
    then
507
      local g = tup.glob(v[2])
508
      for j,x in ipairs(g) do
5132 clevermous 509
        table.insert(result, {v[1], x, group=v.group})
5098 clevermous 510
      end
511
    else
512
      if v.cp1251_from then
513
        tup.definerule{inputs = {v.cp1251_from}, command = 'iconv -f cp866 -t cp1251 "%f" > "%o"', outputs = {v[2]}}
514
      end
5132 clevermous 515
      table.insert(result, {v[1], v[2], group=v.group})
5098 clevermous 516
    end
517
  end
518
  return result
519
end
520
 
521
-- append skins to extra_files
522
for i,v in ipairs(skinlist) do
523
  table.insert(extra_files, {"Skins/", "../skins/" .. v})
524
end
525
 
526
-- prepare distr_extra_files and iso_extra_files: expand and append common part
527
extra_files = expand_extra_files(extra_files)
528
distr_extra_files = expand_extra_files(distr_extra_files)
529
iso_extra_files = expand_extra_files(iso_extra_files)
530
tup.append_table(distr_extra_files, extra_files)
531
tup.append_table(iso_extra_files, extra_files)
532
 
533
-- generate list of directories to be created inside kolibri.img
534
img_dirs = {}
535
input_deps = {}
536
for i,v in ipairs(img_files) do
537
  img_file = v[1]
538
  local_file = v[2]
539
 
540
  slash_pos = 0
541
  while true do
542
    slash_pos = string.find(img_file, '/', slash_pos + 1)
543
    if not slash_pos then break end
544
    table.insert(img_dirs, string.sub(img_file, 1, slash_pos - 1))
545
  end
546
 
547
  -- tup does not want to see hidden files as dependencies
548
  if not string.match(local_file, "/%.") then
5132 clevermous 549
    table.insert(input_deps, v.group or local_file)
5098 clevermous 550
  end
551
end
552
 
553
-- create empty 1.44M file
5118 clevermous 554
make_img_command = '^ MKIMG kolibri.img^ ' -- for tup: don't write full command to logs
555
make_img_command = make_img_command .. "dd if=/dev/zero of=kolibri.img count=2880 bs=512 2>&1"
5098 clevermous 556
-- format it as a standard 1.44M floppy
557
make_img_command = make_img_command .. " && mformat -f 1440 -i kolibri.img ::"
558
-- copy bootloader
559
if tup.getconfig("NO_FASM") ~= "full" then
560
bootloader = "../kernel/trunk/bootloader/boot_fat12.bin"
561
make_img_command = make_img_command .. " && dd if=" .. bootloader .. " of=kolibri.img count=1 bs=512 conv=notrunc 2>&1"
562
table.insert(input_deps, bootloader)
563
end
564
-- make folders
565
table.sort(img_dirs)
566
for i,v in ipairs(img_dirs) do
567
  if v ~= img_dirs[i-1] then
568
    make_img_command = make_img_command .. ' && mmd -i kolibri.img "::' .. v .. '"'
569
  end
570
end
571
-- copy files
572
for i,v in ipairs(img_files) do
573
  local_file = v[2]
574
  if v[1] == "KERNEL.MNT" and tup.getconfig("INSERT_REVISION_ID") ~= ""
575
  then
576
    -- for kernel.mnt, insert autobuild revision identifier
577
    -- from .revision to .kernel.mnt
578
    -- note that .revision and .kernel.mnt must begin with .
579
    -- to prevent tup from tracking them
580
    if build_type == "rus"
581
    then str='$(LANG=ru_RU.utf8 date -u +"[автосборка %d %b %Y %R, r$(cat .revision)]"|iconv -f utf8 -t cp866)'
582
    else str='$(date -u +"[auto-build %d %b %Y %R, r$(cat .revision)]")'
583
    end
584
    str = string.gsub(str, "%$", "\\$") -- escape $ as \$
585
    str = string.gsub(str, "%%", "%%%%") -- escape % as %%
586
    make_img_command = make_img_command .. " && cp " .. local_file .. " .kernel.mnt"
587
    make_img_command = make_img_command .. " && str=" .. str
588
    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'
589
    local_file = ".kernel.mnt"
590
  end
591
  make_img_command = make_img_command .. ' && mcopy -moi kolibri.img "' .. local_file .. '" "::' .. v[1] .. '"'
592
end
593
 
594
-- generate tup rule for kolibri.img
595
tup.definerule{inputs = input_deps, command = make_img_command, outputs = {"kolibri.img"}}
596
 
597
-- generate command and dependencies for mkisofs
598
input_deps = {"kolibri.img"}
599
iso_files_list = ""
600
for i,v in ipairs(iso_extra_files) do
601
  iso_files_list = iso_files_list .. ' "' .. v[1] .. '=' .. v[2] .. '"'
5132 clevermous 602
  table.insert(input_deps, v.group or v[2])
5098 clevermous 603
end
604
 
605
-- generate tup rule for kolibri.iso
606
if tup.getconfig("INSERT_REVISION_ID") ~= ""
607
then volume_id = "KolibriOS r`cat .revision`"
608
else volume_id = "KolibriOS"
609
end
610
tup.definerule{inputs = input_deps, command =
5118 clevermous 611
  '^ MKISOFS kolibri.iso^ ' .. -- for tup: don't write full command to logs
5098 clevermous 612
  'mkisofs -U -J -pad -b kolibri.img -c boot.catalog -hide-joliet boot.catalog -graft-points ' ..
613
  '-A "KolibriOS AutoBuilder" -p "CleverMouse" -publisher "KolibriOS Team" -V "' .. volume_id .. '" -sysid "KOLIBRI" ' ..
614
  '-iso-level 3 -o kolibri.iso kolibri.img' .. iso_files_list .. ' 2>&1',
615
  outputs = {"kolibri.iso"}}
616
 
617
-- generate command and dependencies for distribution kit
5104 clevermous 618
cp = 'cp "%f" "%o"'
5102 clevermous 619
tup.definerule{inputs = {"kolibri.img"}, command = cp, outputs = {"distribution_kit/kolibri.img"}}
5098 clevermous 620
for i,v in ipairs(distr_extra_files) do
5132 clevermous 621
  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 622
  if string.sub(v[1], -1) == "/"
5132 clevermous 623
  then tup.definerule{inputs = {v.group or v[2]}, command = cmd, outputs = {"distribution_kit/" .. v[1] .. tup.file(v[2])}}
624
  else tup.definerule{inputs = {v.group or v[2]}, command = cmd, outputs = {"distribution_kit/" .. v[1]}}
5098 clevermous 625
  end
626
end