Subversion Repositories Kolibri OS

Rev

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