switch build system to Tup

git-svn-id: svn://kolibrios.org@5098 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
CleverMouse 2014-09-12 15:15:23 +00:00
parent 94776ec237
commit cd74d1af33
830 changed files with 17926 additions and 4404 deletions

242
build.txt Normal file
View File

@ -0,0 +1,242 @@
Most programs in the repository are regularly and automatically compiled
by the autobuild server, compiled binaries are available at
http://builds.kolibrios.org. The autobuild server uses the build system Tup,
data for it are located in files named Tupfile.lua over the repository.
-------------------------------------------------------------------------------
Q1. I want to build one program and I don't want to know anything about Tup.
Q2. I want to build one program using Tup.
Q3. I want to add a program to the autobuild.
Q4. I want to build the entire system.
Q5. I'm sure that I want to build the entire system.
The autobuild server does this, after all.
Q6. I don't want to keep a zoo of compilers and tools required for Q5,
but I still want to build as many programs as possible with what I have.
-------------------------------------------------------------------------------
Q1. I want to build one program and I don't want to know anything about Tup.
A1. Fine. You will need a corresponding compiler, obviously.
* For a FASM program, get FASM at http://flatassembler.net/download.php.
To compile, find the main .asm file of the program and run
path/to/fasm <input.asm>
The compiler will automatically select the name for output, using
base name of input and extension based on file format. Though, you can
give also output name explicitly, as the second argument.
If the compiler produces an error "file not found" regarding 'lang.inc',
the program can be compiled using different languages of interface.
Create a file 'lang.inc' in the same folder as <input.asm> like follows:
lang fix en
Here the last word selects the language. Valid languages are
en, ru, et, it, sp. Not all programs provide all translations,
en should always be available, ru is the most frequent after en.
* For a NASM program, get NASM at http://www.nasm.us/.
To compile, find the main .asm file of the program and run
path/to/nasm -f bin -o <output> <input.asm>
Multi-language is rarely supported in this category, but you could still
see sometimes an error "file not found" regarding 'lang_nasm.inc'. If so,
create a file 'lang_nasm.inc' in the same folder as <input.asm> like follows:
%define lang 'en'
Read the entry about fasm for description of valid languages.
* For a c-- program, try to avoid compiling it and instead rewrite the code
in a normal language like assembler or C. If you absolutely need
to compile, note that the compiler has been abandoned long ago, so
don't look for an official site. It is possible to find the compiler
somewhere on http://board.kolibrios.org, but be prepared to several tries
because there are several slightly different compiler versions, not all of
which are able to build all programs.
There is no Linux version, but Windows version runs fine under Wine.
* For a GCC program, get the toolchain at
http://ftp.kolibrios.org/users/Serge/new/Toolchain/.
Under Windows, you need the package with "msys" in name and MinGW;
after installing MinGW, unpack the package to
\MinGW\msys\1.0\home\autobuild\tools\win32, the package assumes
exactly this path. Run MinGW shell.
Under Linux, you need the package with "linux" in name
and runtime library cloog; e.g. for Debian-based distributives
use apt-get install libcloog-isl4. Unpack the package to
/home/autobuild/tools/win32, the package assumes exactly this path.
In both MinGW and Linux, make sure that the command
/home/autobuild/tools/win32/bin/kos32-gcc
invokes the compiler.
If the program uses libraries, you will also need to either compile
them separately or download SDK, if they are included to SDK.
Compiling is ultimately a sequence of calls to kos32-gcc and kos32-ld,
but filling exact parameters can be tricky, so maybe you want to
use Tup - proceed to Q2/A2 - or Make, if a maintainer has provided
Makefile.
* For a MSVC program, get the compiler as a part of Visual Studio,
Express Edition is fine, or as a part of Windows SDK.
For obvious reasons, there is no Linux version, but the compiler runs file
under Wine.
If the program uses libraries, you will also need to either compile
them separately or download SDK, if they are included to SDK.
Compiling is ultimately a sequence of calls to cl.exe and link.exe,
but filling exact parameters can be tricky, so maybe you want to
use Tup - proceed to Q2/A2 - or Make, if a maintainer has provided
Makefile.
* For any language, if the program is KolibriOS binary, the compiled binary
can optionally be compiled with kpack. Windows version of kpack
can be downloaded at http://diamond.kolibrios.org/prg/kpack.exe,
Linux version can be compiled from sources at
(repository)/programs/other/kpack/linux.
* The kernel can optionally be compiled with kerpack.
Linux version can be compiled from sources at
(repository)/programs/other/kpack/kerpack_linux.
There is no Windows version.
Q2. I want to build one program using Tup.
A2. You will still need the corresponding compiler as described in Q1/A1.
You will also need Tup, get it at http://gittup.org/tup/index.html.
Make sure that the corresponding compiler is somewhere in PATH
and can be invoked without explicit path. For Linux, note that
all programs are invoked without extension, like
fasm
or
kos32-gcc
with one exception: MSVC linker is invoked as link.exe to avoid conflict
with link from coreutils. Under Linux, c--, cl, link.exe should be scripts
invoking Wine with the corresponding binary. The interaction tup+wine
does not work by default; ultimately, invoking scripts should be like:
c--: WINEDEBUG=-all LD_PRELOAD=/path/to/nosetsid.so /path/to/wine /path/to/C--.exe $*
cl: WINEDEBUG=-all LD_PRELOAD=/path/to/nosetsid.so /path/to/wine /path/to/cl.exe -I/path/to/cl/include $*
link.exe: WINEDEBUG=-all LD_PRELOAD=/path/to/nosetsid.so /path/to/wine /path/to/link.exe $*
where nosetsid.so is compiled as a 32-bit shared library
from C file with one line "int setsid() { return -1; }".
If the program does not use any libraries, run
tup init
in the directory with the program. Then,
tup
without arguments will build the program with default settings.
Subsequent runs will not do anything unless any file that was used
during the compilation - not necessarily the main file - is changed;
after that, the program will be recompiled.
By default, tup will not track files outside the directory with "tup init";
if tracking files in program directory is not sufficient for you,
consider adding updater.full_deps=1 to tup config - see tup manual
for details, for Linux it requires setting tup as suid root - or extending
tup data to the entire repository as described in Q6/A6.
Settings can be configured using the file tup.config. Look to
tup.config.template in the repository root for complete list;
for most programs, only CONFIG_LANG and CONFIG_KPACK_CMD have effect.
If the program uses libraries or helper files for gcc/msvc and you don't
want to build everything at once like Q6/A6, set
CONFIG_HELPERDIR=.
in tup.config, copy programs/use_gcc.lua or programs/use_msvc.lua
and helpers for used libraries, if any, to the directory of the program.
use_gcc.lua and use_msvc.lua do not require additional configuration;
in helpers for used libraries, set path to library in the first line.
Since copied helpers are local files not for the repository, you may use
absolute pathes specific for your machine.
This was designed so that no repository files need to be modified:
Tupfile.lua for the program is able to use either local helpers when
CONFIG_HELPERDIR is set, or repository helpers when the entire repository
is built.
You will also need compiled libraries. If they are included in SDK, use them.
Otherwise, compile them using the same process. Note that for a library,
"tup init" needs to be called in the library directory with include/ and lib/,
even if Tupfile.lua is present only in src/; libraries will be put in lib/.
Q3. I want to add a program to the autobuild.
A3. Select a program from repository which uses same language and libraries.
Copy Tupfile.lua from that program to your program.
Change names of source and binary files accordingly.
If external files are referenced, correct relative pathes accordingly:
e.g. when programs/develop/libraries/menuetlibc_example/Tupfile.lua
references ../../../use_menuetlibc.lua, it resolves to
programs/use_menuetlibc.lua, if your program is built by
programs/other/super_program/Tupfile.lua, the path should be
../../use_menuetlibc.lua. Commit.
After that, the program will be built regularly.
To include the binary in kolibri.img or kolibri.iso, add it to one of
lists in data/Tupfile.lua. Select the section corresponding to the used
language so that people who build images without your compiler would still
be able to do so.
Q4. I want to build the entire system.
A4. Why? Even the person who has configured the autobuild server does not build
everything on her computer.
If you want to create your own image of the system, it is much simpler to
start from existing one and modify it, building only what is necessary.
If you don't know how to modify an image, don't expect that the build
system will magically do it for you. The build system uses mtools for
image manipulation; if you have configured mtools, you can just use them
directly. There are also other ways of image manipulation, which would
be closed for you once you decide to become attached to the build system.
If you want to verify or debug your changes in Q3/A3, it is normally
sufficient to build just what you have changed as in Q2/A2.
To be extra sure, you can build from the repository root as in Q6/A6
limiting to your compiler and FASM for some helper tasks;
any possible differences between this mode and actions of the autobuild
server are due to environment issues, like Windows vs Linux,
and would not be resolved anyway.
If you just want it, note that the full build requires all compilers
listed in Q1/A1 and Linux. MinGW and Cygwin will not help you.
Q5. I'm sure that I want to build the entire system.
The autobuild server does this, after all.
A5. The autobuild server has one concrete configuration with 64-bit Linux.
The developers are slightly interested in compiling programs in different
systems, but nobody needs portability of actions that only one server
does anyway.
So, don't expect support from developers. Though, here goes the instruction
in interest of completeness.
* Configure all compilers as described in Q2/A2.
* Configure kpack and kerpack as described in Q2/A2.
They are optional for Q2/A2, but required here,
the image just could not contain all programs in unpacked form.
* Configure mtools, so that mformat, mmd and mcopy are somewhere in PATH.
* Configure mkisofs.
* For full duplication of the autobuild server configure build variants:
create directories build-eng, build-rus, ... in the root of repository for
every subdirectory in data/ except data/common. Create files
build-eng/tup.config, build-rus/tup.config, ... with
CONFIG_BUILD_TYPE=eng, rus, ... correspondingly. This will switch
to out-of-tree builds for every variant. If one build type is sufficient
for you, you may skip this step.
* Run
tup init
in the root of repository.
* Run
tup
anywhere inside repository.
* If everything went good, there should be files kolibri.img and kolibri.iso
in every build-* directory. When you want to update,
rerun tup without arguments.
Q6. I don't want to keep a zoo of compilers and tools required for Q5,
but I still want to build as many programs as possible with what I have.
A6.
* Configure all compilers you want to use as described in Q2/A2.
* Create tup.config in the root of repository. Disable all compilers you
don't want to use there; comments in tup.config.template should help you.
* Optionally, configure kpack and kerpack as described in Q2/A2.
* Run
tup init
in the root of repository.
* Run
tup
anywhere inside repository.

597
data/Tupfile.lua Normal file
View File

@ -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}

View File

