Subversion Repositories Kolibri OS

Compare Revisions

Ignore whitespace Rev 5097 → Rev 5098

/data/Tupfile.lua
0,0 → 1,597
-- Do nothing unless explicitly requested in tup.config.
build_type = tup.getconfig('BUILD_TYPE')
if build_type == "" then
return
end
 
--[================================[ DATA ]================================]--
 
PROGS = "../programs"
 
-- Static data that doesn't need to be compiled
-- Files to be included in kolibri.img.
-- The first subitem of every item is name inside kolibri.img, the second is name of local file.
img_files = {
{"MACROS.INC", PROGS .. "/macros.inc"},
{"CONFIG.INC", PROGS .. "/config.inc"},
{"STRUCT.INC", PROGS .. "/struct.inc"},
{"DEVELOP/TE_ICON.PNG", PROGS .. "/other/t_edit/te_icon.png"},
{"DEVELOP/TL_NOD_16.PNG", PROGS .. "/other/t_edit/tl_nod_16.png"},
{"DEVELOP/TL_SYS_16.PNG", PROGS .. "/media/log_el/trunk/tl_sys_16.png"},
{"DEVELOP/T_EDIT.INI", PROGS .. "/other/t_edit/t_edit.ini"},
{"File Managers/Z_ICONS.PNG", PROGS .. "/fs/opendial/z_icons.png"},
{"File Managers/BUTTONS.BMP", PROGS .. "/fs/kfm/trunk/buttons.bmp"},
{"File Managers/ICONS.BMP", PROGS .. "/fs/kfm/trunk/icons.bmp"},
{"FONTS/LITT.CHR", PROGS .. "/demos/bgitest/trunk/FONTS/LITT.CHR"},
{"GAMES/SNAKE.INI", PROGS .. "/games/snake/trunk/snake.ini"},
{"MEDIA/KIV.INI", PROGS .. "/media/kiv/trunk/kiv.ini"},
{"NETWORK/WV_SKIN.PNG", PROGS .. "/cmm/browser/wv_skin.png"},
{"SETTINGS/AUTORUN.DAT", build_type .. "/settings/autorun.dat"},
{"DEFAULT.SKN", build_type .. "/default.skn"},
{"SETTINGS/ICON.INI", build_type .. "/settings/icon.ini"},
{"ICONSTRP.PNG", "common/iconstrp.png"},
{"INDEX.HTM", build_type .. "/index_htm"},
{"KERPACK", "common/kerpack"},
{"SETTINGS/KEYMAP.KEY", build_type .. "/settings/keymap.key"},
{"SETTINGS/LANG.INI", build_type .. "/settings/lang.ini"},
{"KUZKINA.MID", "common/kuzkina.mid"},
{"LANG.INC", build_type .. "/lang.inc"},
{"SETTINGS/MENU.DAT", build_type .. "/settings/menu.dat"},
{"SETTINGS/KOLIBRI.LBL", build_type .. "/settings/kolibri.lbl"},
{"SETTINGS/PANEL.INI", build_type .. "/settings/panel.ini"},
{"SETTINGS/DOCKY.INI", "common/settings/docky.ini"},
{"NOTIFY3.PNG", "common/notify3.png"},
{"SETTINGS/SETUP.DAT", build_type .. "/settings/setup.dat"},
{"VMODE", "common/vmode"},
{"3D/CUBELINE", "common/3d/cubeline"},
{"3D/GEARS", "common/3d/gears"},
{"3D/HOUSE.3DS", "common/3d/house.3ds"},
{"DEMOS/AK47.LIF", "common/demos/ak47.lif"},
{"DEMOS/LIFE2", "common/demos/life2"},
{"DEMOS/RELAY.LIF", "common/demos/relay.lif"},
{"DEMOS/RPENTO.LIF", "common/demos/rpento.lif"},
{"File Managers/EOLITE.INI", "common/File Managers/eolite.ini"},
{"File Managers/ICONS.INI", "common/File Managers/icons.ini"},
{"File Managers/KFM.INI", "common/File Managers/kfm.ini"},
{"GAMES/CHECKERS", build_type .. "/games/checkers"},
{"GAMES/MEGAMAZE", build_type .. "/games/megamaze"},
{"GAMES/REVERSI", build_type .. "/games/reversi"},
{"GAMES/RFORCES", build_type .. "/games/rforces"},
{"GAMES/XONIX", build_type .. "/games/xonix"},
{"LIB/PIXLIB.OBJ", "common/lib/pixlib.obj"},
{"LIB/ICONV.OBJ", "common/lib/iconv.obj"},
{"LIB/NETCODE.OBJ", "common/lib/netcode.obj"},
{"MEDIA/ImgF/ImgF", "common/media/ImgF/ImgF"},
{"MEDIA/ImgF/cEdg.obj", "common/media/ImgF/cEdg.obj"},
{"MEDIA/ImgF/dither.obj", "common/media/ImgF/dither.obj"},
{"MEDIA/ImgF/invSol.obj", "common/media/ImgF/invSol.obj"},
{"SETTINGS/NETWORK.INI", build_type .. "/settings/network.ini"},
{"NETWORK/FTPD.INI", "common/network/ftpd.ini"},
{"NETWORK/USERS.INI", "common/network/users.ini"},
}
-- For russian build, add russian-only files.
if build_type == "rus" then tup.append_table(img_files, {
{"File Managers/KFM_KEYS.TXT", PROGS .. "/fs/kfm/trunk/docs/russian/dos_kolibri/kfm_keys.txt"},
{"SETTINGS/.shell", PROGS .. "/system/shell/bin/rus/.shell"},
{"SETTINGS/MYKEY.INI", PROGS .. "/system/MyKey/trunk/mykey.ini"},
{"EXAMPLE.ASM", PROGS .. "/develop/examples/example/trunk/rus/example.asm"},
{"PIPETKA", build_type .. "/pipetka"},
{"File Managers/KFAR.INI", build_type .. "/File Managers/kfar.ini"},
{"GAMES/APPDATA.DAT", build_type .. "/games/appdata.dat"},
{"GAMES/ATAKA", build_type .. "/games/ataka"},
{"GAMES/BASEKURS.KLA", build_type .. "/games/basekurs.kla"},
{"GAMES/PADENIE", build_type .. "/games/padenie"},
{"GAMES/WHOWTBAM", build_type .. "/games/whowtbam"},
}) else tup.append_table(img_files, {
{"File Managers/KFM_KEYS.TXT", PROGS .. "/fs/kfm/trunk/docs/english/kfm_keys.txt"},
{"GAMES/SKIN.RAW", PROGS .. "/games/soko/trunk/SKIN.RAW"},
{"GAMES/SOKO-4.LEV", PROGS .. "/games/soko/trunk/SOKO-4.LEV"},
{"GAMES/SOKO-5.LEV", PROGS .. "/games/soko/trunk/SOKO-5.LEV"},
{"GAMES/SOKO-6.LEV", PROGS .. "/games/soko/trunk/SOKO-6.LEV"},
{"GAMES/SOKO-7.LEV", PROGS .. "/games/soko/trunk/SOKO-7.LEV"},
{"GAMES/SOKO-8.LEV", PROGS .. "/games/soko/trunk/SOKO-8.LEV"},
{"GAMES/SOKO-9.LEV", PROGS .. "/games/soko/trunk/SOKO-9.LEV"},
{"SETTINGS/.shell", PROGS .. "/system/shell/bin/eng/.shell"},
{"EXAMPLE.ASM", PROGS .. "/develop/examples/example/trunk/example.asm"},
{"File Managers/KFAR.INI", "common/File Managers/kfar.ini"},
}) end
if build_type == "it" then tup.append_table(img_files, {
{"SETTINGS/MYKEY.INI", PROGS .. "/system/MyKey/trunk/mykey_it.ini"},
}) else tup.append_table(img_files, {
{"SETTINGS/MYKEY.INI", PROGS .. "/system/MyKey/trunk/mykey.ini"},
}) end
 
