Subversion Repositories Kolibri OS

Rev

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