Subversion Repositories Kolibri OS

Rev

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