@ -1,15 +0,0 @@
# This is similar to Makefile.fasm, look there for comments.
# No dependency tracking, so force dependencies on all files
# in dir/* and dir/*/*
# Also, we cannot set output file name and need to guess
# whether c-- has created .com file or no-extension file.
define cmm_meta_rule
$(1): $(2) ../common/Makefile.cmm $$(call respace,$$(addsuffix .dir,$(3))) \
$$(wildcard $$(dir $(2))*) $$(wildcard $$(dir $(2))*/*)
flock $$(dir $(2)).lock -c '\
(cd "$$(dir $(2))" && win32-c-- /D=AUTOBUILD /D=LANG_RUS $(5) $$(notdir $(2)) >&2) && \
if [ -e $$(basename $$<) ]; then f=$$(basename $$<); else f=$$(basename $$<).com; fi && \
kpack --nologo $$$$f "$$@" && rm $$$$f'
endef
$(foreach f,$(CMM_PROGRAMS),$(eval $(call cmm_meta_rule,$(fbinary),$(fsource),$(binarydir),$(progname),$(fparam))))

View File

@ -1,6 +0,0 @@
# This is similar to Makefile.fasm, look there for comments.
define copy_meta_rule
$(1): $(2) ../common/Makefile.copy $$(call respace,$$(addsuffix .dir,$(3)))
cp $$< "$$@"
endef
$(foreach f,$(COPY_FILES),$(eval $(call copy_meta_rule,$(fbinary),$(fsource),$(binarydir))))

View File

@ -1,60 +0,0 @@
# This is not a independent Makefile; it is auxiliary file
# included from main Makefile.
# It depends on the following variables and macro:
# $(FASM_PROGRAMS) is a list of all programs to build with FASM rule;
# $(binarypart) is a macro which converts from $(1)=item of $(FASM_PROGRAMS)
# to space-escaped full name of binary, $(respace) unescapes spaces;
# $(fbinary) and $(fsource) gives space-unescaped full name of binary
# and source (respectively) of $(f)=item of $(FASM_PROGRAMS).
# Define the rule for all FASM programs.
# Yes, this looks like a black magic.
# But it is not so scary as it seems.
# First, we define "meta-rule" as a rule which is
# macro depending on $(fasmprog).
# Second, the construction foreach+eval creates
# usual rules, one for each $(fasmprog) in $(FASM_PROGRAMS).
# Note that meta-rule is double-expanded, first
# time as the arg of eval - it is the place where $(fasmprog)
# gets expanded - and second time as the rule;
# so all $ which are expected to expand at the second time should be escaped.
# And all $ which are expected to be expanded by the shell should be escaped
# twice, so they become $$$$.
# The arguments of macro fasm_meta_rule:
# $(1) = name of binary file,
# $(2) = name of main source file.
# $(3) = folder of binary file - without spaces.
# $(4) = name of program - without path and extension,
define fasm_meta_rule
$(1): $(2) ../common/Makefile.fasm .deps/.dir $$(call respace,$$(addsuffix .dir,$(3)))
tmpfile=`mktemp --tmpdir build.XXXXXXXX` && \
(fasm -m 65536 "$$<" "$$@" -s $$$$tmpfile && \
fasmdep -e $$$$tmpfile > .deps/$(4).Po && \
rm $$$$tmpfile) || (rm $$$$tmpfile; false)
kpack --nologo "$$@"
-include .deps/$(4).Po
endef
define fasm_nokpack_meta_rule
$(1): $(2) ../common/Makefile.fasm .deps/.dir $$(call respace,$$(addsuffix .dir,$(3)))
tmpfile=`mktemp --tmpdir build.XXXXXXXX` && \
(fasm -m 65536 "$$<" "$$@" -s $$$$tmpfile && \
fasmdep -e $$$$tmpfile > .deps/$(4).Po && \
rm $$$$tmpfile) || (rm $$$$tmpfile; false)
-include .deps/$(4).Po
endef
progname=$(call respace,$(basename $(notdir $(call binarypart,$(f)))))
binarydir=$(subst ./,,$(dir $(call binarypart,$(f))))
$(foreach f,$(FASM_PROGRAMS) $(FASM_PROGRAMS_CD) $(SKIN_SOURCES),$(eval $(call fasm_meta_rule,$(fbinary),$(fsource),$(binarydir),$(progname))))
$(foreach f,$(FASM_NOKPACK_PROGRAMS),$(eval $(call fasm_nokpack_meta_rule,$(fbinary),$(fsource),$(binarydir),$(progname))))
# Rule for the kernel differs: it uses kerpack instead of kpack.
kernel.mnt: $(KERNEL)/kernel.asm ../common/Makefile.fasm .deps/.dir
tmpfile=`mktemp --tmpdir build.XXXXXXXX` && \
(fasm -m 131072 "$<" "$@" -s $$tmpfile && \
fasmdep -e $$tmpfile > .deps/kernel.Po && \
rm $$tmpfile) || (rm $$tmpfile; false)
kerpack "$@"
-include .deps/kernel.Po

View File

@ -1,8 +0,0 @@
define gcc_compile
win32-gcc -c -Os -DAUTOBUILD -DLANG_RUS=1 -o $@ $<
endef
define gcc_link
win32-ld -nostdlib -T $(1) -o "$@" $^
win32-objcopy "$@" -O binary
kpack --nologo "$@"
endef

View File

@ -1,880 +0,0 @@
# This Makefile is included by root Makefiles of every build,
# root Makefiles set BUILD_TYPE correspondingly.
# Note that the current directory is data/$BUILD_TYPE, not data/common,
# so relative references like "file" are resolved as data/$BUILD_TYPE/file,
# not data/common/file.
# General rule for naming: variables with CAPITALIZED names hold settings,
# you can - and are expected - to modify it; variables with lowercase names
# are intermediate variables and macroses not to be modified unless you
# know what you're doing.
# Define directories for destination, source repository, sources of kernel, sources of programs.
BUILD_DIR:=build
REPOSITORY:=../..
KERNEL:=$(REPOSITORY)/kernel/trunk
PROGS:=$(REPOSITORY)/programs
# The main goal: build kolibri.img, kolibri.iso and list for creating a distribution kit
all: $(BUILD_DIR)/kolibri.img $(BUILD_DIR)/kolibri.iso $(BUILD_DIR)/distr.lst
# Docpak requires some documents; we place them
# into 'docs' subdir and communicate with FASM
# through environment var DOCDIR.
DOCDIR:=docs/
export DOCDIR
# Because most programs are written in FASM and have
# the common structure of one main .asm file possibly including
# several .inc files, we handle this case separately.
# Namely, we organize one big list of such programs
# (FASM_PROGRAMS, see below) containing name of local binary file,
# name of file inside kolibri.img and name of the source file.
# This list is maintained by hand, and the rest is done with some macroses...
# well, slightly complicated macroses - however, you do not need to
# understand them in order to maintain the list.
# To add a FASM program with one .asm file, just
# add the corresponding item to the list and enjoy
# the power of GNU make.
# The list of all FASM programs with one main FASM file.
# Every item consists of three parts, separated by ':'.
# First part is the real name of binary file in $(BUILD_DIR)
# as it should be produced by make.
# Second part is the name of a file inside kolibri.img,
# usually uppercased version of first part - to save space
# for FAT filesystem.
# Third part is the name of the source file.
# Spaces separate items, so spaces in names should be
# represented as '|'.
FASM_PROGRAMS:=\
@menu:@MENU:$(PROGS)/system/menu/trunk/menu.asm \
@panel:@PANEL:$(PROGS)/system/panel/trunk/@PANEL.ASM \
@docky:@DOCKY:$(PROGS)/system/docky/trunk/docky.asm \
@notify:@NOTIFY:$(PROGS)/system/notify3/notify.asm \
@ss:@SS:$(PROGS)/system/ss/trunk/@ss.asm \
refrscrn:REFRSCRN:$(PROGS)/system/refrscrn/refrscrn.asm \
asciivju:ASCIIVJU:$(PROGS)/develop/asciivju/trunk/asciivju.asm \
calc:CALC:$(PROGS)/other/calc/trunk/calc.asm \
calendar:CALENDAR:$(PROGS)/system/calendar/trunk/calendar.asm \
colrdial:COLRDIAL:$(PROGS)/system/colrdial/color_dialog.asm \
loaddrv:LOADDRV:$(PROGS)/system/loaddrv/loaddrv.asm \
cpu:CPU:$(PROGS)/system/cpu/trunk/cpu.asm \
cpuid:CPUID:$(PROGS)/system/cpuid/trunk/CPUID.ASM \
desktop:DESKTOP:$(PROGS)/system/desktop/trunk/desktop.asm \
disptest:DISPTEST:$(PROGS)/system/disptest/trunk/disptest.ASM \
docpack:DOCPACK:$(PROGS)/system/docpack/trunk/docpack.asm \
end:END:$(PROGS)/system/end/light/end.asm \
fspeed:FSPEED:$(PROGS)/fs/fspeed/fspeed.asm \
gmon:GMON:$(PROGS)/system/gmon/gmon.asm \
hdd_info:HDD_INFO:$(PROGS)/system/hdd_info/trunk/hdd_info.asm \
@icon:@ICON:$(PROGS)/system/icon_new/@icon.asm \
cropflat:CROPFLAT:$(PROGS)/system/cropflat/cropflat.asm \
kbd:KBD:$(PROGS)/system/kbd/trunk/kbd.ASM \
kpack:KPACK:$(PROGS)/other/kpack/trunk/kpack.asm \
launcher:LAUNCHER:$(PROGS)/system/launcher/trunk/launcher.asm \
magnify:MAGNIFY:$(PROGS)/demos/magnify/trunk/magnify.asm \
mgb:MGB:$(PROGS)/system/mgb/trunk/mgb.asm \
mousemul:MOUSEMUL:$(PROGS)/system/mousemul/trunk/mousemul.asm \
madmouse:MADMOUSE:$(PROGS)/other/madmouse/madmouse.asm \
mykey:MYKEY:$(PROGS)/system/MyKey/trunk/MyKey.asm \
pcidev:PCIDEV:$(PROGS)/system/pcidev/trunk/PCIDEV.ASM \
rdsave:RDSAVE:$(PROGS)/system/rdsave/trunk/rdsave.asm \
rtfread:RTFREAD:$(PROGS)/other/rtfread/trunk/rtfread.asm \
run:RUN:$(PROGS)/system/run/trunk/run.asm \
searchap:SEARCHAP:$(PROGS)/system/searchap/searchap.asm \
scrshoot:SCRSHOOT:$(PROGS)/media/scrshoot/scrshoot.asm \
setup:SETUP:$(PROGS)/system/setup/trunk/setup.asm \
test:TEST:$(PROGS)/system/test/trunk/test.asm \
tinypad:TINYPAD:$(PROGS)/develop/tinypad/trunk/tinypad.asm \
zkey:ZKEY:$(PROGS)/system/zkey/trunk/ZKEY.ASM \
terminal:TERMINAL:$(PROGS)/system/terminal/terminal.asm \
3d/3dsheart:3D/3DSHEART:$(PROGS)/demos/3dsheart/trunk/3dsheart.asm \
3d/3dwav:3D/3DWAV:$(PROGS)/demos/3dwav/trunk/3dwav.asm \
3d/crownscr:3D/CROWNSCR:$(PROGS)/demos/crownscr/trunk/crownscr.asm \
3d/free3d04:3D/FREE3D04:$(PROGS)/demos/free3d04/trunk/free3d04.asm \
3d/view3ds:3D/VIEW3DS:$(PROGS)/demos/3DS/VIEW3DS.ASM \
demos/bcdclk:DEMOS/BCDCLK:$(PROGS)/demos/bcdclk/trunk/bcdclk.asm \
demos/circle:DEMOS/CIRCLE:$(PROGS)/develop/examples/circle/trunk/circle.asm \
demos/colorref:DEMOS/COLORREF:$(PROGS)/demos/colorref/trunk/colorref.asm \
demos/cslide:DEMOS/CSLIDE:$(PROGS)/demos/cslide/trunk/cslide.asm \
demos/eyes:DEMOS/EYES:$(PROGS)/demos/eyes/trunk/eyes.asm \
demos/firework:DEMOS/FIREWORK:$(PROGS)/demos/firework/trunk/firework.asm \
demos/movback:DEMOS/MOVBACK:$(PROGS)/demos/movback/trunk/movback.asm \
demos/plasma:DEMOS/PLASMA:$(PROGS)/demos/plasma/trunk/plasma.asm \
demos/tinyfrac:DEMOS/TINYFRAC:$(PROGS)/demos/tinyfrac/trunk/tinyfrac.asm \
demos/trantest:DEMOS/TRANTEST:$(PROGS)/demos/trantest/trunk/trantest.asm \
demos/tube:DEMOS/TUBE:$(PROGS)/demos/tube/trunk/tube.asm \
demos/unvwater:DEMOS/UNVWATER:$(PROGS)/demos/unvwater/trunk/unvwater.asm \
demos/use_mb:DEMOS/USE_MB:$(PROGS)/demos/use_mb/use_mb.asm \
demos/web:DEMOS/WEB:$(PROGS)/demos/web/trunk/web.asm \
develop/board:DEVELOP/BOARD:$(PROGS)/system/board/trunk/board.asm \
develop/cObj:DEVELOP/cObj:$(PROGS)/develop/cObj/trunk/cObj.asm \
develop/fasm:DEVELOP/FASM:$(PROGS)/develop/fasm/trunk/fasm.asm \
develop/h2d2b:DEVELOP/H2D2B:$(PROGS)/develop/h2d2b/trunk/h2d2b.asm \
develop/heed:DEVELOP/HEED:$(PROGS)/develop/heed/trunk/heed.asm \
develop/keyascii:DEVELOP/KEYASCII:$(PROGS)/develop/keyascii/trunk/keyascii.asm \
develop/mtdbg:DEVELOP/MTDBG:$(PROGS)/develop/mtdbg/mtdbg.asm \
develop/scancode:DEVELOP/SCANCODE:$(PROGS)/develop/scancode/trunk/scancode.asm \
develop/t_edit:DEVELOP/T_EDIT:$(PROGS)/other/t_edit/t_edit.asm \
develop/test_gets:DEVELOP/test_gets:$(PROGS)/develop/libraries/console/examples/test_gets.asm \
develop/thread:DEVELOP/THREAD:$(PROGS)/develop/examples/thread/trunk/thread.asm \
develop/info/asm.syn:DEVELOP/INFO/ASM.SYN:$(PROGS)/other/t_edit/info/asm_syn.asm \
develop/info/cpp_kol_cla.syn:DEVELOP/INFO/CPP_KOL_CLA.SYN:$(PROGS)/other/t_edit/info/cpp_kol_cla_syn.asm \
develop/info/cpp_kol_dar.syn:DEVELOP/INFO/CPP_KOL_DAR.SYN:$(PROGS)/other/t_edit/info/cpp_kol_dar_syn.asm \
develop/info/cpp_kol_def.syn:DEVELOP/INFO/CPP_KOL_DEF.SYN:$(PROGS)/other/t_edit/info/cpp_kol_def_syn.asm \
develop/info/default.syn:DEVELOP/INFO/DEFAULT.SYN:$(PROGS)/other/t_edit/info/default_syn.asm \
develop/info/html.syn:DEVELOP/INFO/HTML.SYN:$(PROGS)/other/t_edit/info/html_syn.asm \
develop/info/ini_files.syn:DEVELOP/INFO/INI_FILES.SYN:$(PROGS)/other/t_edit/info/ini_files_syn.asm \
develop/info/win_const.syn:DEVELOP/INFO/WIN_CONST.SYN:$(PROGS)/other/t_edit/info/win_const_syn.asm \
File|Managers/kfar:File|Managers/KFAR:$(PROGS)/fs/kfar/trunk/kfar.asm \
File|Managers/kfm:File|Managers/KFM:$(PROGS)/fs/kfm/trunk/kfm.asm \
File|Managers/opendial:File|Managers/OPENDIAL:$(PROGS)/fs/opendial/opendial.asm \
games/15:GAMES/15:$(PROGS)/games/15/trunk/15.ASM \
games/arcanii:GAMES/ARCANII:$(PROGS)/games/arcanii/trunk/arcanii.asm \
games/freecell:GAMES/FREECELL:$(PROGS)/games/freecell/freecell.asm \
games/gomoku:GAMES/GOMOKU:$(PROGS)/games/gomoku/trunk/gomoku.asm \
games/invaders:GAMES/INVADERS:$(PROGS)/games/invaders/invaders.asm \
games/klavisha:GAMES/KLAVISHA:$(PROGS)/games/klavisha/trunk/klavisha.asm \
games/lines:GAMES/LINES:$(PROGS)/games/lines/lines.asm \
games/mblocks:GAMES/MBLOCKS:$(PROGS)/games/mblocks/trunk/mblocks.asm \
games/msquare:GAMES/MSQUARE:$(PROGS)/games/MSquare/trunk/MSquare.asm \
games/phenix:GAMES/PHENIX:$(PROGS)/games/phenix/trunk/phenix.asm \
games/pipes:GAMES/PIPES:$(PROGS)/games/pipes/pipes.asm \
games/pong:GAMES/PONG:$(PROGS)/games/pong/trunk/pong.asm \
games/pong3:GAMES/PONG3:$(PROGS)/games/pong3/trunk/pong3.asm \
games/rsquare:GAMES/RSQUARE:$(PROGS)/games/rsquare/trunk/rsquare.asm \
games/snake:GAMES/SNAKE:$(PROGS)/games/snake/trunk/snake.asm \
games/sq_game:GAMES/SQ_GAME:$(PROGS)/games/sq_game/trunk/SQ_GAME.ASM \
games/sudoku:GAMES/SUDOKU:$(PROGS)/games/sudoku/trunk/sudoku.asm \
games/sw:GAMES/SW:$(PROGS)/games/sw/trunk/sw.asm \
games/tanks:GAMES/TANKS:$(PROGS)/games/tanks/trunk/tanks.asm \
games/tetris:GAMES/TETRIS:$(PROGS)/games/tetris/trunk/tetris.asm \
lib/archiver.obj:LIB/ARCHIVER.OBJ:$(PROGS)/fs/kfar/trunk/kfar_arc/kfar_arc.asm \
lib/box_lib.obj:LIB/BOX_LIB.OBJ:$(PROGS)/develop/libraries/box_lib/trunk/box_lib.asm \
lib/buf2d.obj:LIB/BUF2D.OBJ:$(PROGS)/develop/libraries/buf2d/trunk/buf2d.asm \
lib/console.obj:LIB/CONSOLE.OBJ:$(PROGS)/develop/libraries/console/console.asm \
lib/libgfx.obj:LIB/LIBGFX.OBJ:$(PROGS)/develop/libraries/libs-dev/libgfx/libgfx.asm \
lib/libimg.obj:LIB/LIBIMG.OBJ:$(PROGS)/develop/libraries/libs-dev/libimg/libimg.asm \
lib/libini.obj:LIB/LIBINI.OBJ:$(PROGS)/develop/libraries/libs-dev/libini/libini.asm \
lib/libio.obj:LIB/LIBIO.OBJ:$(PROGS)/develop/libraries/libs-dev/libio/libio.asm \
lib/msgbox.obj:LIB/MSGBOX.OBJ:$(PROGS)/develop/libraries/msgbox/msgbox.asm \
lib/network.obj:LIB/NETWORK.OBJ:$(PROGS)/develop/libraries/network/network.asm \
lib/sort.obj:LIB/SORT.OBJ:$(PROGS)/develop/libraries/sorter/sort.asm \
lib/http.obj:LIB/HTTP.OBJ:$(PROGS)/develop/libraries/http/http.asm \
lib/proc_lib.obj:LIB/PROC_LIB.OBJ:$(PROGS)/develop/libraries/proc_lib/trunk/proc_lib.asm \
lib/cnv_png.obj:LIB/CNV_PNG.OBJ:$(PROGS)/media/zsea/plugins/png/cnv_png.asm \
media/animage:MEDIA/ANIMAGE:$(PROGS)/media/animage/trunk/animage.asm \
media/kiv:MEDIA/KIV:$(PROGS)/media/kiv/trunk/kiv.asm \
media/listplay:MEDIA/LISTPLAY:$(PROGS)/media/listplay/trunk/listplay.asm \
media/midamp:MEDIA/MIDAMP:$(PROGS)/media/midamp/trunk/midamp.asm \
media/palitra:MEDIA/PALITRA:$(PROGS)/media/palitra/trunk/palitra.asm \
media/startmus:MEDIA/STARTMUS:$(PROGS)/media/startmus/trunk/STARTMUS.ASM \
network/ping:NETWORK/PING:$(PROGS)/network/icmp/ping.asm \
network/netcfg:NETWORK/NETCFG:$(PROGS)/network/netcfg/netcfg.asm \
network/netstat:NETWORK/NETSTAT:$(PROGS)/network/netstat/netstat.asm \
network/nslookup:NETWORK/NSLOOKUP:$(PROGS)/network/nslookup/nslookup.asm \
network/pasta:NETWORK/PASTA:$(PROGS)/network/pasta/pasta.asm \
network/synergyc:NETWORK/SYNERGYC:$(PROGS)/network/synergyc/synergyc.asm \
network/tcpserv:NETWORK/TCPSERV:$(PROGS)/network/tcpserv/tcpserv.asm \
network/telnet:NETWORK/TELNET:$(PROGS)/network/telnet/telnet.asm \
network/zeroconf:NETWORK/ZEROCONF:$(PROGS)/network/zeroconf/zeroconf.asm \
network/ftpc:NETWORK/FTPC:$(PROGS)/network/ftpc/ftpc.asm \
network/ftpd:NETWORK/FTPD:$(PROGS)/network/ftpd/ftpd.asm \
network/tftpc:NETWORK/TFTPC:$(PROGS)/network/tftpc/tftpc.asm \
network/ircc:NETWORK/IRCC:$(PROGS)/network/ircc/ircc.asm \
network/downloader:NETWORK/DOWNLOADER:$(PROGS)/network/downloader/downloader.asm \
# end of list
# For russian build, add russian-only programs.
ifeq ($(BUILD_TYPE),rus)
FASM_PROGRAMS:=$(FASM_PROGRAMS) \
period:PERIOD:$(PROGS)/other/period/trunk/period.asm \
develop/testcon2:DEVELOP/TESTCON2:$(PROGS)/develop/libraries/console/examples/testcon2_rus.asm \
# end of list
else
FASM_PROGRAMS:=$(FASM_PROGRAMS) \
develop/testcon2:DEVELOP/TESTCON2:$(PROGS)/develop/libraries/console/examples/testcon2_eng.asm \
games/soko:GAMES/SOKO:$(PROGS)/games/soko/trunk/SOKO.ASM \
# end of list
endif
# Same as above with PE stripping as extra step.
FASM_PROGRAMS_PESTRIP:=\
drivers/vidintel.sys:DRIVERS/VIDINTEL.SYS:$(REPOSITORY)/drivers/video/vidintel.asm \
drivers/3c59x.sys:DRIVERS/3C59X.SYS:$(REPOSITORY)/drivers/ethernet/3c59x.asm \
drivers/dec21x4x.sys:DRIVERS/DEC21X4X.SYS:$(REPOSITORY)/drivers/ethernet/dec21x4x.asm \
drivers/forcedeth.sys:DRIVERS/FORCEDETH.SYS:$(REPOSITORY)/drivers/ethernet/forcedeth.asm \
drivers/i8254x.sys:DRIVERS/I8254X.SYS:$(REPOSITORY)/drivers/ethernet/i8254x.asm \
drivers/i8255x.sys:DRIVERS/I8255X.SYS:$(REPOSITORY)/drivers/ethernet/i8255x.asm \
drivers/mtd80x.sys:DRIVERS/MTD80X.SYS:$(REPOSITORY)/drivers/ethernet/mtd80x.asm \
drivers/pcnet32.sys:DRIVERS/PCNET32.SYS:$(REPOSITORY)/drivers/ethernet/pcnet32.asm \
drivers/r6040.sys:DRIVERS/R6040.SYS:$(REPOSITORY)/drivers/ethernet/R6040.asm \
drivers/rhine.sys:DRIVERS/RHINE.SYS:$(REPOSITORY)/drivers/ethernet/rhine.asm \
drivers/rtl8029.sys:DRIVERS/RTL8029.SYS:$(REPOSITORY)/drivers/ethernet/RTL8029.asm \
drivers/rtl8139.sys:DRIVERS/RTL8139.SYS:$(REPOSITORY)/drivers/ethernet/RTL8139.asm \
drivers/rtl8169.sys:DRIVERS/RTL8169.SYS:$(REPOSITORY)/drivers/ethernet/RTL8169.asm \
drivers/sis900.sys:DRIVERS/SIS900.SYS:$(REPOSITORY)/drivers/ethernet/sis900.asm \
drivers/uhci.sys:DRIVERS/UHCI.SYS:$(REPOSITORY)/drivers/usb/uhci.asm \
drivers/ohci.sys:DRIVERS/OHCI.SYS:$(REPOSITORY)/drivers/usb/ohci.asm \
drivers/ehci.sys:DRIVERS/EHCI.SYS:$(REPOSITORY)/drivers/usb/ehci.asm \
drivers/usbhid.sys:DRIVERS/USBHID.SYS:$(REPOSITORY)/drivers/usb/usbhid/usbhid.asm \
drivers/usbstor.sys:DRIVERS/USBSTOR.SYS:$(REPOSITORY)/drivers/usb/usbstor.asm \
drivers/rdc.sys:DRIVERS/RDC.SYS:$(REPOSITORY)/drivers/video/rdc.asm \
drivers/commouse.sys:DRIVERS/COMMOUSE.SYS:$(REPOSITORY)/drivers/mouse/commouse.asm \
drivers/ps2mouse.sys:DRIVERS/PS2MOUSE.SYS:$(REPOSITORY)/drivers/mouse/ps2mouse4d/trunk/ps2mouse.asm \
drivers/tmpdisk.sys:DRIVERS/TMPDISK.SYS:$(REPOSITORY)/drivers/disk/tmpdisk.asm \
drivers/intel_hda.sys:DRIVERS/intel_hda.sys:$(REPOSITORY)/drivers/audio/intel_hda/intel_hda.asm \
drivers/sb16.sys:DRIVERS/SB16.SYS:$(REPOSITORY)/drivers/audio/sb16/sb16.asm \
drivers/sound.sys:DRIVERS/SOUND.SYS:$(REPOSITORY)/drivers/audio/sound.asm \
drivers/infinity.sys:DRIVERS/INFINITY.SYS:$(REPOSITORY)/drivers/audio/infinity/infinity.asm \
drivers/intelac97.sys:DRIVERS/INTELAC97.SYS:$(REPOSITORY)/drivers/audio/intelac97.asm \
drivers/emu10k1x.sys:DRIVERS/EMU10K1X.SYS:$(REPOSITORY)/drivers/audio/emu10k1x.asm \
drivers/fm801.sys:DRIVERS/FM801.SYS:$(REPOSITORY)/drivers/audio/fm801.asm \
drivers/vt823x.sys:DRIVERS/VT823X.SYS:$(REPOSITORY)/drivers/audio/vt823x.asm \
drivers/sis.sys:DRIVERS/SIS.SYS:$(REPOSITORY)/drivers/audio/sis.asm \
# end of list
# The list of all FASM programs with one main FASM file for CD image.
# Format of an item is exactly the same as in the previous list.
FASM_PROGRAMS_CD:=\
drivers/atikms:DRIVERS/ATIKMS:$(REPOSITORY)/drivers/video/drm/radeon/atikms.asm \
distr_data/zsea:DISTR_DATA/ZSEA:$(PROGS)/media/zsea/zSea.asm \
distr_data/cnv_bmp.obj:DISTR_DATA/CNV_BMP.OBJ:$(PROGS)/media/zsea/plugins/bmp/cnv_bmp.asm \
distr_data/cnv_gif.obj:DISTR_DATA/CNV_GIF.OBJ:$(PROGS)/media/zsea/plugins/gif/cnv_gif.asm \
distr_data/cnv_jpeg.obj:DISTR_DATA/CNV_JPEG.OBJ:$(PROGS)/media/zsea/plugins/jpeg/cnv_jpeg.asm \
distr_data/convert.obj:DISTR_DATA/CONVERT.OBJ:$(PROGS)/media/zsea/plugins/convert/convert.asm \
distr_data/rotate.obj:DISTR_DATA/ROTATE.OBJ:$(PROGS)/media/zsea/plugins/rotate/rotate.asm \
distr_data/scaling.obj:DISTR_DATA/SCALING.OBJ:$(PROGS)/media/zsea/plugins/scaling/scaling.asm \
# end of list
# The list of all FASM programs which needs to be compiled without KPACKing.
FASM_NOKPACK_PROGRAMS:=\
distr_data/9x2klbr.exe:-:$(PROGS)/hd_load/9x2klbr/9x2klbr.asm \
distr_data/MeOSload.com:-:$(PROGS)/hd_load/meosload/MeOSload.asm \
distr_data/mtldr:-:$(PROGS)/hd_load/mtldr/mtldr.asm \
mtldr_for_installer:-:$(PROGS)/hd_load/mtldr_install/mtldr_code/mtldr.asm \
distr_data/mtldr_install.exe:-:$(PROGS)/hd_load/mtldr_install/mtldr_install.asm \
distr_data/MeOSload_for_usb_boot_old.com:-:$(PROGS)/hd_load/usb_boot_old/MeOSload.asm \
distr_data/enable_for_usb_boot_old.exe:-:$(PROGS)/hd_load/usb_boot_old/enable.asm \
distr_data/BOOT_F32.BIN:-:$(PROGS)/hd_load/usb_boot/BOOT_F32.ASM \
distr_data/MTLD_F32:-:$(PROGS)/hd_load/usb_boot/mtldr.asm \
distr_data/inst.exe:-:$(PROGS)/hd_load/usb_boot/inst.asm \
distr_data/setmbr.exe:-:$(PROGS)/hd_load/usb_boot/setmbr.asm \
#end of list
# The list of all NASM programs with one main NASM file.
# Format of an item is exactly the same as in the previous list.
NASM_PROGRAMS:=\
demos/aclock:DEMOS/ACLOCK:$(PROGS)/demos/aclock/trunk/aclock.asm \
demos/timer:DEMOS/TIMER:$(PROGS)/other/Timer/Timer.asm \
games/c4:GAMES/C4:$(PROGS)/games/c4/trunk/c4.asm \
tinfo:TINFO:$(PROGS)/system/tinfo/tinfo.asm \
develop/mstate:DEVELOP/MSTATE:$(PROGS)/develop/mstate/mstate.asm \
# end of list
# The list of files which should be copied from somewhere.
# Format of an item is exactly the same as in the previous list.
COPY_FILES:=\
macros.inc:MACROS.INC:$(PROGS)/macros.inc \
config.inc:CONFIG.INC:$(PROGS)/config.inc \
struct.inc:STRUCT.INC:$(PROGS)/struct.inc \
develop/te_icon.png:DEVELOP/TE_ICON.PNG:$(PROGS)/other/t_edit/te_icon.png \
develop/tl_nod_16.png:DEVELOP/TL_NOD_16.PNG:$(PROGS)/other/t_edit/tl_nod_16.png \
develop/tl_sys_16.png:DEVELOP/TL_SYS_16.PNG:$(PROGS)/media/log_el/trunk/tl_sys_16.png \
develop/t_edit.ini:DEVELOP/T_EDIT.INI:$(PROGS)/other/t_edit/t_edit.ini \
File|Managers/z_icons.png:File|Managers/Z_ICONS.PNG:$(PROGS)/fs/opendial/z_icons.png \
File|Managers/buttons.bmp:File|Managers/BUTTONS.BMP:$(PROGS)/fs/kfm/trunk/buttons.bmp \
File|Managers/icons.bmp:File|Managers/ICONS.BMP:$(PROGS)/fs/kfm/trunk/icons.bmp \
fonts/litt.chr:FONTS/LITT.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/LITT.CHR \
games/snake.ini:GAMES/SNAKE.INI:$(PROGS)/games/snake/trunk/snake.ini \
media/kiv.ini:MEDIA/KIV.INI:$(PROGS)/media/kiv/trunk/kiv.ini \
network/wv_skin.png:NETWORK/WV_SKIN.PNG:$(PROGS)/cmm/browser/wv_skin.png \
# end of list
ifeq ($(BUILD_TYPE),rus)
COPY_FILES:=$(COPY_FILES) \
File|Managers/kfm_keys.txt:File|Managers/KFM_KEYS.TXT:$(PROGS)/fs/kfm/trunk/docs/russian/dos_kolibri/kfm_keys.txt \
settings/.shell:SETTINGS/.shell:$(PROGS)/system/shell/bin/rus/.shell \
settings/mykey.ini:SETTINGS/MYKEY.INI:$(PROGS)/system/MyKey/trunk/mykey.ini \
example.asm:EXAMPLE.ASM:$(PROGS)/develop/examples/example/trunk/rus/example.asm \
# end of list
else
COPY_FILES:=$(COPY_FILES) \
File|Managers/kfm_keys.txt:File|Managers/KFM_KEYS.TXT:$(PROGS)/fs/kfm/trunk/docs/english/kfm_keys.txt \
games/skin.raw:GAMES/SKIN.RAW:$(PROGS)/games/soko/trunk/SKIN.RAW \
games/soko-4.lev:GAMES/SOKO-4.LEV:$(PROGS)/games/soko/trunk/SOKO-4.LEV \
games/soko-5.lev:GAMES/SOKO-5.LEV:$(PROGS)/games/soko/trunk/SOKO-5.LEV \
games/soko-6.lev:GAMES/SOKO-6.LEV:$(PROGS)/games/soko/trunk/SOKO-6.LEV \
games/soko-7.lev:GAMES/SOKO-7.LEV:$(PROGS)/games/soko/trunk/SOKO-7.LEV \
games/soko-8.lev:GAMES/SOKO-8.LEV:$(PROGS)/games/soko/trunk/SOKO-8.LEV \
games/soko-9.lev:GAMES/SOKO-9.LEV:$(PROGS)/games/soko/trunk/SOKO-9.LEV \
settings/.shell:SETTINGS/.shell:$(PROGS)/system/shell/bin/eng/.shell \
example.asm:EXAMPLE.ASM:$(PROGS)/develop/examples/example/trunk/example.asm \
# end of list
ifeq ($(BUILD_TYPE),it)
COPY_FILES:=$(COPY_FILES) \
settings/mykey.ini:SETTINGS/MYKEY.INI:$(PROGS)/system/MyKey/trunk/mykey_it.ini
else
COPY_FILES:=$(COPY_FILES) \
settings/mykey.ini:SETTINGS/MYKEY.INI:$(PROGS)/system/MyKey/trunk/mykey.ini
endif
endif
# The list of all C-- programs with one main C-- file.
# Format of an item is exactly the same as in the previous list,
# except that there can be fourth field with parameters for a compiler.
CMM_PROGRAMS:=\
File|Managers/eolite:File|Managers/EOLITE:$(PROGS)/cmm/eolite/Eolite.c \
games/clicks:GAMES/CLICKS:$(PROGS)/games/clicks/trunk/clicks.c \
games/FindNumbers:GAMES/FindNumbers:$(PROGS)/games/FindNumbers/trunk/FindNumbers.c-- \
games/flood-it:GAMES/flood-it:$(PROGS)/games/flood-it/trunk/flood-it.c \
games/mine:GAMES/MINE:$(PROGS)/games/mine/trunk/mine.c--:/MEOS \
network/WebView:network/WebView:$(PROGS)/cmm/browser/WebView.c \
tmpdisk:tmpdisk:$(PROGS)/cmm/tmpdisk/tmpdisk.c \
# end of list
# List of other files to be included in the image file.
# Some of them are auto-built with special rules, some just exist before build.
# Each item is of the form <local name>:<name inside image>.
# Spaces should be represented as |.
#
OTHER_FILES:=settings/autorun.dat:SETTINGS/AUTORUN.DAT \
default.skn:DEFAULT.SKN \
graph:GRAPH \
settings/icon.ini:SETTINGS/ICON.INI \
../common/iconstrp.png:ICONSTRP.PNG index_htm:INDEX.HTM \
kernel.mnt:KERNEL.MNT \
../common/kerpack:KERPACK \
settings/keymap.key:SETTINGS/KEYMAP.KEY \
settings/lang.ini:SETTINGS/LANG.INI \
../common/kuzkina.mid:KUZKINA.MID lang.inc:LANG.INC \
settings/menu.dat:SETTINGS/MENU.DAT \
settings/kolibri.lbl:SETTINGS/KOLIBRI.LBL \
settings/panel.ini:SETTINGS/PANEL.INI \
../common/settings/docky.ini:SETTINGS/DOCKY.INI \
../common/notify3.png:NOTIFY3.PNG \
settings/setup.dat:SETTINGS/SETUP.DAT \
shell:SHELL table:TABLE \
../common/vmode:VMODE \
../common/3d/cubeline:3D/CUBELINE \
../common/3d/gears:3D/GEARS \
../common/3d/house.3ds:3D/HOUSE.3DS \
../common/demos/ak47.lif:DEMOS/AK47.LIF \
../common/demos/life2:DEMOS/LIFE2 \
../common/demos/relay.lif:DEMOS/RELAY.LIF \
../common/demos/rpento.lif:DEMOS/RPENTO.LIF \
../common/File|Managers/eolite.ini:File|Managers/EOLITE.INI \
../common/File|Managers/icons.ini:File|Managers/ICONS.INI \
../common/File|Managers/kfm.ini:File|Managers/KFM.INI \
games/checkers:GAMES/CHECKERS \
games/megamaze:GAMES/MEGAMAZE \
games/reversi:GAMES/REVERSI games/rforces:GAMES/RFORCES \
games/xonix:GAMES/XONIX \
games/kosilka:GAMES/KOSILKA \
../common/lib/pixlib.obj:LIB/PIXLIB.OBJ \
../common/lib/iconv.obj:LIB/ICONV.OBJ \
../common/lib/netcode.obj:LIB/NETCODE.OBJ \
media/ac97snd:MEDIA/AC97SND \
../common/media/ImgF/ImgF:MEDIA/ImgF/ImgF \
../common/media/ImgF/cEdg.obj:MEDIA/ImgF/cEdg.obj \
../common/media/ImgF/dither.obj:MEDIA/ImgF/dither.obj \
../common/media/ImgF/invSol.obj:MEDIA/ImgF/invSol.obj \
settings/network.ini:SETTINGS/NETWORK.INI \
../common/network/ftpd.ini:NETWORK/FTPD.INI \
../common/network/users.ini:NETWORK/USERS.INI \
#end of list
ifeq ($(BUILD_TYPE),rus)
OTHER_FILES:=$(OTHER_FILES) \
pipetka:PIPETKA \
File|Managers/kfar.ini:File|Managers/KFAR.INI \
games/appdata.dat:GAMES/APPDATA.DAT games/ataka:GAMES/ATAKA \
games/basekurs.kla:GAMES/BASEKURS.KLA \
games/padenie:GAMES/PADENIE \
games/whowtbam:GAMES/WHOWTBAM \
#end of list
else
OTHER_FILES:=$(OTHER_FILES) \
../common/File|Managers/kfar.ini:File|Managers/KFAR.INI \
#end of list
endif
#3d/logio.bmp:3D/LOGIO.BMP 3d/cubetext:3D/CUBETEXT
# Generate skins list understandable by gnu make
Makefile.skins: $(REPOSITORY)/skins/authors.txt $(REPOSITORY)/data/generate_makefile_skins.sh
cut -f1 $< | $(SHELL) $(REPOSITORY)/data/generate_makefile_skins.sh > $@
include Makefile.skins
# Extra targets for the distribution kit and LiveCD image in the syntax of mkisofs
EXTRA:=\
/=distr_data/autorun.inf \
/=distr_data/KolibriOS_icon.ico \
Skins/=$(REPOSITORY)/skins/authors.txt \
Docs/stack.txt=docs/STACK.TXT \
HD_Load/9x2klbr/=distr_data/9x2klbr.exe \
HD_Load/9x2klbr/=../common/HD_load/9x2klbr/LDKLBR.VXD \
HD_Load/MeOSLoad/=distr_data/MeOSload.com \
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/=distr_data/mtldr \
HD_Load/mtldr/=$(PROGS)/hd_load/mtldr/vista_install.bat \
HD_Load/mtldr/=$(PROGS)/hd_load/mtldr/vista_remove.bat \
HD_Load/=distr_data/mtldr_install.exe \
HD_Load/memdisk=../common/HD_load/memdisk \
HD_Load/USB_Boot/=distr_data/BOOT_F32.BIN \
HD_Load/USB_Boot/=distr_data/MTLD_F32 \
HD_Load/USB_Boot/=distr_data/inst.exe \
HD_Load/USB_Boot/=distr_data/setmbr.exe \
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 \
HD_Load/USB_boot_old/MeOSload.com=distr_data/MeOSload_for_usb_boot_old.com \
HD_Load/USB_boot_old/enable.exe=distr_data/enable_for_usb_boot_old.exe \
games/pig=../common/games/pig \
games/soko/soko=games/soko \
games/soko=../common/games/soko/ \
kolibrios/emul/dosbox=../common/emul/DosBox \
kolibrios/emul/fceu=../common/emul/fceu \
kolibrios/emul/e80/e80=e80 \
kolibrios/emul/gameboy=../common/emul/gameboy \
kolibrios/emul/scummvm=../common/emul/scummvm \
kolibrios/emul/zsnes=../common/emul/zsnes \
kolibrios/games/doom=../common/games/doom \
kolibrios/games/fara/fara=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=distr_data/zsea \
kolibrios/media/zsea/plugins/cnv_bmp.obj=distr_data/cnv_bmp.obj \
kolibrios/media/zsea/plugins/cnv_gif.obj=distr_data/cnv_gif.obj \
kolibrios/media/zsea/plugins/cnv_jpeg.obj=distr_data/cnv_jpeg.obj \
kolibrios/media/zsea/plugins/convert.obj=distr_data/convert.obj \
kolibrios/media/zsea/plugins/rotate.obj=distr_data/rotate.obj \
kolibrios/media/zsea/plugins/scaling.obj=distr_data/scaling.obj \
kolibrios/media/zsea/zsea.ini=$(REPOSITORY)/programs/media/zsea/zSea.ini \
kolibrios/media/zsea/buttons/buttons.png=$(REPOSITORY)/programs/media/zsea/buttons.png \
#end of list
ifeq ($(BUILD_TYPE),rus)
EXTRA:=$(EXTRA) \
Docs/cp866/config.txt=docs/CONFIG.TXT \
Docs/cp866/gnu.txt=docs/GNU.TXT \
Docs/cp866/history.txt=docs/HISTORY.TXT \
Docs/cp866/hot_keys.txt=docs/HOT_KEYS.TXT \
Docs/cp866/install.txt=docs/INSTALL.TXT \
Docs/cp866/readme.txt=docs/README.TXT \
Docs/cp866/sysfuncr.txt=docs/SYSFUNCR.TXT \
Docs/cp1251/config.txt=docs/CONFIG.WIN.TXT \
Docs/cp1251/gnu.txt=docs/GNU.WIN.TXT \
Docs/cp1251/history.txt=docs/HISTORY.WIN.TXT \
Docs/cp1251/hot_keys.txt=docs/HOT_KEYS.WIN.TXT \
Docs/cp1251/install.txt=docs/INSTALL.WIN.TXT \
Docs/cp1251/readme.txt=docs/README.WIN.TXT \
Docs/cp1251/sysfuncr.txt=docs/SYSFUNCR.WIN.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=$(REPOSITORY)/programs/media/zsea/Docs/zSea_keys_rus.txt \
#end of list
else
EXTRA:=$(EXTRA) \
Docs/config.txt=docs/CONFIG.TXT \
Docs/copying.txt=docs/COPYING.TXT \
Docs/hot_keys.txt=docs/HOT_KEYS.TXT \
Docs/install.txt=docs/INSTALL.TXT \
Docs/readme.txt=docs/README.TXT \
Docs/sysfuncs.txt=docs/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=$(REPOSITORY)/programs/media/zsea/Docs/zSea_keys_eng.txt \
#end of list
endif
DISTRIBUTION_EXTRA:=\
$(EXTRA) \
/readme.txt=distr_data/readme_distr.txt \
/kolibri.lbl=settings/kolibri.lbl \
#end of list
MKISOFS_EXTRA:=\
$(EXTRA) \
/=distr_data/readme.txt \
/=settings/kolibri.lbl \
#end of list
ifeq ($(BUILD_TYPE),rus)
DISTRIBUTION_EXTRA:=$(DISTRIBUTION_EXTRA) \
/readme_dos.txt=distr_data/readme_dos_distr.txt \
#end of list
MKISOFS_EXTRA:=$(MKISOFS_EXTRA) \
/=distr_data/readme_dos.txt \
#end of list
endif
ifeq ($(BUILD_TYPE),rus)
# Text files which need to be recoded to cp1251 from native aka cp866
RECODE_TEXT_FILES:=\
distr_data/readme.txt:distr_data/readme_dos.txt \
distr_data/readme_distr.txt:distr_data/readme_dos_distr.txt \
docs/CONFIG.WIN.TXT:docs/CONFIG.TXT \
docs/GNU.WIN.TXT:docs/GNU.TXT \
docs/HISTORY.WIN.TXT:docs/HISTORY.TXT \
docs/HOT_KEYS.WIN.TXT:docs/HOT_KEYS.TXT \
docs/INSTALL.WIN.TXT:docs/INSTALL.TXT \
docs/README.WIN.TXT:docs/README.TXT \
docs/SYSFUNCR.WIN.TXT:docs/SYSFUNCR.TXT \
#end of list
endif
# Some macro for convenient work.
# Macros for replacing '|' to escaped space '\ '.
space:=\ #plus space
respace=$(subst |,$(space),$(1))
# Macro for selecting different parts of ':'-separated items.
binarypart=$(word 1,$(subst :, ,$(1)))
imagepart=$(word 2,$(subst :, ,$(1)))
sourcepart=$(word 3,$(subst :, ,$(1)))
parampart=$(word 4,$(subst :, ,$(1)))
# Get file names, possibly with spaces inside, from an item.
# Here $(f) is an item - in fact, macro argument.
fbinary=$(call respace,$(call binarypart,$(f)))
fimage=$(call respace,$(call imagepart,$(f)))
fsource=$(call respace,$(call sourcepart,$(f)))
fparam=$(call respace,$(call parampart,$(f)))
# Add stripped PE files produced by fasm to FASM_NOKPACK_PROGRAMS.
include ../common/Makefile.pestrip
FASM_NOKPACK_PROGRAMS:=$(FASM_NOKPACK_PROGRAMS) \
$(foreach f,$(FASM_PROGRAMS_PESTRIP),$(fbinary).full:-:$(fsource))
$(foreach f,$(FASM_PROGRAMS_PESTRIP),$(eval $(call pestrip_meta_rule,$(fbinary),$(fbinary).full)))
# Define targets for image file.
# Join all the lists above.
targets_full:=$(COPY_FILES) $(FASM_PROGRAMS) $(FASM_PROGRAMS_PESTRIP) $(NASM_PROGRAMS) $(OTHER_FILES) $(CMM_PROGRAMS)
# For each item in the united list call fbinary.
targets:=$(foreach f,$(targets_full),$(fbinary))
# Define a command for copying a file inside the image.
# mcopy_command is a macro with two parameters,
# local file name $(1) and image file name $(2).
# Note that spaces in these have to be escaped with backslashes.
mcopy_command=mcopy -moi $(BUILD_DIR)/kolibri.img $(1) ::$(2)
# Specialize a previous command for an item $(f) in one of lists.
mcopy_item_command=$(call mcopy_command,$(fbinary),$(fimage))
# Join all $(mcopy_item_command) for all items,
# append newline after each item.
# The first newline character after "define" line and
# the last newline character before "endef" line get away
# with define/endef, so we make three newline characters,
# that is two empty lines, in order to get one in $(newline).
define newline
endef
mcopy_all_items:=$(foreach f,$(targets_full),$(mcopy_item_command)$(newline))
# add skins to MKISOFS_EXTRA and DISTRIBUTION_EXTRA
allskins:=$(foreach f,$(SKIN_SOURCES),$(call imagepart,$(f))=$(call binarypart,$(f)))
MKISOFS_EXTRA:=$(MKISOFS_EXTRA) $(allskins)
DISTRIBUTION_EXTRA:=$(DISTRIBUTION_EXTRA) $(allskins)
# dependencies of MKISOFS_EXTRA; we iterate through $(MKISOFS_EXTRA),
# substitute "=" with space, get the 2nd word and join all results
mkisofs_extra_targets:=$(call respace,$(foreach f,$(MKISOFS_EXTRA),$(word 2,$(subst =, ,$(f)))))
distribution_extra_targets:=$(call respace,$(foreach f,$(DISTRIBUTION_EXTRA),$(word 2,$(subst =, ,$(f)))))
# Define a command for creating a symlink for an item in DISTRIBUTION_EXTRA.
extra_item_dst=distribution_kit/$(word 1,$(subst =, ,$(f)))
extra_item_src=$(word 2,$(subst =, ,$(f)))
makelink_item_command=$(if $(notdir $(extra_item_src)), \
ln -sr $(extra_item_src) $(extra_item_dst), \
ln -sr $(extra_item_src)* $(extra_item_dst) \
)
# Join all $(makelink_command) for all items from DISTRIBUTION_EXTRA.
make_distribution_links:=$(foreach f,$(DISTRIBUTION_EXTRA),$(makelink_item_command)$(newline))
# Define a command for creating all directories for DISTRIBUTION_EXTRA.
# Note that $(sort) removes duplicate entries.
distribution_dirs:=$(sort $(foreach f,$(DISTRIBUTION_EXTRA),$(dir distribution_kit/$(word 1,$(subst =, ,$(f))))))
make_distribution_dirs:=$(foreach f,$(distribution_dirs),mkdir -p $(f)$(newline))
# The first goal: floppy image.
$(BUILD_DIR)/kolibri.img: $(BUILD_DIR)/.dir \
Makefile ../common/Makefile.main \
$(BUILD_DIR)/boot_fat12.bin \
$(targets)
ifeq ($(BUILD_TYPE),rus)
str=`LANG=ru_RU.utf8 date -u +"[автосборка %d %b %Y %R, r$(REV)]"|iconv -f utf8 -t cp866`; \
echo -n $$str|dd of=kernel.mnt bs=1 seek=`expr 279 - length "$$str"` conv=notrunc 2>/dev/null
else
str=`date -u +"[auto-build %d %b %Y %R, r$(REV)]"`; \
echo -n $$str|dd of=kernel.mnt bs=1 seek=`expr 279 - length "$$str"` conv=notrunc 2>/dev/null
endif
dd if=/dev/zero of=$(BUILD_DIR)/kolibri.img count=2880 bs=512 2>&1
mformat -f 1440 -i $(BUILD_DIR)/kolibri.img ::
dd if=$(BUILD_DIR)/boot_fat12.bin of=$(BUILD_DIR)/kolibri.img count=1 bs=512 conv=notrunc 2>&1
mmd -i $(BUILD_DIR)/kolibri.img ::3D
mmd -i $(BUILD_DIR)/kolibri.img ::DEMOS
mmd -i $(BUILD_DIR)/kolibri.img ::DEVELOP
mmd -i $(BUILD_DIR)/kolibri.img ::DEVELOP/INFO
mmd -i $(BUILD_DIR)/kolibri.img ::DRIVERS
mmd -i $(BUILD_DIR)/kolibri.img ::File\ Managers
mmd -i $(BUILD_DIR)/kolibri.img ::FONTS
mmd -i $(BUILD_DIR)/kolibri.img ::GAMES
mmd -i $(BUILD_DIR)/kolibri.img ::LIB
mmd -i $(BUILD_DIR)/kolibri.img ::MEDIA
mmd -i $(BUILD_DIR)/kolibri.img ::MEDIA/ImgF
mmd -i $(BUILD_DIR)/kolibri.img ::NETWORK
mmd -i $(BUILD_DIR)/kolibri.img ::SETTINGS
$(mcopy_all_items)
# The second goal: LiveCD image.
$(BUILD_DIR)/kolibri.iso: $(BUILD_DIR)/kolibri.img $(mkisofs_extra_targets)
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 "KolibriOS r$(REV)" -sysid "KOLIBRI" \
-iso-level 3 -o $(BUILD_DIR)/kolibri.iso $(BUILD_DIR)/kolibri.img $(call respace,$(MKISOFS_EXTRA)) 2>&1
# The third goal: distribution list.
$(BUILD_DIR)/distr.lst: $(BUILD_DIR)/kolibri.img $(distribution_extra_targets)
rm -rf distribution_kit
$(call respace,$(make_distribution_dirs))
ln -sr $(BUILD_DIR)/kolibri.img distribution_kit/kolibri.img
$(call respace,$(make_distribution_links))
touch $(BUILD_DIR)/distr.lst
# Special targets to modify behaviour of make.
.DELETE_ON_ERROR:
.SUFFIXES: # disable all predefined rules
# The floppy bootsector.
$(BUILD_DIR)/boot_fat12.bin: $(KERNEL)/bootloader/boot_fat12.asm $(KERNEL)/bootloader/floppy1440.inc
fasm $(KERNEL)/bootloader/boot_fat12.asm $(BUILD_DIR)/boot_fat12.bin
$(BUILD_DIR)/.dir 3d/.dir demos/.dir develop/.dir develop/info/.dir drivers/.dir fonts/.dir \
games/.dir lib/.dir media/.dir network/.dir settings/.dir allskins/.dir distr_data/.dir .deps/.dir:
mkdir -p $(dir $@)
touch $@
develop/info/.dir: develop/.dir
File\ Managers/.dir:
mkdir -p "File Managers"
touch "File Managers/.dir"
# extra dependency for mtldr_install.exe
distr_data/mtldr_install.exe: mtldr_for_installer
# FASM black magic goes to Makefile.fasm.
include ../common/Makefile.fasm
# Similar for NASM.
include ../common/Makefile.nasm
# Similar for copying files.
include ../common/Makefile.copy
ifeq ($(BUILD_TYPE),rus)
# Special rules for copying sysfuncr.txt and fasm.txt - they aren't directly included in the image.
docpack: $(DOCDIR)SYSFUNCR.TXT $(DOCDIR)FASM.TXT
$(DOCDIR)SYSFUNCR.TXT: $(KERNEL)/docs/sysfuncr.txt
iconv -f utf-8 -t cp866 $(KERNEL)/docs/sysfuncr.txt > $(DOCDIR)SYSFUNCR.TXT
else
# Special rules for copying sysfuncs.txt and fasm.txt - they aren't directly included in the image.
docpack: $(DOCDIR)SYSFUNCS.TXT $(DOCDIR)FASM.TXT
$(DOCDIR)SYSFUNCS.TXT: $(KERNEL)/docs/sysfuncs.txt
cp $(KERNEL)/docs/sysfuncs.txt $(DOCDIR)SYSFUNCS.TXT
endif
$(DOCDIR)FASM.TXT: $(PROGS)/develop/fasm/trunk/fasm.txt
cp $(PROGS)/develop/fasm/trunk/fasm.txt $(DOCDIR)FASM.TXT
# Similar for C--.
include ../common/Makefile.cmm
ifeq ($(BUILD_TYPE),rus)
# Recode some text files from native encoding aka cp866 to cp1251
define recode_meta_rule
$(1): $(2)
iconv -f cp866 -t cp1251 "$$<" > "$$@"
endef
$(foreach f, $(RECODE_TEXT_FILES), $(eval $(call recode_meta_rule,$(fbinary),$(fimage))))
endif
# Sorry, even black magic seems to be insufficient for
# auto-handling all subtle effects. So we just define
# command lines for compiling and linking, and
# maintain the list of sources and objects by hand.
include ../common/Makefile.msvc
# Rules for table
table: .obj.table/table.exe
$(msvc_final)
TABLE_OBJECTS:=.obj.table/calc.obj .obj.table/func.obj .obj.table/hello.obj \
.obj.table/KosFile.obj .obj.table/kosSyst.obj .obj.table/math2.obj \
.obj.table/mcsmemm.obj .obj.table/parser.obj
TABLE_H_FILES:=$(wildcard $(PROGS)/other/table/*.h)
.obj.table/table.exe: $(TABLE_OBJECTS)
$(msvc_link)
$(TABLE_OBJECTS): .obj.table/%.obj: $(PROGS)/other/table/%.cpp $(TABLE_H_FILES) ../common/Makefile.msvc | .obj.table
$(msvc_compile)
.obj.table:
mkdir -p .obj.table
# Rules for graph
graph: .obj.graph/graph.exe
$(msvc_final)
GRAPH_CPP_OBJECTS:=.obj.graph/func.obj .obj.graph/hello.obj .obj.graph/kolibri.obj \
.obj.graph/KosFile.obj .obj.graph/kosSyst.obj .obj.graph/math2.obj \
.obj.graph/mcsmemm.obj .obj.graph/parser.obj
GRAPH_C_OBJECTS:=.obj.graph/string.obj
GRAPH_H_FILES:=$(wildcard $(PROGS)/other/graph/*.h)
GRAPH_FASM_OBJECTS:=.obj.graph/memcpy.obj .obj.graph/memset.obj
.obj.graph/graph.exe: $(GRAPH_CPP_OBJECTS) $(GRAPH_C_OBJECTS) $(GRAPH_FASM_OBJECTS)
$(msvc_link)
$(GRAPH_CPP_OBJECTS): .obj.graph/%.obj: $(PROGS)/other/graph/%.cpp $(GRAPH_H_FILES) ../common/Makefile.msvc | .obj.graph
$(msvc_compile)
$(GRAPH_C_OBJECTS): .obj.graph/%.obj: $(PROGS)/other/graph/%.c $(GRAPH_H_FILES) ../common/Makefile.msvc | .obj.graph
$(msvc_compile)
$(GRAPH_FASM_OBJECTS): .obj.graph/%.obj: $(PROGS)/other/graph/%.asm ../common/Makefile.msvc | .obj.graph
fasm $< $@
.obj.graph:
mkdir -p .obj.graph
# Rules for kosilka
games/kosilka: .obj.kosilka/kosilka.exe
$(msvc_final)
KOSILKA_OBJECTS:=.obj.kosilka/kosilka.obj .obj.kosilka/KosFile.obj .obj.kosilka/kosSyst.obj .obj.kosilka/mcsmemm.obj
KOSILKA_H_FILES:=$(PROGS)/games/kosilka/*.h
.obj.kosilka/kosilka.exe: $(KOSILKA_OBJECTS)
$(msvc_link)
$(KOSILKA_OBJECTS): .obj.kosilka/%.obj: $(PROGS)/games/kosilka/%.cpp $(KOSILKA_H_FILES) ../common/Makefile.msvc | .obj.kosilka
$(msvc_compile)
.obj.kosilka:
mkdir -p .obj.kosilka
include ../common/Makefile.gcc
# Rules for shell
shell: .obj.shell/start.o .obj.shell/shell.o .obj.shell/kolibri.o .obj.shell/stdlib.o .obj.shell/string.o .obj.shell/ctype.o \
$(PROGS)/system/shell/kolibri.ld
$(call gcc_link,$(PROGS)/system/shell/kolibri.ld)
.obj.shell/shell.o: $(PROGS)/system/shell/shell.c \
$(PROGS)/system/shell/all.h \
$(PROGS)/system/shell/system/*.h \
$(PROGS)/system/shell/cmd/*.c \
$(PROGS)/system/shell/modules/*.c \
$(PROGS)/system/shell/locale/rus/globals.h \
../common/Makefile.gcc | .obj.shell
$(gcc_compile)
.obj.shell/kolibri.o .obj.shell/stdlib.o .obj.shell/string.o .obj.shell/ctype.o: .obj.shell/%.o: \
$(PROGS)/system/shell/system/%.c $(PROGS)/system/shell/system/*.h \
../common/Makefile.gcc | .obj.shell
$(gcc_compile)
.obj.shell/start.o: $(PROGS)/system/shell/start.asm | .obj.shell
fasm $< $@
.obj.shell:
mkdir -p .obj.shell
# Rules for e80
E80DIR=$(PROGS)/emulator/e80/trunk
e80: .obj.e80/start.o .obj.e80/kolibri.o .obj.e80/stdlib.o .obj.e80/string.o .obj.e80/z80.o .obj.e80/e80.o
$(call gcc_link,$(E80DIR)/kolibri.ld)
.obj.e80/e80.o: $(E80DIR)/e80.c $(E80DIR)/48.h \
$(E80DIR)/system/*.h $(E80DIR)/system/msgbox.c \
$(E80DIR)/z80/z80.h ../common/Makefile.gcc | .obj.e80
$(gcc_compile)
.obj.e80/kolibri.o .obj.e80/stdlib.o .obj.e80/string.o: .obj.e80/%.o: \
$(E80DIR)/system/%.c $(E80DIR)/system/*.h ../common/Makefile.gcc | .obj.e80
$(gcc_compile)
.obj.e80/z80.o: $(E80DIR)/z80/z80.c $(E80DIR)/z80/*
$(gcc_compile)
.obj.e80/start.o: $(E80DIR)/asm_code.asm | .obj.e80
fasm $< $@
.obj.e80:
mkdir -p .obj.e80
# Rules for sdk/sound, used by media/ac97snd
SOUNDDIR=$(PROGS)/develop/sdk/trunk/sound/src
SOUND_OBJECTS:=$(patsubst $(SOUNDDIR)/%.asm,.sdk/%.obj,$(wildcard $(SOUNDDIR)/*.asm))
SOUND_INC_FILES:=$(wildcard $(SOUNDDIR)/*.inc)
.sdk/sound.lib: $(SOUND_OBJECTS)
win32-link /lib /out:$@ $^
$(SOUND_OBJECTS): .sdk/%.obj: $(SOUNDDIR)/%.asm $(SOUND_INC_FILES) | .sdk
fasm $< $@
.sdk:
mkdir -p .sdk
# Rules for media/ac97snd
AC97DIR=$(PROGS)/media/ac97snd
media/ac97snd: .obj.ac97snd/ac97snd.exe
$(msvc_final)
.obj.ac97snd/ac97snd.exe: .obj.ac97snd/ac97wav.obj .obj.ac97snd/crt.obj .obj.ac97snd/k_lib.obj \
.obj.ac97snd/mpg.lib .sdk/sound.lib .obj.ac97snd/ufmod.obj
$(msvc_link)
.obj.ac97snd/ac97wav.obj: $(AC97DIR)/ac97snd/ac97wav.c \
$(AC97DIR)/kolibri.h $(AC97DIR)/ac97snd/ac97wav.h $(AC97DIR)/mpg/mpg123.h \
$(AC97DIR)/sound.h $(AC97DIR)/ufmod-codec.h ../common/Makefile.msvc | .obj.ac97snd
$(msvc_compile)
.obj.ac97snd/crt.obj: $(AC97DIR)/ac97snd/crt.c $(AC97DIR)/ac97snd/crt.h ../common/Makefile.msvc | .obj.ac97snd
$(msvc_compile)
.obj.ac97snd/k_lib.obj: $(AC97DIR)/ac97snd/k_lib.asm $(AC97DIR)/ac97snd/proc32.inc | .obj.ac97snd
fasm $< $@
.obj.ac97snd/ufmod.obj: $(AC97DIR)/ufmod-config.asm | .obj.ac97snd
fasm $< $@ -s .deps/ac97snd-ufmod.fas
prepsrc .deps/ac97snd-ufmod.fas /dev/stdout | \
perl -n -e 's|\\|/|g;s| |\\ |g;push @a,$$1 if/^;include\\ \x27(.*?)\x27/;' \
-e 'END{$$a=join " \\\n ",@a;print "$@: $$a\n$$a:\n"}' > .deps/ac97snd-ufmod.Po
-include .deps/ac97snd-ufmod.Po
AC97SND_MPG_C_FILES:=$(wildcard $(AC97DIR)/mpg/*.c)
AC97SND_MPG_H_FILES:=$(wildcard $(AC97DIR)/mpg/*.h)
AC97SND_MPG_C_OBJECTS:=$(patsubst $(AC97DIR)/mpg/%.c,.obj.ac97snd/%.o,$(AC97SND_MPG_C_FILES))
.obj.ac97snd/mpg.lib: $(AC97SND_MPG_C_OBJECTS) .obj.ac97snd/pow.obj
win32-link /lib /ltcg /out:$@ $^
$(AC97SND_MPG_C_OBJECTS): .obj.ac97snd/%.o: $(AC97DIR)/mpg/%.c $(AC97SND_MPG_H_FILES) ../common/Makefile.msvc | .obj.ac97snd
$(msvc_compile)
.obj.ac97snd/pow.obj: $(AC97DIR)/mpg/pow.asm $(AC97DIR)/mpg/proc32.inc | .obj.ac97snd
fasm $< $@
.obj.ac97snd:
mkdir -p .obj.ac97snd
# Rules for atikms.dll
# Use Makefile from $(REPOSITORY)/drivers/ddk and $(REPOSITORY)/drivers/video/drm/radeon
# However, dependencies must be duplicated - I don't know how to avoid this
# without need to rebuild kolibri.img at every iteration...
# Note that we are going to write in the directory shared
# between all Makefiles, so we need locked operations.
drivers/atikms.dll: $(REPOSITORY)/drivers/video/drm/radeon/atikms.dll drivers/.dir
kpack --nologo $< $@
$(REPOSITORY)/drivers/video/drm/radeon/atikms.dll: $(REPOSITORY)/drivers/video/drm/radeon/Makefile.lto
flock $(REPOSITORY)/drivers/video/drm/radeon/.lock \
$(MAKE) CC=win32-gcc45 AS=win32-as LD=win32-ld AR=win32-ar FASM=fasm -C $(REPOSITORY)/drivers/video/drm/radeon -f Makefile.lto
$(REPOSITORY)/drivers/ddk/libddk.a: $(REPOSITORY)/drivers/ddk/Makefile
flock $(REPOSITORY)/drivers/ddk/.lock \
$(MAKE) CC=win32-gcc45 AS=win32-as LD=win32-ld AR=win32-ar FASM=fasm -C $(REPOSITORY)/drivers/ddk libddk.a
$(REPOSITORY)/drivers/ddk/libcore.a: $(REPOSITORY)/drivers/ddk/Makefile
flock $(REPOSITORY)/drivers/ddk/.lock \
$(MAKE) CC=win32-gcc45 AS=win32-as LD=win32-ld AR=win32-ar FASM=fasm -C $(REPOSITORY)/drivers/ddk libcore.a
# dependencies
$(REPOSITORY)/drivers/video/drm/radeon/atikms.dll: \
$(REPOSITORY)/drivers/video/drm/radeon/atikms.lds \
$(REPOSITORY)/drivers/ddk/libddk.a \
$(REPOSITORY)/drivers/ddk/libcore.a \
$(REPOSITORY)/drivers/video/drm/radeon/*.[Sch] \
$(REPOSITORY)/drivers/video/drm/radeon/*.asm \
$(REPOSITORY)/drivers/video/drm/radeon/Makefile \
$(REPOSITORY)/drivers/video/drm/radeon/firmware/*.bin \
$(REPOSITORY)/drivers/include/*.h \
$(REPOSITORY)/drivers/include/*/*.h \
$(REPOSITORY)/drivers/include/*/*/*.h \
$(REPOSITORY)/drivers/include/*/*/*/*.h
$(REPOSITORY)/drivers/ddk/libddk.a: \
$(REPOSITORY)/drivers/ddk/*/* \
$(REPOSITORY)/drivers/include/*.h \
$(REPOSITORY)/drivers/include/*/*.h \
$(REPOSITORY)/drivers/include/*/*/*.h \
$(REPOSITORY)/drivers/include/*/*/*/*.h
$(REPOSITORY)/drivers/ddk/libcore.a: \
$(REPOSITORY)/drivers/ddk/core.S

View File

@ -1,13 +0,0 @@
define msvc_compile
win32-cl /c /O2 /Os /Oy /GF /GS- /GR- /EHs-c- /fp:fast /GL /QIfist /Gr /DAUTOBUILD /Fo$@ Z:$< >&2
endef
define msvc_link
win32-link /section:.bss,E /fixed:no /subsystem:native \
/merge:.data=.text /merge:.rdata=.text /merge:.1seg=.text \
/entry:crtStartUp /out:$@ /ltcg /nodefaultlib \
$(addprefix Z:,$^) >&2
endef
define msvc_final
EXENAME=$< fasm doexe2.asm "$@"
kpack --nologo "$@"
endef

View File

@ -1,16 +0,0 @@
# This is similar to Makefile.fasm, look there for comments.
define nasm_meta_rule
.deps/$(4).Po: $(2) ../common/Makefile.nasm .deps/.dir
nasm -I$$(dir $(2)) -o "$(1)" -M $$< > .deps/$(4).Tpo 2>/dev/null; \
if [ $$$$? -eq 0 ]; then perl -ln -e 'next unless $$$$_;' \
-e 'm/((.*): )?(.*)/;$$$$a=$$$$2 if $$$$2;push @b,$$$$3;' \
-e 'END{$$$$b=join "\n",@b;print "$$$$a .deps/$(4).Po: $$$$b\n$$$$b:"}' \
.deps/$(4).Tpo > .deps/$(4).Po; fi
rm -f .deps/$(4).Tpo
$(1): $(2) ../common/Makefile.nasm $$(call respace,$$(addsuffix .dir,$(3)))
nasm -I$$(dir $(2)) -o "$$@" $$<
kpack --nologo "$$@"
-include .deps/$(4).Po
endef
$(foreach f,$(NASM_PROGRAMS),$(eval $(call nasm_meta_rule,$(fbinary),$(fsource),$(binarydir),$(progname))))

View File

@ -1,11 +0,0 @@
# This is not a independent Makefile; it is auxiliary file
# included from main Makefile.
# The arguments of macro pestrip_meta_rule:
# $(1) = name of stripped file,
# $(2) = name of input file
define pestrip_meta_rule
$(1): $(2) ../common/Makefile.pestrip ../common/pestrip.asm
EXENAME="$$<" fasm ../common/pestrip.asm "$$@"
kpack --nologo "$$@"
endef

View File

@ -1,2 +0,0 @@
BUILD_TYPE=eng
include ../common/Makefile.main

View File

@ -1 +0,0 @@
lang fix en

View File

@ -1 +0,0 @@
%define lang 'en'

1
data/eng/tup.config Normal file
View File

@ -0,0 +1 @@
CONFIG_LANG=en

View File

@ -1,2 +0,0 @@
BUILD_TYPE=et
include ../common/Makefile.main

View File

@ -1 +0,0 @@
lang fix et

View File

@ -1 +0,0 @@
%define lang 'et'

1
data/et/tup.config Normal file
View File

@ -0,0 +1 @@
CONFIG_LANG=et

View File

@ -1,26 +0,0 @@
#!/bin/sh
echo SKIN_SOURCES:=\\
while read skinname
do
skinpath=../../skins/_old/"$skinname"
for f in $skinpath/*.{asm,ASM}
do
if [ ! -f "$f" ]; then continue; fi
if expr "$f" : '.*\.dtp' > /dev/null; then continue; fi
echo -n allskins/$skinname.skn | sed 's/ /|/g'
echo -n ':Skins/:'
echo -n $f | sed 's/ /|/g'
echo " \\"
done
for f in ../../skins/_old/"$skinname"/*/*.{asm,ASM}
do
if [ ! -f "$f" ]; then continue; fi
if expr "$f" : '.*\.dtp' > /dev/null; then continue; fi
g=`basename "$(dirname "$f")"`
echo -n allskins/$g.skn | sed 's/ /|/g'
echo -n ':Skins/:'
echo -n $f | sed 's/ /|/g'
echo " \\"
done
done
echo '# end of list'

View File

@ -1,2 +0,0 @@
BUILD_TYPE=it
include ../common/Makefile.main

View File

@ -1 +0,0 @@
lang fix it

View File

@ -1 +0,0 @@
%define lang 'it'

1
data/it/tup.config Normal file
View File

@ -0,0 +1 @@
CONFIG_LANG=it

View File

@ -1,2 +0,0 @@
BUILD_TYPE=rus
include ../common/Makefile.main

View File

@ -1 +0,0 @@
lang fix ru

View File

@ -1 +0,0 @@
%define lang 'ru'

1
data/rus/tup.config Normal file
View File

@ -0,0 +1 @@
CONFIG_LANG=ru

View File

@ -1,2 +0,0 @@
BUILD_TYPE=sp
include ../common/Makefile.main

View File

@ -1 +0,0 @@
lang fix sp

View File

@ -1 +0,0 @@
%define lang 'sp'

1
data/sp/tup.config Normal file
View File

@ -0,0 +1 @@
CONFIG_LANG=sp

3
drivers/Tupfile.lua Normal file
View File

@ -0,0 +1,3 @@
if tup.getconfig("NO_FASM") ~= "" then return end
ROOT = ".."
tup.rule("sceletone.asm", "fasm %f %o " .. tup.getconfig("PESTRIP_CMD") .. tup.getconfig("KPACK_CMD"), "%B.sys")

View File

@ -0,0 +1,3 @@
if tup.getconfig("NO_FASM") ~= "" then return end
ROOT = "../.."
tup.foreach_rule("*.asm", "fasm %f %o " .. tup.getconfig("PESTRIP_CMD") .. tup.getconfig("KPACK_CMD"), "%B.sys")

View File

@ -0,0 +1,3 @@
if tup.getconfig("NO_FASM") ~= "" then return end
ROOT = "../../.."
tup.rule("infinity.asm", "fasm %f %o " .. tup.getconfig("PESTRIP_CMD") .. tup.getconfig("KPACK_CMD"), "%B.sys")

View File

@ -0,0 +1,3 @@
if tup.getconfig("NO_FASM") ~= "" then return end
ROOT = "../../.."
tup.rule("intel_hda.asm", "fasm %f %o " .. tup.getconfig("PESTRIP_CMD") .. tup.getconfig("KPACK_CMD"), "%B.sys")

View File

@ -0,0 +1,3 @@
if tup.getconfig("NO_FASM") ~= "" then return end
ROOT = "../../.."
tup.rule("sb16.asm", "fasm %f %o " .. tup.getconfig("PESTRIP_CMD") .. tup.getconfig("KPACK_CMD"), "%B.sys")

3
drivers/disk/Tupfile.lua Normal file
View File

@ -0,0 +1,3 @@
if tup.getconfig("NO_FASM") ~= "" then return end
ROOT = "../.."
tup.rule("tmpdisk.asm", "fasm %f %o " .. tup.getconfig("PESTRIP_CMD") .. tup.getconfig("KPACK_CMD"), "%B.sys")

View File

@ -0,0 +1,3 @@
if tup.getconfig("NO_FASM") ~= "" then return end
ROOT = "../.."
tup.foreach_rule("*.asm", "fasm %f %o " .. tup.getconfig("PESTRIP_CMD") .. tup.getconfig("KPACK_CMD"), "%B.sys")

View File

@ -0,0 +1,3 @@
if tup.getconfig("NO_FASM") ~= "" then return end
ROOT = "../.."
tup.rule("commouse.asm", "fasm %f %o " .. tup.getconfig("PESTRIP_CMD") .. tup.getconfig("KPACK_CMD"), "%B.sys")

View File

@ -0,0 +1,3 @@
if tup.getconfig("NO_FASM") ~= "" then return end
ROOT = "../../../.."
tup.rule("ps2mouse.asm", "fasm %f %o " .. tup.getconfig("PESTRIP_CMD") .. tup.getconfig("KPACK_CMD"), "%B.sys")

3
drivers/usb/Tupfile.lua Normal file
View File

@ -0,0 +1,3 @@
if tup.getconfig("NO_FASM") ~= "" then return end
ROOT = "../.."
tup.foreach_rule("*.asm", "fasm %f %o " .. tup.getconfig("PESTRIP_CMD") .. tup.getconfig("KPACK_CMD"), "%B.sys")

View File

@ -0,0 +1,3 @@
if tup.getconfig("NO_FASM") ~= "" then return end
ROOT = "../../.."
tup.rule("usbftdi.asm", "fasm %f %o " .. tup.getconfig("PESTRIP_CMD") .. tup.getconfig("KPACK_CMD"), "%B.sys")

View File

@ -0,0 +1,3 @@
if tup.getconfig("NO_FASM") ~= "" then return end
ROOT = "../../.."
tup.rule("usbhid.asm", "fasm %f %o " .. tup.getconfig("PESTRIP_CMD") .. tup.getconfig("KPACK_CMD"), "%B.sys")

View File

@ -0,0 +1,3 @@
if tup.getconfig("NO_FASM") ~= "" then return end
ROOT = "../.."
tup.foreach_rule("*.asm", "fasm %f %o " .. tup.getconfig("PESTRIP_CMD") .. tup.getconfig("KPACK_CMD"), "%B.sys")

3
kernel/trunk/Tupfile.lua Normal file
View File

@ -0,0 +1,3 @@
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("echo lang fix " .. ((tup.getconfig("LANG") == "") and "en" or tup.getconfig("LANG")) .. " > %o", {"lang.inc"})
tup.rule({"kernel.asm", extra_inputs = {"lang.inc"}}, "fasm -m 65536 %f %o " .. tup.getconfig("KERPACK_CMD"), "kernel.mnt")

View File

@ -0,0 +1,3 @@
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("echo lang fix " .. ((tup.getconfig("LANG") == "") and "en" or tup.getconfig("LANG")) .. " > %o", {"lang.inc"})
tup.rule({"boot_fat12.asm", extra_inputs = {"lang.inc"}}, "fasm %f %o", "boot_fat12.bin")

View File

@ -0,0 +1,6 @@
if tup.getconfig("NO_CMM") ~= "" then return end
if tup.getconfig("LANG") == "ru"
then C_LANG = "LANG_RUS"
else C_LANG = "LANG_ENG" -- this includes default case without config
end
tup.rule("appearance.c", "c-- /D=AUTOBUILD /D=$(C_LANG) %f" .. tup.getconfig("KPACK_CMD"), "appearance.com")

View File

@ -0,0 +1,6 @@
if tup.getconfig("NO_CMM") ~= "" then return end
if tup.getconfig("LANG") == "ru"
then C_LANG = "LANG_RUS"
else C_LANG = "LANG_ENG" -- this includes default case without config
end
tup.rule("WebView.c", "c-- /D=AUTOBUILD /D=$(C_LANG) %f" .. tup.getconfig("KPACK_CMD"), "WebView.com")

View File

@ -0,0 +1,6 @@
if tup.getconfig("NO_CMM") ~= "" then return end
if tup.getconfig("LANG") == "ru"
then C_LANG = "LANG_RUS"
else C_LANG = "LANG_ENG" -- this includes default case without config
end
tup.rule("dicty.c", "c-- /D=AUTOBUILD /D=$(C_LANG) %f" .. tup.getconfig("KPACK_CMD"), "dicty.com")

View File

@ -0,0 +1,6 @@
if tup.getconfig("NO_CMM") ~= "" then return end
if tup.getconfig("LANG") == "ru"
then C_LANG = "LANG_RUS"
else C_LANG = "LANG_ENG" -- this includes default case without config
end
tup.rule("Downloader.c", "c-- /D=AUTOBUILD /D=$(C_LANG) %f" .. tup.getconfig("KPACK_CMD"), "Downloader.com")

View File

@ -0,0 +1,6 @@
if tup.getconfig("NO_CMM") ~= "" then return end
if tup.getconfig("LANG") == "ru"
then C_LANG = "LANG_RUS"
else C_LANG = "LANG_ENG" -- this includes default case without config
end
tup.rule("end.c", "c-- /D=AUTOBUILD /D=$(C_LANG) %f" .. tup.getconfig("KPACK_CMD"), "end.com")

View File

@ -0,0 +1,6 @@
if tup.getconfig("NO_CMM") ~= "" then return end
if tup.getconfig("LANG") == "ru"
then C_LANG = "LANG_RUS"
else C_LANG = "LANG_ENG" -- this includes default case without config
end
tup.rule("Eolite.c", "c-- /D=AUTOBUILD /D=$(C_LANG) %f" .. tup.getconfig("KPACK_CMD"), "Eolite.com")

View File

@ -0,0 +1,6 @@
if tup.getconfig("NO_CMM") ~= "" then return end
if tup.getconfig("LANG") == "ru"
then C_LANG = "LANG_RUS"
else C_LANG = "LANG_ENG" -- this includes default case without config
end
tup.rule("example.c", "c-- /D=AUTOBUILD /D=$(C_LANG) %f" .. tup.getconfig("KPACK_CMD"), "example.com")

View File

@ -0,0 +1,6 @@
if tup.getconfig("NO_CMM") ~= "" then return end
if tup.getconfig("LANG") == "ru"
then C_LANG = "LANG_RUS"
else C_LANG = "LANG_ENG" -- this includes default case without config
end
tup.rule("game_center.c", "c-- /D=AUTOBUILD /D=$(C_LANG) %f" .. tup.getconfig("KPACK_CMD"), "game_center.com")

View File

@ -0,0 +1,6 @@
if tup.getconfig("NO_CMM") ~= "" then return end
if tup.getconfig("LANG") == "ru"
then C_LANG = "LANG_RUS"
else C_LANG = "LANG_ENG" -- this includes default case without config
end
tup.rule("installer.c", "c-- /D=AUTOBUILD /D=$(C_LANG) %f" .. tup.getconfig("KPACK_CMD"), "installer.com")

View File

@ -0,0 +1,6 @@
if tup.getconfig("NO_CMM") ~= "" then return end
if tup.getconfig("LANG") == "ru"
then C_LANG = "LANG_RUS"
else C_LANG = "LANG_ENG" -- this includes default case without config
end
tup.rule("kolibrin.c", "c-- /D=AUTOBUILD /D=$(C_LANG) %f" .. tup.getconfig("KPACK_CMD"), "kolibrin.com")

View File

@ -0,0 +1,6 @@
if tup.getconfig("NO_CMM") ~= "" then return end
if tup.getconfig("LANG") == "ru"
then C_LANG = "LANG_RUS"
else C_LANG = "LANG_ENG" -- this includes default case without config
end
tup.rule("liza.c", "c-- /D=AUTOBUILD /D=$(C_LANG) %f" .. tup.getconfig("KPACK_CMD"), "liza.com")

View File

@ -0,0 +1,6 @@
if tup.getconfig("NO_CMM") ~= "" then return end
if tup.getconfig("LANG") == "ru"
then C_LANG = "LANG_RUS"
else C_LANG = "LANG_ENG" -- this includes default case without config
end
tup.rule("notify.c", "c-- /D=AUTOBUILD /D=$(C_LANG) %f" .. tup.getconfig("KPACK_CMD"), "notify.com")

View File

@ -0,0 +1,6 @@
if tup.getconfig("NO_CMM") ~= "" then return end
if tup.getconfig("LANG") == "ru"
then C_LANG = "LANG_RUS"
else C_LANG = "LANG_ENG" -- this includes default case without config
end
tup.rule("tmpdisk.c", "c-- /D=AUTOBUILD /D=$(C_LANG) %f" .. tup.getconfig("KPACK_CMD"), "tmpdisk.com")

View File

@ -0,0 +1,2 @@
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("VIEW3DS.ASM", "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "VIEW3DS")

View File

@ -0,0 +1,3 @@
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("echo lang fix " .. ((tup.getconfig("LANG") == "") and "en" or tup.getconfig("LANG")) .. " > lang.inc", {"lang.inc"})
tup.rule({"3DCUBE2.ASM", extra_inputs = {"lang.inc"}}, "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "3DCUBE2")

View File

@ -2480,18 +2480,18 @@ labellen:
;Texture pusck 32*32 256
texpack_gif:
file 'TEXPACK.gif'
file 'texpack.gif'
rb 50
;Ground texture
bmp_texmap:
file 'TEXMAP.bmp'
file 'texmap.bmp'
rb 50
; Ground livel map
gif_file_area5:
file 'MAP.gif' ;level map
file 'map.gif' ;level map
rb 50
rb 8

View File

@ -0,0 +1,3 @@
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("echo lang fix " .. ((tup.getconfig("LANG") == "") and "en" or tup.getconfig("LANG")) .. " > lang.inc", {"lang.inc"})
tup.rule({"3DETX60B.ASM", extra_inputs = {"lang.inc"}}, "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "3DETX60B")

View File

@ -0,0 +1,2 @@
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("3dsheart.asm", "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "3dsheart")

View File

@ -0,0 +1,2 @@
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("3dspiral.asm", "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "3dspiral")

View File

@ -0,0 +1,3 @@
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("echo lang fix " .. ((tup.getconfig("LANG") == "") and "en" or tup.getconfig("LANG")) .. " > lang.inc", {"lang.inc"})
tup.rule({"3DTCUB10.ASM", extra_inputs = {"lang.inc"}}, "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "3DTCUB10")

View File

@ -0,0 +1,2 @@
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("3dwav.asm", "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "3dwav")

View File

@ -0,0 +1,2 @@
if tup.getconfig("NO_NASM") ~= "" then return end
tup.rule("aclock.asm", "nasm -f bin -o %o %f " .. tup.getconfig("KPACK_CMD"), "aclock")

View File

@ -201,7 +201,7 @@ image_end:
;********************************************************************
; uninitialized data
;********************************************************************
section .bss
section .bss align=4
wndColors resb MOS_WNDCOLORS_size
procInfo resb MOS_PROCESSINFO_size

View File

@ -0,0 +1,3 @@
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("echo lang fix " .. ((tup.getconfig("LANG") == "") and "en" or tup.getconfig("LANG")) .. " > lang.inc", {"lang.inc"})
tup.rule({"bcdclk.asm", extra_inputs = {"lang.inc"}}, "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "bcdclk")

View File

@ -0,0 +1,3 @@
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("echo lang fix " .. ((tup.getconfig("LANG") == "") and "en" or tup.getconfig("LANG")) .. " > lang.inc", {"lang.inc"})
tup.rule({"bgitest.asm", extra_inputs = {"lang.inc"}}, "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "bgitest")

View File

@ -0,0 +1,2 @@
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("buddhabrot.asm", "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "buddhabrot")

View File

@ -0,0 +1,3 @@
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("echo lang fix " .. ((tup.getconfig("LANG") == "") and "en" or tup.getconfig("LANG")) .. " > lang.inc", {"lang.inc"})
tup.rule({"colorref.asm", extra_inputs = {"lang.inc"}}, "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "colorref")

View File

@ -0,0 +1,3 @@
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("echo lang fix " .. ((tup.getconfig("LANG") == "") and "en" or tup.getconfig("LANG")) .. " > lang.inc", {"lang.inc"})
tup.rule({"crownscr.asm", extra_inputs = {"lang.inc"}}, "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "crownscr")

View File

@ -0,0 +1,3 @@
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("echo lang fix " .. ((tup.getconfig("LANG") == "") and "en" or tup.getconfig("LANG")) .. " > lang.inc", {"lang.inc"})
tup.rule({"cslide.asm", extra_inputs = {"lang.inc"}}, "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "cslide")

View File

@ -1,24 +1,26 @@
#pragma pack(push, 1)
struct process_table_entry_
{
__u32 cpu_usage __attribute__((packed));
__u16 pos_in_windowing_stack __attribute__((packed));
__u16 win_stack_val_at_ecx __attribute__((packed));
__u16 rez1 __attribute__((packed));
char name[11] __attribute__((packed));
__u8 rez2 __attribute__((packed));
__u32 memstart __attribute__((packed));
__u32 memused __attribute__((packed));
__u32 pid __attribute__((packed));
__u32 winx_start,winy_start __attribute__((packed));
__u32 winx_size,winy_size __attribute__((packed));
__u8 slot __attribute__((packed));
__u8 rez3 __attribute__((packed));
__u32 clarx_start,clary_start __attribute__((packed));
__u32 clarx_size,clary_size __attribute__((packed));
__u8 win_condition __attribute__((packed));
__u8 buf[955] __attribute__((packed));
} __attribute__((packed));
__u32 cpu_usage;
__u16 pos_in_windowing_stack;
__u16 win_stack_val_at_ecx;
__u16 rez1;
char name[11];
__u8 rez2;
__u32 memstart;
__u32 memused;
__u32 pid;
__u32 winx_start,winy_start;
__u32 winx_size,winy_size;
__u8 slot;
__u8 rez3;
__u32 clarx_start,clary_start;
__u32 clarx_size,clary_size;
__u8 win_condition;
__u8 buf[955];
};
#pragma pack(pop)
#define TYPEWIN(D,C,B,A,Y,RR,GG,BB) (D<<31)|(C<<30)|(B<<29)|(A<<28)|(Y<<24)|\
(RR<<16)|(GG<<8)|BB

View File

@ -0,0 +1,7 @@
if tup.getconfig("NO_GCC") ~= "" then return end
HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../.." or tup.getconfig("HELPERDIR")
tup.include(HELPERDIR .. "/use_gcc.lua")
tup.include(HELPERDIR .. "/use_menuetlibc.lua")
tup.include(HELPERDIR .. "/use_tinygl.lua")
compile_gcc{"main.cpp", "fps.cpp"}
link_gcc("cubeline")

View File

@ -16,10 +16,10 @@ iadn@bk.ru
int Fps (long x, long y);
extern "C"{
void app_main(void);
int main(void);
}
struct {
static struct {
int x,y;
int dx,dy;
} win;
@ -29,19 +29,19 @@ struct {
#define KEY_ESC 1
#define KEY_F 33
char *title1 = "TinyGL in KolibriOS";
char *title2 = "F full screen";
char *title3 = "ESC - exit";
char *fps = "FPS:";
static char title1[] = "TinyGL in KolibriOS";
static char title2[] = "F full screen";
static char title3[] = "ESC - exit";
static char fps[] = "FPS:";
unsigned char FullScreen = 0;
unsigned char skin = 3;
static unsigned char FullScreen = 0;
static unsigned char skin = 3;
float angle;
process_table_entry_* pri;
KOSGLContext cgl;
static float angle;
static process_table_entry_* pri;
static KOSGLContext cgl;
void draw_cube()
static void draw_cube()
{
float x,y,z;
glBegin(GL_LINES);
@ -130,7 +130,7 @@ void draw_cube()
glEnd();
}
void DrawGL()
static void DrawGL()
{
glLoadIdentity(); // óñòàíàâëèâàåì åäåíè÷íóþ ìàòðèöó
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
@ -145,7 +145,7 @@ void DrawGL()
kosglSwapBuffers();
}
void reshape()
static void reshape()
{
__menuet__get_process_table((process_table_entry*)pri,-1);
glViewport(0, 0, pri->winx_size, pri->winy_size-20);
@ -156,13 +156,13 @@ void reshape()
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
}
void disabletgl()
static void disabletgl()
{
kosglDestroyContext(cgl);
delete pri;
}
void Title()
static void Title()
{
__menuet__write_text(300,8,0x10ffffff,fps,strlen(fps));
__menuet__write_text(8,8,0x10ffffff,title1,strlen(title1));
@ -170,7 +170,7 @@ void Title()
__menuet__write_text(600,8,0x00ffffff,title3,strlen(title3));
}
void draw_window(void)
static void draw_window(void)
{
// start redraw
__menuet__window_redraw(1);
@ -182,7 +182,7 @@ void draw_window(void)
Title();
}
void app_main(void)
int main(void)
{
win.x = 100;
@ -241,11 +241,11 @@ do{
break;
case KEY_ESC: disabletgl();
return;}
return 0;}
break;
case 3: disabletgl();
return;
return 0;
}
}while(1);
}

View File

@ -1,24 +1,26 @@
#pragma pack(push, 1)
struct process_table_entry_
{
__u32 cpu_usage __attribute__((packed));
__u16 pos_in_windowing_stack __attribute__((packed));
__u16 win_stack_val_at_ecx __attribute__((packed));
__u16 rez1 __attribute__((packed));
char name[11] __attribute__((packed));
__u8 rez2 __attribute__((packed));
__u32 memstart __attribute__((packed));
__u32 memused __attribute__((packed));
__u32 pid __attribute__((packed));
__u32 winx_start,winy_start __attribute__((packed));
__u32 winx_size,winy_size __attribute__((packed));
__u8 slot __attribute__((packed));
__u8 rez3 __attribute__((packed));
__u32 clarx_start,clary_start __attribute__((packed));
__u32 clarx_size,clary_size __attribute__((packed));
__u8 win_condition __attribute__((packed));
__u8 buf[955] __attribute__((packed));
} __attribute__((packed));
__u32 cpu_usage;
__u16 pos_in_windowing_stack;
__u16 win_stack_val_at_ecx;
__u16 rez1;
char name[11];
__u8 rez2;
__u32 memstart;
__u32 memused;
__u32 pid;
__u32 winx_start,winy_start;
__u32 winx_size,winy_size;
__u8 slot;
__u8 rez3;
__u32 clarx_start,clary_start;
__u32 clarx_size,clary_size;
__u8 win_condition;
__u8 buf[955];
};
#pragma pack(pop)
#define TYPEWIN(D,C,B,A,Y,RR,GG,BB) (D<<31)|(C<<30)|(B<<29)|(A<<28)|(Y<<24)|\
(RR<<16)|(GG<<8)|BB

View File

@ -0,0 +1,7 @@
if tup.getconfig("NO_GCC") ~= "" then return end
HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../.." or tup.getconfig("HELPERDIR")
tup.include(HELPERDIR .. "/use_gcc.lua")
tup.include(HELPERDIR .. "/use_menuetlibc.lua")
tup.include(HELPERDIR .. "/use_tinygl.lua")
compile_gcc{"*.cpp"}
link_gcc("cubetext")

View File

@ -14,7 +14,7 @@ iadn@bk.ru
int Fps (long x, long y);
extern "C"{
void app_main(void);
int main(void);
}
struct {
@ -132,7 +132,7 @@ void draw_window(void)
Title();
}
void app_main(void)
int main(void)
{
win.x = 100;
@ -211,11 +211,11 @@ do{
break;
case KEY_ESC: disabletgl();
return;}
return 0;}
break;
case 3: disabletgl();
return;
return 0;
}
}while(1);
}

View File

@ -0,0 +1,3 @@
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("echo lang fix " .. ((tup.getconfig("LANG") == "") and "en" or tup.getconfig("LANG")) .. " > lang.inc", {"lang.inc"})
tup.rule({"eyes.asm", extra_inputs = {"lang.inc"}}, "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "eyes")

View File

@ -0,0 +1,2 @@
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("fire.asm", "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "fire")

View File

@ -0,0 +1,2 @@
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("fire2.asm", "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "fire2")

View File

@ -0,0 +1,2 @@
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("firework.asm", "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "firework")

View File

@ -0,0 +1,2 @@
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("FLATWAV.ASM", "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "FLATWAV")

View File

@ -0,0 +1,2 @@
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("free3d.asm", "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "free3d")

View File

@ -0,0 +1,3 @@
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("echo lang fix " .. ((tup.getconfig("LANG") == "") and "en" or tup.getconfig("LANG")) .. " > lang.inc", {"lang.inc"})
tup.rule({"free3d04.asm", extra_inputs = {"lang.inc"}}, "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "free3d04")

View File

@ -1,24 +1,26 @@
#pragma pack(push, 1)
struct process_table_entry_
{
__u32 cpu_usage __attribute__((packed));
__u16 pos_in_windowing_stack __attribute__((packed));
__u16 win_stack_val_at_ecx __attribute__((packed));
__u16 rez1 __attribute__((packed));
char name[11] __attribute__((packed));
__u8 rez2 __attribute__((packed));
__u32 memstart __attribute__((packed));
__u32 memused __attribute__((packed));
__u32 pid __attribute__((packed));
__u32 winx_start,winy_start __attribute__((packed));
__u32 winx_size,winy_size __attribute__((packed));
__u8 slot __attribute__((packed));
__u8 rez3 __attribute__((packed));
__u32 clarx_start,clary_start __attribute__((packed));
__u32 clarx_size,clary_size __attribute__((packed));
__u8 win_condition __attribute__((packed));
__u8 buf[955] __attribute__((packed));
} __attribute__((packed));
__u32 cpu_usage;
__u16 pos_in_windowing_stack;
__u16 win_stack_val_at_ecx;
__u16 rez1;
char name[11];
__u8 rez2;
__u32 memstart;
__u32 memused;
__u32 pid;
__u32 winx_start,winy_start;
__u32 winx_size,winy_size;
__u8 slot;
__u8 rez3;
__u32 clarx_start,clary_start;
__u32 clarx_size,clary_size;
__u8 win_condition;
__u8 buf[955];
};
#pragma pack(pop)
#define TYPEWIN(D,C,B,A,Y,RR,GG,BB) (D<<31)|(C<<30)|(B<<29)|(A<<28)|(Y<<24)|\
(RR<<16)|(GG<<8)|BB

View File

@ -0,0 +1,7 @@
if tup.getconfig("NO_GCC") ~= "" then return end
HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../../.." or tup.getconfig("HELPERDIR")
tup.include(HELPERDIR .. "/use_gcc.lua")
tup.include(HELPERDIR .. "/use_menuetlibc.lua")
tup.include(HELPERDIR .. "/use_tinygl.lua")
compile_gcc{"fps.cpp", "main.cpp"}
link_gcc("gears")

View File

@ -22,7 +22,7 @@ iadn@bk.ru
int Fps (long x, long y);
extern "C"{
void app_main(void);
int main(void);
}
struct {
@ -255,7 +255,7 @@ void draw_window(void)
Title();
}
void app_main(void)
int main(void)
{
win.x = 100;
@ -335,11 +335,11 @@ do{
break;
case KEY_ESC: disabletgl();
return;}
return 0;}
break;
case 3: disabletgl();
return;
return 0;
}
}while(1);
}

View File

@ -0,0 +1,3 @@
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("echo lang fix " .. ((tup.getconfig("LANG") == "") and "en" or tup.getconfig("LANG")) .. " > lang.inc", {"lang.inc"})
tup.rule({"life.asm", extra_inputs = {"lang.inc"}}, "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "life")

View File

@ -0,0 +1,3 @@
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("echo lang fix " .. ((tup.getconfig("LANG") == "") and "en" or tup.getconfig("LANG")) .. " > lang.inc", {"lang.inc"})
tup.rule({"magnify.asm", extra_inputs = {"lang.inc"}}, "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "magnify")

View File

@ -0,0 +1,3 @@
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("echo lang fix " .. ((tup.getconfig("LANG") == "") and "en" or tup.getconfig("LANG")) .. " > lang.inc", {"lang.inc"})
tup.rule({"movback.asm", extra_inputs = {"lang.inc"}}, "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "movback")

View File

@ -0,0 +1,3 @@
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("echo lang fix " .. ((tup.getconfig("LANG") == "") and "en" or tup.getconfig("LANG")) .. " > lang.inc", {"lang.inc"})
tup.rule({"plasma.asm", extra_inputs = {"lang.inc"}}, "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "plasma")

View File

@ -0,0 +1,2 @@
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("QJULIA.ASM", "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "QJULIA")

View File

@ -0,0 +1,3 @@
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("echo lang fix " .. ((tup.getconfig("LANG") == "") and "en" or tup.getconfig("LANG")) .. " > lang.inc", {"lang.inc"})
tup.rule({"timer.asm", extra_inputs = {"lang.inc"}}, "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "timer")

View File

@ -0,0 +1,3 @@
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("echo lang fix " .. ((tup.getconfig("LANG") == "") and "en" or tup.getconfig("LANG")) .. " > lang.inc", {"lang.inc"})
tup.rule({"tinyfrac.asm", extra_inputs = {"lang.inc"}}, "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "tinyfrac")

View File

@ -0,0 +1,3 @@
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("echo lang fix " .. ((tup.getconfig("LANG") == "") and "en" or tup.getconfig("LANG")) .. " > lang.inc", {"lang.inc"})
tup.rule({"transp.asm", extra_inputs = {"lang.inc"}}, "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "transp")

View File

@ -0,0 +1,3 @@
if tup.getconfig("NO_FASM") ~= "" then return end
tup.rule("echo lang fix " .. ((tup.getconfig("LANG") == "") and "en" or tup.getconfig("LANG")) .. " > lang.inc", {"lang.inc"})
tup.rule({"trantest.asm", extra_inputs = {"lang.inc"}}, "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "trantest")

Some files were not shown because too many files have changed in this diff Show More