Subversion Repositories Kolibri OS

Rev

Rev 5101 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

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