Subversion Repositories Kolibri OS

Rev

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