Subversion Repositories Kolibri OS

Rev

Rev 5454 | Rev 5468 | 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/KLAVISHA", PROGS .. "/games/klavisha/trunk/klavisha"},
326
 {"GAMES/LINES", PROGS .. "/games/lines/lines"},
327
 {"GAMES/MBLOCKS", PROGS .. "/games/mblocks/trunk/mblocks"},
328
 {"GAMES/MSQUARE", PROGS .. "/games/MSquare/trunk/MSquare"},
329
 {"GAMES/PHENIX", PROGS .. "/games/phenix/trunk/phenix"},
330
 {"GAMES/PIPES", PROGS .. "/games/pipes/pipes"},
331
 {"GAMES/PONG", PROGS .. "/games/pong/trunk/pong"},
332
 {"GAMES/PONG3", PROGS .. "/games/pong3/trunk/pong3"},
333
 {"GAMES/RSQUARE", PROGS .. "/games/rsquare/trunk/rsquare"},
334
 {"GAMES/SNAKE", PROGS .. "/games/snake/trunk/snake"},
335
 {"GAMES/SQ_GAME", PROGS .. "/games/sq_game/trunk/SQ_GAME"},
336
 {"GAMES/SUDOKU", PROGS .. "/games/sudoku/trunk/sudoku"},
337
 {"GAMES/SW", PROGS .. "/games/sw/trunk/sw"},
338
 {"GAMES/TANKS", PROGS .. "/games/tanks/trunk/tanks"},
339
 {"GAMES/TETRIS", PROGS .. "/games/tetris/trunk/tetris"},
340
 {"LIB/ARCHIVER.OBJ", PROGS .. "/fs/kfar/trunk/kfar_arc/kfar_arc.obj"},
341
 {"LIB/BOX_LIB.OBJ", PROGS .. "/develop/libraries/box_lib/trunk/box_lib.obj"},
342
 {"LIB/BUF2D.OBJ", PROGS .. "/develop/libraries/buf2d/trunk/buf2d.obj"},
343
 {"LIB/CONSOLE.OBJ", PROGS .. "/develop/libraries/console/console.obj"},
344
 {"LIB/LIBGFX.OBJ", PROGS .. "/develop/libraries/libs-dev/libgfx/libgfx.obj"},
345
 {"LIB/LIBIMG.OBJ", PROGS .. "/develop/libraries/libs-dev/libimg/libimg.obj"},
346
 {"LIB/LIBINI.OBJ", PROGS .. "/develop/libraries/libs-dev/libini/libini.obj"},
347
 {"LIB/LIBIO.OBJ", PROGS .. "/develop/libraries/libs-dev/libio/libio.obj"},
348
 {"LIB/MSGBOX.OBJ", PROGS .. "/develop/libraries/msgbox/msgbox.obj"},
349
 {"LIB/NETWORK.OBJ", PROGS .. "/develop/libraries/network/network.obj"},
350
 {"LIB/SORT.OBJ", PROGS .. "/develop/libraries/sorter/sort.obj"},
351
 {"LIB/HTTP.OBJ", PROGS .. "/develop/libraries/http/http.obj"},
352
 {"LIB/PROC_LIB.OBJ", PROGS .. "/develop/libraries/proc_lib/trunk/proc_lib.obj"},
353
 {"LIB/CNV_PNG.OBJ", PROGS .. "/media/zsea/plugins/png/cnv_png.obj"},
354
 {"MEDIA/ANIMAGE", PROGS .. "/media/animage/trunk/animage"},
355
 {"MEDIA/KIV", PROGS .. "/media/kiv/trunk/kiv"},
356
 {"MEDIA/LISTPLAY", PROGS .. "/media/listplay/trunk/listplay"},
357
 {"MEDIA/MIDAMP", PROGS .. "/media/midamp/trunk/midamp"},
358
 {"MEDIA/PALITRA", PROGS .. "/media/palitra/trunk/palitra"},
359
 {"MEDIA/STARTMUS", PROGS .. "/media/startmus/trunk/STARTMUS"},
360
 {"NETWORK/PING", PROGS .. "/network/icmp/ping"},
361
 {"NETWORK/NETCFG", PROGS .. "/network/netcfg/netcfg"},
362
 {"NETWORK/NETSTAT", PROGS .. "/network/netstat/netstat"},