--[[
Files to be included in kolibri.iso and distribution kit outside of kolibri.img.
The first subitem of every item is name relative to the root of ISO or distribution kit,
the second is name of local file.
If the first subitem ends in /, the last component of local file name is appended.
The last component of the second subitem may contain '*'; if so, it will be expanded
according to usual rules, but without matching directories.
--]]
extra_files = {
{"/", build_type .. "/distr_data/autorun.inf"},
{"/", build_type .. "/distr_data/KolibriOS_icon.ico"},
{"/", build_type .. "/settings/kolibri.lbl"},
{"Skins/", "../skins/authors.txt"},
{"Docs/stack.txt", build_type .. "/docs/STACK.TXT"},
{"HD_Load/9x2klbr/", "common/HD_load/9x2klbr/LDKLBR.VXD"},
{"HD_Load/MeOSLoad/", PROGS .. "/hd_load/meosload/AUTOEXEC.BAT"},
{"HD_Load/MeOSLoad/", PROGS .. "/hd_load/meosload/CONFIG.SYS"},
{"HD_Load/MeOSLoad/", PROGS .. "/hd_load/meosload/L_readme.txt"},
{"HD_Load/MeOSLoad/", PROGS .. "/hd_load/meosload/L_readme_Win.txt"},
{"HD_Load/mtldr/", PROGS .. "/hd_load/mtldr/vista_install.bat"},
{"HD_Load/mtldr/", PROGS .. "/hd_load/mtldr/vista_remove.bat"},
{"HD_Load/", "common/HD_load/memdisk"},
{"HD_Load/USB_boot_old/", PROGS .. "/hd_load/usb_boot_old/usb_boot.rtf"},
{"HD_Load/USB_boot_old/", PROGS .. "/hd_load/usb_boot_old/usb_boot_866.txt"},
{"HD_Load/USB_boot_old/", PROGS .. "/hd_load/usb_boot_old/usb_boot_1251.txt"},
{"games/pig/", "common/games/pig/*"},
{"games/soko/soko", build_type .. "/games/soko"},
{"games/soko/", "common/games/soko/*"},
{"kolibrios/emul/dosbox/", "common/emul/DosBox/*"},
{"kolibrios/emul/fceu/", "common/emul/fceu/*"},
{"kolibrios/emul/", "common/emul/gameboy"},
{"kolibrios/emul/", "common/emul/scummvm"},
{"kolibrios/emul/", "common/emul/zsnes"},
{"kolibrios/games/doom/", "common/games/doom/*"},
{"kolibrios/games/fara/fara", build_type .. "/games/fara"},
{"kolibrios/games/fara/fara.gfx", "common/games/fara.gfx"},
{"kolibrios/games/jumpbump/", "common/games/jumpbump/*"},
{"kolibrios/games/quake/", "common/games/quake/*"},
{"kolibrios/games/lrl/", "common/games/lrl/*"},
{"kolibrios/lib/avcodec-55.dll", "common/lib/avcodec-55.dll"},
{"kolibrios/lib/avdevice-55.dll", "common/lib/avdevice-55.dll"},
{"kolibrios/lib/avformat-55.dll", "common/lib/avformat-55.dll"},
{"kolibrios/lib/avutil-52.dll", "common/lib/avutil-52.dll"},
{"kolibrios/lib/freetype.dll", "common/lib/freetype.dll"},
{"kolibrios/lib/libc.dll", "common/lib/libc.dll"},
{"kolibrios/lib/pixlib.dll", "common/lib/pixlib.dll"},
{"kolibrios/lib/swresample-0.dll", "common/lib/swresample-0.dll"},
{"kolibrios/lib/swscale-2.dll", "common/lib/swscale-2.dll"},
{"kolibrios/lib/zlib.dll", "common/lib/zlib.dll"},
{"kolibrios/media/fplay-full", "common/media/fplay-full"},
{"kolibrios/media/zsea/zsea.ini", PROGS .. "/media/zsea/zSea.ini"},
{"kolibrios/media/zsea/buttons/buttons.png", PROGS .. "/media/zsea/buttons.png"},
}
if build_type == "rus" then tup.append_table(extra_files, {
{"Docs/cp866/config.txt", build_type .. "/docs/CONFIG.TXT"},
{"Docs/cp866/gnu.txt", build_type .. "/docs/GNU.TXT"},
{"Docs/cp866/history.txt", build_type .. "/docs/HISTORY.TXT"},
{"Docs/cp866/hot_keys.txt", build_type .. "/docs/HOT_KEYS.TXT"},
{"Docs/cp866/install.txt", build_type .. "/docs/INSTALL.TXT"},
{"Docs/cp866/readme.txt", build_type .. "/docs/README.TXT"},
{"Docs/cp866/sysfuncr.txt", PROGS .. "/system/docpack/trunk/SYSFUNCR.TXT"},
{"Docs/cp1251/config.txt", build_type .. "/docs/CONFIG.WIN.TXT", cp1251_from = build_type .. "/docs/CONFIG.TXT"},
{"Docs/cp1251/gnu.txt", build_type .. "/docs/GNU.WIN.TXT", cp1251_from = build_type .. "/docs/GNU.TXT"},
{"Docs/cp1251/history.txt", build_type .. "/docs/HISTORY.WIN.TXT", cp1251_from = build_type .. "/docs/HISTORY.TXT"},
{"Docs/cp1251/hot_keys.txt", build_type .. "/docs/HOT_KEYS.WIN.TXT", cp1251_from = build_type .. "/docs/HOT_KEYS.TXT"},
{"Docs/cp1251/install.txt", build_type .. "/docs/INSTALL.WIN.TXT", cp1251_from = build_type .. "/docs/INSTALL.TXT"},
{"Docs/cp1251/readme.txt", build_type .. "/docs/README.WIN.TXT", cp1251_from = build_type .. "/docs/README.TXT"},
{"Docs/cp1251/sysfuncr.txt", build_type .. "/docs/SYSFUNCR.WIN.TXT", cp1251_from = PROGS .. "/system/docpack/trunk/SYSFUNCR.TXT"},
{"HD_Load/9x2klbr/", PROGS .. "/hd_load/9x2klbr/readme_dos.txt"},
{"HD_Load/9x2klbr/", PROGS .. "/hd_load/9x2klbr/readme_win.txt"},
{"HD_Load/mtldr/", PROGS .. "/hd_load/mtldr/install.txt"},
{"HD_Load/USB_Boot/", PROGS .. "/hd_load/usb_boot/readme.txt"},
{"kolibrios/media/zsea/zsea_keys.txt", PROGS .. "/media/zsea/Docs/zSea_keys_rus.txt"},
}) else tup.append_table(extra_files, {
{"Docs/config.txt", build_type .. "/docs/CONFIG.TXT"},
{"Docs/copying.txt", build_type .. "/docs/COPYING.TXT"},
{"Docs/hot_keys.txt", build_type .. "/docs/HOT_KEYS.TXT"},
{"Docs/install.txt", build_type .. "/docs/INSTALL.TXT"},
{"Docs/readme.txt", build_type .. "/docs/README.TXT"},
{"Docs/sysfuncs.txt", PROGS .. "/system/docpack/trunk/SYSFUNCS.TXT"},
{"HD_Load/9x2klbr/", PROGS .. "/hd_load/9x2klbr/readme.txt"},
{"HD_Load/mtldr/install.txt", PROGS .. "/hd_load/mtldr/install_eng.txt"},
{"HD_Load/USB_Boot/readme.txt", PROGS .. "/hd_load/usb_boot/readme_eng.txt"},
{"kolibrios/media/zsea/zsea_keys.txt", PROGS .. "/media/zsea/Docs/zSea_keys_eng.txt"},
}) end
--[[
Files to be included in distribution kit outside of kolibri.img, but not kolibri.iso.
Same syntax as extra_files.
]]--
if build_type == "rus" then
distr_extra_files = {
{"/readme_dos.txt", build_type .. "/distr_data/readme_dos_distr.txt"},
{"/readme.txt", build_type .. "/distr_data/readme_distr.txt", cp1251_from = build_type .. "/distr_data/readme_dos_distr.txt"},
}
else
distr_extra_files = {
{"/readme.txt", build_type .. "/distr_data/readme_distr.txt"},
}
end
--[[
Files to be included in kolibri.iso outside of kolibri.img, but not distribution kit.
Same syntax as extra_files.
]]--
if build_type == "rus" then
iso_extra_files = {
{"/readme_dos.txt", build_type .. "/distr_data/readme_dos.txt"},
{"/readme.txt", build_type .. "/distr_data/readme.txt", cp1251_from = build_type .. "/distr_data/readme_dos.txt"},
}
else
iso_extra_files = {
{"/readme.txt", build_type .. "/distr_data/readme.txt"},
}
end
 
