Subversion Repositories Kolibri OS

Rev

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