363
 {"NETWORK/NSLOOKUP", PROGS .. "/network/nslookup/nslookup"},
364
 {"NETWORK/PASTA", PROGS .. "/network/pasta/pasta"},
365
 {"NETWORK/SYNERGYC", PROGS .. "/network/synergyc/synergyc"},
366
 {"NETWORK/TCPSERV", PROGS .. "/network/tcpserv/tcpserv"},
367
 {"NETWORK/TELNET", PROGS .. "/network/telnet/telnet"},
368
 {"NETWORK/ZEROCONF", PROGS .. "/network/zeroconf/zeroconf"},
369
 {"NETWORK/FTPC", PROGS .. "/network/ftpc/ftpc"},
370
 {"NETWORK/FTPD", PROGS .. "/network/ftpd/ftpd"},
371
 {"NETWORK/TFTPC", PROGS .. "/network/tftpc/tftpc"},
372
 {"NETWORK/IRCC", PROGS .. "/network/ircc/ircc"},
373
 {"NETWORK/DOWNLOADER", PROGS .. "/network/downloader/downloader"},
374
 {"DRIVERS/VIDINTEL.SYS", "../drivers/video/vidintel.sys"},
375
 {"DRIVERS/3C59X.SYS", "../drivers/ethernet/3c59x.sys"},
376
 {"DRIVERS/DEC21X4X.SYS", "../drivers/ethernet/dec21x4x.sys"},
377
 {"DRIVERS/FORCEDETH.SYS", "../drivers/ethernet/forcedeth.sys"},
378
 {"DRIVERS/I8254X.SYS", "../drivers/ethernet/i8254x.sys"},
379
 {"DRIVERS/I8255X.SYS", "../drivers/ethernet/i8255x.sys"},
380
 {"DRIVERS/MTD80X.SYS", "../drivers/ethernet/mtd80x.sys"},
381
 {"DRIVERS/PCNET32.SYS", "../drivers/ethernet/pcnet32.sys"},
382
 {"DRIVERS/R6040.SYS", "../drivers/ethernet/R6040.sys"},
383
 {"DRIVERS/RHINE.SYS", "../drivers/ethernet/rhine.sys"},
384
 {"DRIVERS/RTL8029.SYS", "../drivers/ethernet/RTL8029.sys"},
385
 {"DRIVERS/RTL8139.SYS", "../drivers/ethernet/RTL8139.sys"},
386
 {"DRIVERS/RTL8169.SYS", "../drivers/ethernet/RTL8169.sys"},
387
 {"DRIVERS/SIS900.SYS", "../drivers/ethernet/sis900.sys"},
388
 {"DRIVERS/UHCI.SYS", "../drivers/usb/uhci.sys"},
389
 {"DRIVERS/OHCI.SYS", "../drivers/usb/ohci.sys"},
390
 {"DRIVERS/EHCI.SYS", "../drivers/usb/ehci.sys"},
391
 {"DRIVERS/USBHID.SYS", "../drivers/usb/usbhid/usbhid.sys"},
392
 {"DRIVERS/USBSTOR.SYS", "../drivers/usb/usbstor.sys"},
393
 {"DRIVERS/RDC.SYS", "../drivers/video/rdc.sys"},
394
 {"DRIVERS/COMMOUSE.SYS", "../drivers/mouse/commouse.sys"},
395
 {"DRIVERS/PS2MOUSE.SYS", "../drivers/mouse/ps2mouse4d/trunk/ps2mouse.sys"},
396
 {"DRIVERS/TMPDISK.SYS", "../drivers/disk/tmpdisk.sys"},
397
 {"DRIVERS/intel_hda.sys", "../drivers/audio/intel_hda/intel_hda.sys"},
398
 {"DRIVERS/SB16.SYS", "../drivers/audio/sb16/sb16.sys"},
399
 {"DRIVERS/SOUND.SYS", "../drivers/audio/sound.sys"},
400
 {"DRIVERS/INFINITY.SYS", "../drivers/audio/infinity/infinity.sys"},
401
 {"DRIVERS/INTELAC97.SYS", "../drivers/audio/intelac97.sys"},
402
 {"DRIVERS/EMU10K1X.SYS", "../drivers/audio/emu10k1x.sys"},