-- Programs that require FASM to compile.
if tup.getconfig('NO_FASM') ~= 'full' then
tup.append_table(img_files, {
{"KERNEL.MNT", "../kernel/trunk/kernel.mnt"},
{"@MENU", PROGS .. "/system/menu/trunk/menu"},
{"@PANEL", PROGS .. "/system/panel/trunk/@PANEL"},
{"@DOCKY", PROGS .. "/system/docky/trunk/docky"},
{"@NOTIFY", PROGS .. "/system/notify3/notify"},
{"@SS", PROGS .. "/system/ss/trunk/@ss"},
{"REFRSCRN", PROGS .. "/system/refrscrn/refrscrn"},
{"ASCIIVJU", PROGS .. "/develop/asciivju/trunk/asciivju"},
{"CALC", PROGS .. "/other/calc/trunk/calc"},
{"CALENDAR", PROGS .. "/system/calendar/trunk/calendar"},
{"COLRDIAL", PROGS .. "/system/colrdial/color_dialog"},
{"LOADDRV", PROGS .. "/system/loaddrv/loaddrv"},
{"CPU", PROGS .. "/system/cpu/trunk/cpu"},
{"CPUID", PROGS .. "/system/cpuid/trunk/CPUID"},
{"DESKTOP", PROGS .. "/system/desktop/trunk/desktop"},
{"DISPTEST", PROGS .. "/system/disptest/trunk/disptest"},
{"DOCPACK", PROGS .. "/system/docpack/trunk/docpack"},
{"END", PROGS .. "/system/end/light/end"},
{"FSPEED", PROGS .. "/fs/fspeed/fspeed"},
{"GMON", PROGS .. "/system/gmon/gmon"},
{"HDD_INFO", PROGS .. "/system/hdd_info/trunk/hdd_info"},
{"@ICON", PROGS .. "/system/icon_new/@icon"},
{"CROPFLAT", PROGS .. "/system/cropflat/cropflat"},
{"KBD", PROGS .. "/system/kbd/trunk/kbd"},
{"KPACK", PROGS .. "/other/kpack/trunk/kpack"},
{"LAUNCHER", PROGS .. "/system/launcher/trunk/launcher"},
{"MAGNIFY", PROGS .. "/demos/magnify/trunk/magnify"},
{"MGB", PROGS .. "/system/mgb/trunk/mgb"},
{"MOUSEMUL", PROGS .. "/system/mousemul/trunk/mousemul"},
{"MADMOUSE", PROGS .. "/other/madmouse/madmouse"},
{"MYKEY", PROGS .. "/system/MyKey/trunk/MyKey"},
{"PCIDEV", PROGS .. "/system/pcidev/trunk/PCIDEV"},
{"RDSAVE", PROGS .. "/system/rdsave/trunk/rdsave"},
{"RTFREAD", PROGS .. "/other/rtfread/trunk/rtfread"},
{"RUN", PROGS .. "/system/run/trunk/run"},
{"SEARCHAP", PROGS .. "/system/searchap/searchap"},
{"SCRSHOOT", PROGS .. "/media/scrshoot/scrshoot"},
{"SETUP", PROGS .. "/system/setup/trunk/setup"},
{"TEST", PROGS .. "/system/test/trunk/test"},
{"TINYPAD", PROGS .. "/develop/tinypad/trunk/tinypad"},
{"ZKEY", PROGS .. "/system/zkey/trunk/ZKEY"},
{"TERMINAL", PROGS .. "/system/terminal/terminal"},
{"3D/3DSHEART", PROGS .. "/demos/3dsheart/trunk/3dsheart"},
{"3D/3DWAV", PROGS .. "/demos/3dwav/trunk/3dwav"},
{"3D/CROWNSCR", PROGS .. "/demos/crownscr/trunk/crownscr"},
{"3D/FREE3D04", PROGS .. "/demos/free3d04/trunk/free3d04"},
{"3D/VIEW3DS", PROGS .. "/demos/3DS/VIEW3DS"},
{"DEMOS/BCDCLK", PROGS .. "/demos/bcdclk/trunk/bcdclk"},
{"DEMOS/CIRCLE", PROGS .. "/develop/examples/circle/trunk/circle"},
{"DEMOS/COLORREF", PROGS .. "/demos/colorref/trunk/colorref"},
{"DEMOS/CSLIDE", PROGS .. "/demos/cslide/trunk/cslide"},
{"DEMOS/EYES", PROGS .. "/demos/eyes/trunk/eyes"},
{"DEMOS/FIREWORK", PROGS .. "/demos/firework/trunk/firework"},
{"DEMOS/MOVBACK", PROGS .. "/demos/movback/trunk/movback"},
{"DEMOS/PLASMA", PROGS .. "/demos/plasma/trunk/plasma"},
{"DEMOS/TINYFRAC", PROGS .. "/demos/tinyfrac/trunk/tinyfrac"},
{"DEMOS/TRANTEST", PROGS .. "/demos/trantest/trunk/trantest"},
{"DEMOS/TUBE", PROGS .. "/demos/tube/trunk/tube"},
{"DEMOS/UNVWATER", PROGS .. "/demos/unvwater/trunk/unvwater"},
{"DEMOS/USE_MB", PROGS .. "/demos/use_mb/use_mb"},
{"DEMOS/WEB", PROGS .. "/demos/web/trunk/web"},
{"DEVELOP/BOARD", PROGS .. "/system/board/trunk/board"},
{"DEVELOP/cObj", PROGS .. "/develop/cObj/trunk/cObj"},
{"DEVELOP/FASM", PROGS .. "/develop/fasm/trunk/fasm"},
{"DEVELOP/H2D2B", PROGS .. "/develop/h2d2b/trunk/h2d2b"},
{"DEVELOP/HEED", PROGS .. "/develop/heed/trunk/heed"},
{"DEVELOP/KEYASCII", PROGS .. "/develop/keyascii/trunk/keyascii"},
{"DEVELOP/MTDBG", PROGS .. "/develop/mtdbg/mtdbg"},
{"DEVELOP/SCANCODE", PROGS .. "/develop/scancode/trunk/scancode"},
{"DEVELOP/T_EDIT", PROGS .. "/other/t_edit/t_edit"},
{"DEVELOP/test_gets", PROGS .. "/develop/libraries/console/examples/test_gets"},
{"DEVELOP/THREAD", PROGS .. "/develop/examples/thread/trunk/thread"},
{"DEVELOP/INFO/ASM.SYN", PROGS .. "/other/t_edit/info/asm.syn"},
{"DEVELOP/INFO/CPP_KOL_CLA.SYN", PROGS .. "/other/t_edit/info/cpp_kol_cla.syn"},
{"DEVELOP/INFO/CPP_KOL_DAR.SYN", PROGS .. "/other/t_edit/info/cpp_kol_dar.syn"},
{"DEVELOP/INFO/CPP_KOL_DEF.SYN", PROGS .. "/other/t_edit/info/cpp_kol_def.syn"},
{"DEVELOP/INFO/DEFAULT.SYN", PROGS .. "/other/t_edit/info/default.syn"},
{"DEVELOP/INFO/HTML.SYN", PROGS .. "/other/t_edit/info/html.syn"},
{"DEVELOP/INFO/INI_FILES.SYN", PROGS .. "/other/t_edit/info/ini_files.syn"},
{"DEVELOP/INFO/WIN_CONST.SYN", PROGS .. "/other/t_edit/info/win_const.syn"},
{"File Managers/KFAR", PROGS .. "/fs/kfar/trunk/kfar"},
{"File Managers/KFM", PROGS .. "/fs/kfm/trunk/kfm"},
{"File Managers/OPENDIAL", PROGS .. "/fs/opendial/opendial"},
{"GAMES/15", PROGS .. "/games/15/trunk/15"},
{"GAMES/ARCANII", PROGS .. "/games/arcanii/trunk/arcanii"},
{"GAMES/FREECELL", PROGS .. "/games/freecell/freecell"},
{"GAMES/GOMOKU", PROGS .. "/games/gomoku/trunk/gomoku"},
{"GAMES/INVADERS", PROGS .. "/games/invaders/invaders"},
{"GAMES/KLAVISHA", PROGS .. "/games/klavisha/trunk/klavisha"},
{"GAMES/LINES", PROGS .. "/games/lines/lines"},
{"GAMES/MBLOCKS", PROGS .. "/games/mblocks/trunk/mblocks"},
{"GAMES/MSQUARE", PROGS .. "/games/MSquare/trunk/MSquare"},
{"GAMES/PHENIX", PROGS .. "/games/phenix/trunk/phenix"},
{"GAMES/PIPES", PROGS .. "/games/pipes/pipes"},
{"GAMES/PONG", PROGS .. "/games/pong/trunk/pong"},
{"GAMES/PONG3", PROGS .. "/games/pong3/trunk/pong3"},
{"GAMES/RSQUARE", PROGS .. "/games/rsquare/trunk/rsquare"},
{"GAMES/SNAKE", PROGS .. "/games/snake/trunk/snake"},
{"GAMES/SQ_GAME", PROGS .. "/games/sq_game/trunk/SQ_GAME"},
{"GAMES/SUDOKU", PROGS .. "/games/sudoku/trunk/sudoku"},
{"GAMES/SW", PROGS .. "/games/sw/trunk/sw"},
{"GAMES/TANKS", PROGS .. "/games/tanks/trunk/tanks"},
{"GAMES/TETRIS", PROGS .. "/games/tetris/trunk/tetris"},
{"LIB/ARCHIVER.OBJ", PROGS .. "/fs/kfar/trunk/kfar_arc/kfar_arc.obj"},
{"LIB/BOX_LIB.OBJ", PROGS .. "/develop/libraries/box_lib/trunk/box_lib.obj"},
{"LIB/BUF2D.OBJ", PROGS .. "/develop/libraries/buf2d/trunk/buf2d.obj"},
{"LIB/CONSOLE.OBJ", PROGS .. "/develop/libraries/console/console.obj"},
{"LIB/LIBGFX.OBJ", PROGS .. "/develop/libraries/libs-dev/libgfx/libgfx.obj"},
{"LIB/LIBIMG.OBJ", PROGS .. "/develop/libraries/libs-dev/libimg/libimg.obj"},
{"LIB/LIBINI.OBJ", PROGS .. "/develop/libraries/libs-dev/libini/libini.obj"},
{"LIB/LIBIO.OBJ", PROGS .. "/develop/libraries/libs-dev/libio/libio.obj"},
{"LIB/MSGBOX.OBJ", PROGS .. "/develop/libraries/msgbox/msgbox.obj"},
{"LIB/NETWORK.OBJ", PROGS .. "/develop/libraries/network/network.obj"},
{"LIB/SORT.OBJ", PROGS .. "/develop/libraries/sorter/sort.obj"},
{"LIB/HTTP.OBJ", PROGS .. "/develop/libraries/http/http.obj"},
{"LIB/PROC_LIB.OBJ", PROGS .. "/develop/libraries/proc_lib/trunk/proc_lib.obj"},
{"LIB/CNV_PNG.OBJ", PROGS .. "/media/zsea/plugins/png/cnv_png.obj"},
{"MEDIA/ANIMAGE", PROGS .. "/media/animage/trunk/animage"},
{"MEDIA/KIV", PROGS .. "/media/kiv/trunk/kiv"},
{"MEDIA/LISTPLAY", PROGS .. "/media/listplay/trunk/listplay"},
{"MEDIA/MIDAMP", PROGS .. "/media/midamp/trunk/midamp"},
{"MEDIA/PALITRA", PROGS .. "/media/palitra/trunk/palitra"},
{"MEDIA/STARTMUS", PROGS .. "/media/startmus/trunk/STARTMUS"},
{"NETWORK/PING", PROGS .. "/network/icmp/ping"},
{"NETWORK/NETCFG", PROGS .. "/network/netcfg/netcfg"},
{"NETWORK/NETSTAT", PROGS .. "/network/netstat/netstat"},
{"NETWORK/NSLOOKUP", PROGS .. "/network/nslookup/nslookup"},
{"NETWORK/PASTA", PROGS .. "/network/pasta/pasta"},
{"NETWORK/SYNERGYC", PROGS .. "/network/synergyc/synergyc"},
{"NETWORK/TCPSERV", PROGS .. "/network/tcpserv/tcpserv"},
{"NETWORK/TELNET", PROGS .. "/network/telnet/telnet"},
{"NETWORK/ZEROCONF", PROGS .. "/network/zeroconf/zeroconf"},
{"NETWORK/FTPC", PROGS .. "/network/ftpc/ftpc"},
{"NETWORK/FTPD", PROGS .. "/network/ftpd/ftpd"},
{"NETWORK/TFTPC", PROGS .. "/network/tftpc/tftpc"},
{"NETWORK/IRCC", PROGS .. "/network/ircc/ircc"},
{"NETWORK/DOWNLOADER", PROGS .. "/network/downloader/downloader"},
{"DRIVERS/VIDINTEL.SYS", "../drivers/video/vidintel.sys"},
{"DRIVERS/3C59X.SYS", "../drivers/ethernet/3c59x.sys"},
{"DRIVERS/DEC21X4X.SYS", "../drivers/ethernet/dec21x4x.sys"},
{"DRIVERS/FORCEDETH.SYS", "../drivers/ethernet/forcedeth.sys"},
{"DRIVERS/I8254X.SYS", "../drivers/ethernet/i8254x.sys"},
{"DRIVERS/I8255X.SYS", "../drivers/ethernet/i8255x.sys"},
{"DRIVERS/MTD80X.SYS", "../drivers/ethernet/mtd80x.sys"},
{"DRIVERS/PCNET32.SYS", "../drivers/ethernet/pcnet32.sys"},
{"DRIVERS/R6040.SYS", "../drivers/ethernet/R6040.sys"},
{"DRIVERS/RHINE.SYS", "../drivers/ethernet/rhine.sys"},
{"DRIVERS/RTL8029.SYS", "../drivers/ethernet/RTL8029.sys"},
{"DRIVERS/RTL8139.SYS", "../drivers/ethernet/RTL8139.sys"},
{"DRIVERS/RTL8169.SYS", "../drivers/ethernet/RTL8169.sys"},
{"DRIVERS/SIS900.SYS", "../drivers/ethernet/sis900.sys"},
{"DRIVERS/UHCI.SYS", "../drivers/usb/uhci.sys"},
{"DRIVERS/OHCI.SYS", "../drivers/usb/ohci.sys"},
{"DRIVERS/EHCI.SYS", "../drivers/usb/ehci.sys"},
{"DRIVERS/USBHID.SYS", "../drivers/usb/usbhid/usbhid.sys"},
{"DRIVERS/USBSTOR.SYS", "../drivers/usb/usbstor.sys"},
{"DRIVERS/RDC.SYS", "../drivers/video/rdc.sys"},
{"DRIVERS/COMMOUSE.SYS", "../drivers/mouse/commouse.sys"},
{"DRIVERS/PS2MOUSE.SYS", "../drivers/mouse/ps2mouse4d/trunk/ps2mouse.sys"},
{"DRIVERS/TMPDISK.SYS", "../drivers/disk/tmpdisk.sys"},
{"DRIVERS/intel_hda.sys", "../drivers/audio/intel_hda/intel_hda.sys"},
{"DRIVERS/SB16.SYS", "../drivers/audio/sb16/sb16.sys"},
{"DRIVERS/SOUND.SYS", "../drivers/audio/sound.sys"},
{"DRIVERS/INFINITY.SYS", "../drivers/audio/infinity/infinity.sys"},
{"DRIVERS/INTELAC97.SYS", "../drivers/audio/intelac97.sys"},
{"DRIVERS/EMU10K1X.SYS", "../drivers/audio/emu10k1x.sys"},
{"DRIVERS/FM801.SYS", "../drivers/audio/fm801.sys"},
{"DRIVERS/VT823X.SYS", "../drivers/audio/vt823x.sys"},
{"DRIVERS/SIS.SYS", "../drivers/audio/sis.sys"},
})
tup.append_table(extra_files, {
{"HD_Load/9x2klbr/", PROGS .. "/hd_load/9x2klbr/9x2klbr.exe"},
{"HD_Load/MeOSLoad/", PROGS .. "/hd_load/meosload/MeOSload.com"},
{"HD_Load/mtldr/", PROGS .. "/hd_load/mtldr/mtldr"},
{"HD_Load/", PROGS .. "/hd_load/mtldr_install/mtldr_install.exe"},
{"HD_Load/USB_Boot/", PROGS .. "/hd_load/usb_boot/BOOT_F32.BIN"},
{"HD_Load/USB_Boot/", PROGS .. "/hd_load/usb_boot/MTLD_F32"},
{"HD_Load/USB_Boot/", PROGS .. "/hd_load/usb_boot/inst.exe"},
{"HD_Load/USB_Boot/", PROGS .. "/hd_load/usb_boot/setmbr.exe"},
{"HD_Load/USB_boot_old/", PROGS .. "/hd_load/usb_boot_old/MeOSload.com"},
{"HD_Load/USB_boot_old/", PROGS .. "/hd_load/usb_boot_old/enable.exe"},
{"kolibrios/media/zsea/zsea", PROGS .. "/media/zsea/zSea"},
{"kolibrios/media/zsea/plugins/cnv_bmp.obj", PROGS .. "/media/zsea/plugins/bmp/cnv_bmp.obj"},
{"kolibrios/media/zsea/plugins/cnv_gif.obj", PROGS .. "/media/zsea/plugins/gif/cnv_gif.obj"},
{"kolibrios/media/zsea/plugins/cnv_jpeg.obj", PROGS .. "/media/zsea/plugins/jpeg/cnv_jpeg.obj"},
{"kolibrios/media/zsea/plugins/convert.obj", PROGS .. "/media/zsea/plugins/convert/convert.obj"},
{"kolibrios/media/zsea/plugins/rotate.obj", PROGS .. "/media/zsea/plugins/rotate/rotate.obj"},
{"kolibrios/media/zsea/plugins/scaling.obj", PROGS .. "/media/zsea/plugins/scaling/scaling.obj"},
})
-- For russian build, add russian-only programs.
if build_type == "rus" then tup.append_table(img_files, {
{"PERIOD", PROGS .. "/other/period/trunk/period"},
{"DEVELOP/TESTCON2", PROGS .. "/develop/libraries/console/examples/testcon2_rus"},
}) else tup.append_table(img_files, {
{"DEVELOP/TESTCON2", PROGS .. "/develop/libraries/console/examples/testcon2_eng"},
{"GAMES/SOKO", PROGS .. "/games/soko/trunk/SOKO"},
}) end
 
