Subversion Repositories Kolibri OS

Rev

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