403
 {"DRIVERS/FM801.SYS", "../drivers/audio/fm801.sys"},
404
 {"DRIVERS/VT823X.SYS", "../drivers/audio/vt823x.sys"},
405
 {"DRIVERS/SIS.SYS", "../drivers/audio/sis.sys"},
406
})
407
tup.append_table(extra_files, {
408
 {"HD_Load/9x2klbr/", PROGS .. "/hd_load/9x2klbr/9x2klbr.exe"},
409
 {"HD_Load/MeOSLoad/", PROGS .. "/hd_load/meosload/MeOSload.com"},
410
 {"HD_Load/mtldr/", PROGS .. "/hd_load/mtldr/mtldr"},
411
 {"HD_Load/", PROGS .. "/hd_load/mtldr_install/mtldr_install.exe"},
412
 {"HD_Load/USB_Boot/", PROGS .. "/hd_load/usb_boot/BOOT_F32.BIN"},
413
 {"HD_Load/USB_Boot/", PROGS .. "/hd_load/usb_boot/MTLD_F32"},
414
 {"HD_Load/USB_Boot/", PROGS .. "/hd_load/usb_boot/inst.exe"},
415
 {"HD_Load/USB_Boot/", PROGS .. "/hd_load/usb_boot/setmbr.exe"},
416
 {"HD_Load/USB_boot_old/", PROGS .. "/hd_load/usb_boot_old/MeOSload.com"},
417
 {"HD_Load/USB_boot_old/", PROGS .. "/hd_load/usb_boot_old/enable.exe"},
5335 yogev_ezra 418
 {"kolibrios/games/codemaster/binary_master", PROGS .. "/games/codemaster/binary_master"},
419
 {"kolibrios/games/codemaster/hang_programmer", PROGS .. "/games/codemaster/hang_programmer"},
5379 serge 420
 {"kolibrios/games/codemaster/kolibri_puzzle", PROGS .. "/games/codemaster/kolibri_puzzle"},
5467 leency 421
 {"kolibrios/games/invaders", PROGS .. "/games/invaders/invaders"},
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"},
5467 leency 465
 {"MEDIA/PIXIE/PIXIE", PROGS .. "/cmm/pixie/pixie.com"},
5098 clevermous 466
 {"TMPDISK", PROGS .. "/cmm/tmpdisk/tmpdisk.com"},
5429 leency 467
 {"GAME_CENTER", PROGS .. "/cmm/software_widget/software_widget.com"},
468
 {"SYSTEM_PANEL", PROGS .. "/cmm/software_widget/software_widget.com"},
5098 clevermous 469
})
470
end -- tup.getconfig('NO_CMM') ~= 'full'
471
 
472
-- Programs that require MSVC to compile.
473
if tup.getconfig('NO_MSVC') ~= 'full' then
474
tup.append_table(img_files, {
475
 {"GRAPH", PROGS .. "/other/graph/graph"},
476
 {"TABLE", PROGS .. "/other/table/table"},
477
 {"MEDIA/AC97SND", PROGS .. "/media/ac97snd/ac97snd.bin"},
478
 {"GAMES/KOSILKA", PROGS .. "/games/kosilka/kosilka"},
5113 clevermous 479
 {"GAMES/RFORCES", PROGS .. "/games/rforces/trunk/rforces"},
5115 clevermous 480
 {"GAMES/XONIX", PROGS .. "/games/xonix/trunk/xonix"},
5098 clevermous 481
})
5110 clevermous 482
tup.append_table(extra_files, {
5109 clevermous 483
 {"kolibrios/games/fara/fara", PROGS .. "/games/fara/trunk/fara"},
5276 ZblCoder 484
 {"kolibrios/games/LaserTank/LaserTank", PROGS .. "/games/LaserTank/trunk/LaserTank"},
5109 clevermous 485
})
5098 clevermous 486
end -- tup.getconfig('NO_MSVC') ~= 'full'
487
 