end -- tup.getconfig('NO_FASM') ~= 'full'
 
-- Programs that require NASM to compile.
if tup.getconfig('NO_NASM') ~= 'full' then
tup.append_table(img_files, {
{"DEMOS/ACLOCK", PROGS .. "/demos/aclock/trunk/aclock"},
{"DEMOS/TIMER", PROGS .. "/other/Timer/timer"},
{"GAMES/C4", PROGS .. "/games/c4/trunk/c4"},
{"TINFO", PROGS .. "/system/tinfo/tinfo"},
{"DEVELOP/MSTATE", PROGS .. "/develop/mstate/mstate"},
})
end -- tup.getconfig('NO_NASM') ~= 'full'
 
-- Programs that require C-- to compile.
if tup.getconfig('NO_CMM') ~= 'full' then
tup.append_table(img_files, {
{"File Managers/EOLITE", PROGS .. "/cmm/eolite/Eolite.com"},
{"GAMES/CLICKS", PROGS .. "/games/clicks/trunk/clicks.com"},
{"GAMES/FindNumbers", PROGS .. "/games/FindNumbers/trunk/FindNumbers"},
{"GAMES/flood-it", PROGS .. "/games/flood-it/trunk/flood-it.com"},
{"GAMES/MINE", PROGS .. "/games/mine/trunk/mine"},
{"NETWORK/WebView", PROGS .. "/cmm/browser/WebView.com"},
{"TMPDISK", PROGS .. "/cmm/tmpdisk/tmpdisk.com"},
})
end -- tup.getconfig('NO_CMM') ~= 'full'
 
-- Programs that require MSVC to compile.
if tup.getconfig('NO_MSVC') ~= 'full' then
tup.append_table(img_files, {
{"GRAPH", PROGS .. "/other/graph/graph"},
{"TABLE", PROGS .. "/other/table/table"},
{"MEDIA/AC97SND", PROGS .. "/media/ac97snd/ac97snd.bin"},
{"GAMES/KOSILKA", PROGS .. "/games/kosilka/kosilka"},
})
end -- tup.getconfig('NO_MSVC') ~= 'full'
 
-- Programs that require GCC to compile.
if tup.getconfig('NO_GCC') ~= 'full' then
tup.append_table(img_files, {
{"SHELL", PROGS .. "/system/shell/shell"},
})
tup.append_table(extra_files, {
{"kolibrios/emul/e80/e80", PROGS .. "/emulator/e80/trunk/e80"},
})
end -- tup.getconfig('NO_GCC') ~= 'full'
 
-- Skins.
tup.include("../skins/skinlist.lua")
 
--[================================[ CODE ]================================]--
-- expand extra_files and similar
function expand_extra_files(files)
local result = {}
for i,v in ipairs(files) do
if string.match(v[2], "%*")
then
local g = tup.glob(v[2])
for j,x in ipairs(g) do
table.insert(result, {v[1], x})
end
else
if v.cp1251_from then
tup.definerule{inputs = {v.cp1251_from}, command = 'iconv -f cp866 -t cp1251 "%f" > "%o"', outputs = {v[2]}}
end
table.insert(result, {v[1], v[2]})
end
end
return result
end
 