488
-- Programs that require GCC to compile.
489
if tup.getconfig('NO_GCC') ~= 'full' then
490
tup.append_table(img_files, {
5109 clevermous 491
 {"3D/CUBELINE", PROGS .. "/demos/cubeline/trunk/cubeline"},
492
 {"3D/GEARS", PROGS .. "/demos/gears/trunk/gears"},
5123 clevermous 493
 {"GAMES/CHECKERS", PROGS .. "/games/checkers/trunk/checkers"},
5111 clevermous 494
 {"GAMES/REVERSI", PROGS .. "/games/reversi/trunk/reversi"},
5098 clevermous 495
 {"SHELL", PROGS .. "/system/shell/shell"},
496
})
497
tup.append_table(extra_files, {
498
 {"kolibrios/emul/e80/e80", PROGS .. "/emulator/e80/trunk/e80"},
5228 alpine 499
 {"kolibrios/games/heliothryx/", PROGS .. "/games/heliothryx/heliothryx"},
5233 raandoom 500
 {"kolibrios/games/2048/", PROGS .. "/games/2048/2048"},
5236 alpine 501
 {"kolibrios/games/marblematch3/", PROGS .. "/games/marblematch3/marblematch3"},
5336 yogev_ezra 502
 {"kolibrios/games/nsider/", PROGS .. "/games/nsider/nsider"},
5131 clevermous 503
 {"kolibrios/games/quake/", "common/games/quake/*"}, -- not really gcc, but no sense without sdlquake
504
 {"kolibrios/games/quake/", "../contrib/other/sdlquake-1.0.9/sdlquake"},
5098 clevermous 505
})
5327 igevorse 506
-- For russian build, add russian-only programs.
5329 igevorse 507
if build_type == "rus" then tup.append_table(extra_files, {
5327 igevorse 508
 {"kolibrios/games/21days/", PROGS .. "/games/21days/21days"},
5328 igevorse 509
}) end
5098 clevermous 510
end -- tup.getconfig('NO_GCC') ~= 'full'
511
 
512
-- Skins.
513
tup.include("../skins/skinlist.lua")
514
 
515
--[================================[ CODE ]================================]--
516
-- expand extra_files and similar
517
function expand_extra_files(files)
518
  local result = {}
519
  for i,v in ipairs(files) do
520
    if string.match(v[2], "%*")
521
    then
522
      local g = tup.glob(v[2])
523
      for j,x in ipairs(g) do
5132 clevermous 524
        table.insert(result, {v[1], x, group=v.group})
5098 clevermous 525
      end
526
    else
527
      if v.cp1251_from then
528
        tup.definerule{inputs = {v.cp1251_from}, command = 'iconv -f cp866 -t cp1251 "%f" > "%o"', outputs = {v[2]}}
529
      end
5132 clevermous 530
      table.insert(result, {v[1], v[2], group=v.group})
5098 clevermous 531
    end
532
  end
533
  return result
534
end
535
 
536
-- append skins to extra_files
537
for i,v in ipairs(skinlist) do
538
  table.insert(extra_files, {"Skins/", "../skins/" .. v})
539
end
540
 
541
-- prepare distr_extra_files and iso_extra_files: expand and append common part
542
extra_files = expand_extra_files(extra_files)
543
distr_extra_files = expand_extra_files(distr_extra_files)
544
iso_extra_files = expand_extra_files(iso_extra_files)
545
tup.append_table(distr_extra_files, extra_files)
546
tup.append_table(iso_extra_files, extra_files)
547
 
548
-- generate list of directories to be created inside kolibri.img
549
img_dirs = {}
550
input_deps = {}
551
for i,v in ipairs(img_files) do
552
  img_file = v[1]
553
  local_file = v[2]
554
 
555
  slash_pos = 0
556
  while true do
557
    slash_pos = string.find(img_file, '/', slash_pos + 1)
558
    if not slash_pos then break end
559
    table.insert(img_dirs, string.sub(img_file, 1, slash_pos - 1))
560
  end
561
 
562
  -- tup does not want to see hidden files as dependencies
563
  if not string.match(local_file, "/%.") then
5132 clevermous 564
    table.insert(input_deps, v.group or local_file)
5098 clevermous 565
  end
566
end
567
 