-- append skins to extra_files
for i,v in ipairs(skinlist) do
table.insert(extra_files, {"Skins/", "../skins/" .. v})
end
 
-- prepare distr_extra_files and iso_extra_files: expand and append common part
extra_files = expand_extra_files(extra_files)
distr_extra_files = expand_extra_files(distr_extra_files)
iso_extra_files = expand_extra_files(iso_extra_files)
tup.append_table(distr_extra_files, extra_files)
tup.append_table(iso_extra_files, extra_files)
 
-- generate list of directories to be created inside kolibri.img
img_dirs = {}
input_deps = {}
for i,v in ipairs(img_files) do
img_file = v[1]
local_file = v[2]
 
slash_pos = 0
while true do
slash_pos = string.find(img_file, '/', slash_pos + 1)
if not slash_pos then break end
table.insert(img_dirs, string.sub(img_file, 1, slash_pos - 1))
end
 
-- tup does not want to see hidden files as dependencies
if not string.match(local_file, "/%.") then
table.insert(input_deps, local_file)
end
end
 
-- create empty 1.44M file
make_img_command = "dd if=/dev/zero of=kolibri.img count=2880 bs=512 2>&1"
-- format it as a standard 1.44M floppy
make_img_command = make_img_command .. " && mformat -f 1440 -i kolibri.img ::"
-- copy bootloader
if tup.getconfig("NO_FASM") ~= "full" then
bootloader = "../kernel/trunk/bootloader/boot_fat12.bin"
make_img_command = make_img_command .. " && dd if=" .. bootloader .. " of=kolibri.img count=1 bs=512 conv=notrunc 2>&1"
table.insert(input_deps, bootloader)
end
-- make folders
table.sort(img_dirs)
for i,v in ipairs(img_dirs) do
if v ~= img_dirs[i-1] then
make_img_command = make_img_command .. ' && mmd -i kolibri.img "::' .. v .. '"'
end
end
-- copy files
for i,v in ipairs(img_files) do
local_file = v[2]
if v[1] == "KERNEL.MNT" and tup.getconfig("INSERT_REVISION_ID") ~= ""
then
-- for kernel.mnt, insert autobuild revision identifier
-- from .revision to .kernel.mnt
-- note that .revision and .kernel.mnt must begin with .
-- to prevent tup from tracking them
if build_type == "rus"
then str='$(LANG=ru_RU.utf8 date -u +"[автосборка %d %b %Y %R, r$(cat .revision)]"|iconv -f utf8 -t cp866)'
else str='$(date -u +"[auto-build %d %b %Y %R, r$(cat .revision)]")'
end
str = string.gsub(str, "%$", "\\$") -- escape $ as \$
str = string.gsub(str, "%%", "%%%%") -- escape % as %%
make_img_command = make_img_command .. " && cp " .. local_file .. " .kernel.mnt"
make_img_command = make_img_command .. " && str=" .. str
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'
local_file = ".kernel.mnt"
end
make_img_command = make_img_command .. ' && mcopy -moi kolibri.img "' .. local_file .. '" "::' .. v[1] .. '"'
end
 
-- generate tup rule for kolibri.img
tup.definerule{inputs = input_deps, command = make_img_command, outputs = {"kolibri.img"}}
 
-- generate command and dependencies for mkisofs
input_deps = {"kolibri.img"}
iso_files_list = ""
for i,v in ipairs(iso_extra_files) do
iso_files_list = iso_files_list .. ' "' .. v[1] .. '=' .. v[2] .. '"'
table.insert(input_deps, v[2])
end
 
-- generate tup rule for kolibri.iso
if tup.getconfig("INSERT_REVISION_ID") ~= ""
then volume_id = "KolibriOS r`cat .revision`"
else volume_id = "KolibriOS"
end
tup.definerule{inputs = input_deps, command =
'mkisofs -U -J -pad -b kolibri.img -c boot.catalog -hide-joliet boot.catalog -graft-points ' ..
'-A "KolibriOS AutoBuilder" -p "CleverMouse" -publisher "KolibriOS Team" -V "' .. volume_id .. '" -sysid "KOLIBRI" ' ..
'-iso-level 3 -o kolibri.iso kolibri.img' .. iso_files_list .. ' 2>&1',
outputs = {"kolibri.iso"}}
 
-- generate command and dependencies for distribution kit
input_deps = {"kolibri.img"}
output_deps = {"distribution_kit/kolibri.img"}
make_distr_command = "ln -sr kolibri.img distribution_kit/kolibri.img"
for i,v in ipairs(distr_extra_files) do
make_distr_command = make_distr_command .. ' && ln -sr "' .. v[2] .. '" "distribution_kit/' .. v[1] .. '"'
table.insert(input_deps, v[2])
if string.sub(v[1], -1) == "/"
then table.insert(output_deps, "distribution_kit/" .. v[1] .. tup.file(v[2]))
else table.insert(output_deps, "distribution_kit/" .. v[1])
end
end
 
-- generate tup rule for distribution kit
tup.definerule{inputs = input_deps, command = make_distr_command, outputs = output_deps}