568
-- create empty 1.44M file
5118 clevermous 569
make_img_command = '^ MKIMG kolibri.img^ ' -- for tup: don't write full command to logs
570
make_img_command = make_img_command .. "dd if=/dev/zero of=kolibri.img count=2880 bs=512 2>&1"
5098 clevermous 571
-- format it as a standard 1.44M floppy
572
make_img_command = make_img_command .. " && mformat -f 1440 -i kolibri.img ::"
573
-- copy bootloader
574
if tup.getconfig("NO_FASM") ~= "full" then
575
bootloader = "../kernel/trunk/bootloader/boot_fat12.bin"
576
make_img_command = make_img_command .. " && dd if=" .. bootloader .. " of=kolibri.img count=1 bs=512 conv=notrunc 2>&1"
577
table.insert(input_deps, bootloader)
578
end
579
-- make folders
580
table.sort(img_dirs)
581
for i,v in ipairs(img_dirs) do
582
  if v ~= img_dirs[i-1] then
583
    make_img_command = make_img_command .. ' && mmd -i kolibri.img "::' .. v .. '"'
584
  end
585
end
586
-- copy files
587
for i,v in ipairs(img_files) do
588
  local_file = v[2]
589
  if v[1] == "KERNEL.MNT" and tup.getconfig("INSERT_REVISION_ID") ~= ""
590
  then
591
    -- for kernel.mnt, insert autobuild revision identifier
592
    -- from .revision to .kernel.mnt
593
    -- note that .revision and .kernel.mnt must begin with .
594
    -- to prevent tup from tracking them
595
    if build_type == "rus"
596
    then str='$(LANG=ru_RU.utf8 date -u +"[автосборка %d %b %Y %R, r$(cat .revision)]"|iconv -f utf8 -t cp866)'
597
    else str='$(date -u +"[auto-build %d %b %Y %R, r$(cat .revision)]")'
598
    end
599
    str = string.gsub(str, "%$", "\\$") -- escape $ as \$
600
    str = string.gsub(str, "%%", "%%%%") -- escape % as %%
601
    make_img_command = make_img_command .. " && cp " .. local_file .. " .kernel.mnt"
602
    make_img_command = make_img_command .. " && str=" .. str
603
    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'
604
    local_file = ".kernel.mnt"
605
  end
606
  make_img_command = make_img_command .. ' && mcopy -moi kolibri.img "' .. local_file .. '" "::' .. v[1] .. '"'
607
end
608
 
609
-- generate tup rule for kolibri.img
610
tup.definerule{inputs = input_deps, command = make_img_command, outputs = {"kolibri.img"}}
611
 
612
-- generate command and dependencies for mkisofs
613
input_deps = {"kolibri.img"}
614
iso_files_list = ""
615
for i,v in ipairs(iso_extra_files) do
616
  iso_files_list = iso_files_list .. ' "' .. v[1] .. '=' .. v[2] .. '"'
5132 clevermous 617
  table.insert(input_deps, v.group or v[2])
5098 clevermous 618
end
619
 
620
-- generate tup rule for kolibri.iso
621
if tup.getconfig("INSERT_REVISION_ID") ~= ""
622
then volume_id = "KolibriOS r`cat .revision`"
623
else volume_id = "KolibriOS"
624
end
625
tup.definerule{inputs = input_deps, command =
5118 clevermous 626
  '^ MKISOFS kolibri.iso^ ' .. -- for tup: don't write full command to logs
5098 clevermous 627
  'mkisofs -U -J -pad -b kolibri.img -c boot.catalog -hide-joliet boot.catalog -graft-points ' ..
628
  '-A "KolibriOS AutoBuilder" -p "CleverMouse" -publisher "KolibriOS Team" -V "' .. volume_id .. '" -sysid "KOLIBRI" ' ..
629
  '-iso-level 3 -o kolibri.iso kolibri.img' .. iso_files_list .. ' 2>&1',
630
  outputs = {"kolibri.iso"}}
631
 
632
-- generate command and dependencies for distribution kit
5104 clevermous 633
cp = 'cp "%f" "%o"'
5102 clevermous 634
tup.definerule{inputs = {"kolibri.img"}, command = cp, outputs = {"distribution_kit/kolibri.img"}}
5098 clevermous 635
for i,v in ipairs(distr_extra_files) do
5132 clevermous 636
  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 637
  if string.sub(v[1], -1) == "/"
5132 clevermous 638
  then tup.definerule{inputs = {v.group or v[2]}, command = cmd, outputs = {"distribution_kit/" .. v[1] .. tup.file(v[2])}}
639
  else tup.definerule{inputs = {v.group or v[2]}, command = cmd, outputs = {"distribution_kit/" .. v[1]}}
5098 clevermous 640
  end
641
end