forked from KolibriOS/kolibrios
c1c36c0b6a
1) New logic of switching windows (turnoff/restore) 2) New logic of button "clear desktop". 3) Win+D (restore/clear desktop), Win+R (start RUN application). 4) Using the library LibINI to set the parameters. 5) New style of panel. 6) Start application Menu with boot options. 7) Two versions of the location of the panel - the bottom of the desktop and on top of the desktop. git-svn-id: svn://kolibrios.org@2619 a494cfbc-eb01-0410-851d-a64ba20cac60
568 lines
28 KiB
Makefile
568 lines
28 KiB
Makefile
# 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
|
|
|
|
# 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:=\
|
|
@clip:@CLIP:$(PROGS)/system/clip/trunk/@clip.ASM \
|
|
@menu:@MENU:$(PROGS)/system/menu/trunk/menu.asm \
|
|
@notify:@NOTIFY:$(PROGS)/system/notify/trunk/@notify.asm \
|
|
@panel:@PANEL:$(PROGS)/system/panel/trunk/@PANEL.ASM \
|
|
@rb:@RB:$(PROGS)/system/rb/trunk/@RB.ASM \
|
|
@ss:@SS:$(PROGS)/system/ss/trunk/@ss.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 \
|
|
commouse:COMMOUSE:$(PROGS)/system/commouse/trunk/commouse.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 \
|
|
docpak:DOCPAK:$(PROGS)/system/docpack/trunk/docpack.asm \
|
|
end:END:$(PROGS)/system/end/light/end.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/trunk/icon.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 \
|
|
mykey:MYKEY:$(PROGS)/system/MyKey/trunk/MyKey.asm \
|
|
pcidev:PCIDEV:$(PROGS)/system/pcidev/trunk/PCIDEV.ASM \
|
|
period:PERIOD:$(PROGS)/other/period/trunk/period.asm \
|
|
pic4:PIC4:$(PROGS)/media/pic4/trunk/pic4.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 \
|
|
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 \
|
|
3d/3dcube2:3D/3DCUBE2:$(PROGS)/demos/3dcube2/trunk/3DCUBE2.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/flatwav:3D/FLATWAV:$(PROGS)/demos/flatwav/trunk/FLATWAV.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/fire:DEMOS/FIRE:$(PROGS)/demos/fire/trunk/fire.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/timer:DEMOS/TIMER:$(PROGS)/demos/timer/trunk/timer.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/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/ipc:DEVELOP/IPC:$(PROGS)/network/ipc/trunk/ipc.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/test_gets:DEVELOP/test_gets:$(PROGS)/develop/libraries/console/examples/test_gets.asm \
|
|
develop/testcon2:DEVELOP/TESTCON2:$(PROGS)/develop/libraries/console/examples/testcon2.asm \
|
|
develop/thread:DEVELOP/THREAD:$(PROGS)/develop/examples/thread/trunk/thread.asm \
|
|
drivers/com_mouse.obj:DRIVERS/COM_MOUSE.OBJ:$(KERNEL)/drivers/com_mouse.asm \
|
|
drivers/emu10k1x.obj:DRIVERS/EMU10K1X.OBJ:$(KERNEL)/drivers/emu10k1x.asm \
|
|
drivers/fm801.obj:DRIVERS/FM801.OBJ:$(KERNEL)/drivers/fm801.asm \
|
|
drivers/infinity.obj:DRIVERS/INFINITY.OBJ:$(KERNEL)/drivers/infinity.asm \
|
|
drivers/ps2mouse.obj:DRIVERS/PS2MOUSE.OBJ:$(REPOSITORY)/drivers/mouse/ps2mouse4d/trunk/ps2mouse.asm \
|
|
drivers/sb16.obj:DRIVERS/SB16.OBJ:$(KERNEL)/drivers/sb16/sb16.asm \
|
|
drivers/sound.obj:DRIVERS/SOUND.OBJ:$(KERNEL)/drivers/sound.asm \
|
|
drivers/vt8235.obj:DRIVERS/VT8235.OBJ:$(KERNEL)/drivers/vt823x.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 \
|
|
fonts/bgitest:FONTS/BGITEST:$(PROGS)/demos/bgitest/trunk/bgitest.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/kox:GAMES/KOX:$(PROGS)/games/kox/trunk/kox.asm \
|
|
games/lights:GAMES/LIGHTS:$(PROGS)/games/lights/trunk/lights.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/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/network.obj:LIB/NETWORK.OBJ:$(PROGS)/develop/libraries/network/network.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/cdp:MEDIA/CDP:$(PROGS)/media/cdp/trunk/cdp.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/startmus:MEDIA/STARTMUS:$(PROGS)/media/startmus/trunk/STARTMUS.ASM \
|
|
network/airc:NETWORK/AIRC:$(PROGS)/network/airc/trunk/airc.asm \
|
|
network/arpstat:NETWORK/ARPSTAT:$(PROGS)/network/arpstat/trunk/arpstat.asm \
|
|
network/chess:NETWORK/CHESS:$(PROGS)/network/chess/trunk/chess.asm \
|
|
network/downloader:NETWORK/DOWNLOADER:$(PROGS)/network/downloader/trunk/downloader.asm \
|
|
network/ethstat:NETWORK/ETHSTAT:$(PROGS)/network/ethstat/trunk/ethstat.asm \
|
|
network/ftps:NETWORK/FTPS:$(PROGS)/network/ftps/trunk/FTPS.ASM \
|
|
network/https:NETWORK/HTTPS:$(PROGS)/network/https/trunk/https.asm \
|
|
network/nntpc:NETWORK/NNTPC:$(PROGS)/network/nntpc/trunk/nntpc.asm \
|
|
network/nslookup:NETWORK/NSLOOKUP:$(PROGS)/develop/libraries/network/examples/nslookup.asm \
|
|
network/popc:NETWORK/POPC:$(PROGS)/network/popc/trunk/popc.asm \
|
|
network/smtps:NETWORK/SMTPS:$(PROGS)/network/smtps/trunk/smtps.asm \
|
|
network/stackcfg:NETWORK/STACKCFG:$(PROGS)/network/stackcfg/trunk/stackcfg.asm \
|
|
network/telnet:NETWORK/TELNET:$(PROGS)/network/telnet/trunk/telnet.asm \
|
|
network/tftpc:NETWORK/TFTPC:$(PROGS)/network/tftpc/trunk/tftpc.asm \
|
|
network/VNCclient:NETWORK/VNCclient:$(PROGS)/network/VNCclient/VNCclient.asm \
|
|
network/ym:NETWORK/YM:$(PROGS)/network/ym/trunk/ym.asm \
|
|
network/zeroconf:NETWORK/ZEROCONF:$(PROGS)/network/zeroconf/trunk/zeroconf.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 \
|
|
# 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 \
|
|
games/c4:GAMES/C4:$(PROGS)/games/c4/trunk/c4.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 \
|
|
File|Managers/z_icons.png:File|Managers/Z_ICONS.PNG:$(PROGS)/fs/opendial/z_icons.png \
|
|
File|Managers/kfm_keys.txt:File|Managers/KFM_KEYS.TXT:$(PROGS)/fs/kfm/trunk/docs/russian/dos_kolibri/kfm_keys.txt \
|
|
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/euro.chr:FONTS/EURO.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/EURO.CHR \
|
|
fonts/goth.chr:FONTS/GOTH.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/GOTH.CHR \
|
|
fonts/lcom.chr:FONTS/LCOM.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/LCOM.CHR \
|
|
fonts/litt.chr:FONTS/LITT.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/LITT.CHR \
|
|
fonts/sans.chr:FONTS/SANS.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/SANS.CHR \
|
|
fonts/scri.chr:FONTS/SCRI.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/SCRI.CHR \
|
|
fonts/simp.chr:FONTS/SIMP.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/SIMP.CHR \
|
|
fonts/smal.chr:FONTS/SMAL.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/SMAL.CHR \
|
|
fonts/trip.chr:FONTS/TRIP.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/TRIP.CHR \
|
|
fonts/tscr.chr:FONTS/TSCR.CHR:$(PROGS)/demos/bgitest/trunk/FONTS/TSCR.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 \
|
|
.shell:.shell:$(PROGS)/system/shell/bin/rus/.shell \
|
|
mykey.ini:MYKEY.INI:$(PROGS)/system/MyKey/trunk/mykey.ini \
|
|
# end of list
|
|
|
|
# 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)/fs/Eolite/trunk/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 \
|
|
HTMLv:HTMLv:$(PROGS)/network/htmlv/browser/HTMLv.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 |.
|
|
#
|
|
# yogev_ezra: Removed '3dsheart' to free some space on RAMDISK. This demo has 90% in common with VIEW3DS
|
|
OTHER_FILES:=autorun.dat:AUTORUN.DAT \
|
|
background.gif:background.gif default.skn:DEFAULT.SKN \
|
|
e80:E80 graph:GRAPH hdread:HDREAD \
|
|
icons.dat:ICONS.DAT iconstrp.png:ICONSTRP.PNG index_htm:INDEX.HTM \
|
|
kernel.mnt:KERNEL.MNT kerpack:KERPACK keymap.key:KEYMAP.KEY \
|
|
kuzkina.mid:KUZKINA.MID lang.inc:LANG.INC lang.ini:LANG.INI \
|
|
menu.dat:MENU.DAT \
|
|
panel.ini:PANEL.INI pipetka:PIPETKA setup.dat:SETUP.DAT \
|
|
shell:SHELL table:TABLE vmode:VMODE \
|
|
3d/cubeline:3D/CUBELINE 3d/gears:3D/GEARS 3d/house.3ds:3D/HOUSE.3DS \
|
|
demos/ak47.lif:DEMOS/AK47.LIF \
|
|
demos/barge.lif:DEMOS/BARGE.LIF demos/life2:DEMOS/LIFE2 \
|
|
demos/relay.lif:DEMOS/RELAY.LIF demos/rpento.lif:DEMOS/RPENTO.LIF \
|
|
demos/use_mb:DEMOS/USE_MB \
|
|
File|Managers/eolite.ini:File|Managers/EOLITE.INI \
|
|
File|Managers/icons.ini:File|Managers/ICONS.INI \
|
|
File|Managers/kfar.ini:File|Managers/KFAR.INI \
|
|
File|Managers/kfm.ini:File|Managers/KFM.INI \
|
|
fonts/bold.chr:FONTS/BOLD.CHR fonts/char2.mt:FONTS/CHAR2.MT \
|
|
fonts/char.mt:FONTS/CHAR.MT \
|
|
games/appdata.dat:GAMES/APPDATA.DAT games/ataka:GAMES/ATAKA \
|
|
games/basekurs.kla:GAMES/BASEKURS.KLA games/checkers:GAMES/CHECKERS \
|
|
games/kosilka:GAMES/KOSILKA games/kosskin.gfx:GAMES/KOSSKIN.GFX \
|
|
games/megamaze:GAMES/MEGAMAZE games/padenie:GAMES/PADENIE \
|
|
games/reversi:GAMES/REVERSI games/rforces:GAMES/RFORCES \
|
|
games/whowtbam:GAMES/WHOWTBAM games/xonix:GAMES/XONIX \
|
|
lib/msgbox.obj:LIB/MSGBOX.OBJ \
|
|
lib/pixlib.obj:LIB/PIXLIB.OBJ lib/sort.obj:LIB/SORT.OBJ \
|
|
drivers/intel_hda.obj:DRIVERS/intel_hda.obj \
|
|
media/ac97snd:MEDIA/AC97SND \
|
|
network/jmail:NETWORK/JMAIL network/zeroconf.ini:NETWORK/ZEROCONF.INI \
|
|
#end of list
|
|
#3d/logio.bmp:3D/LOGIO.BMP 3d/cubetext:3D/CUBETEXT
|
|
|
|
# Extra targets for LiveCD image in the syntax of mkisofs
|
|
MKISOFS_EXTRA:=\
|
|
dosbox/=$(PROGS)/emulator/DosBox/dosbox \
|
|
dosbox/=$(PROGS)/emulator/DosBox/dosbox.conf \
|
|
dosbox/=$(PROGS)/emulator/DosBox/readme.txt \
|
|
/=drivers/atikms \
|
|
/=drivers/atikms.dll \
|
|
#end of list
|
|
|
|
# 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)))
|
|
|
|
# Define targets for image file.
|
|
# Join all the lists above.
|
|
targets_full:=$(COPY_FILES) $(FASM_PROGRAMS) $(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))
|
|
|
|
# dependencies of MKISOFS_EXTRA; we iterate through $(MKISOFS_EXTRA),
|
|
# substitute "=" with space, get the 2nd word and join all results
|
|
mkisofs_extra_targets:=$(foreach f,$(MKISOFS_EXTRA),$(word 2,$(subst =, ,$(f))))
|
|
|
|
# The main goal: build kolibri.img and kolibri.iso
|
|
all: $(BUILD_DIR)/kolibri.img $(BUILD_DIR)/kolibri.iso
|
|
|
|
# The first goal: floppy image.
|
|
$(BUILD_DIR)/kolibri.img: $(BUILD_DIR)/.dir \
|
|
Makefile \
|
|
$(BUILD_DIR)/boot_fat12.bin \
|
|
$(targets)
|
|
# SYSXTREE
|
|
# 3d/CUBETEXT
|
|
# 3d/LOGIO.BMP
|
|
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
|
|
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 ::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 ::NETWORK
|
|
$(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 -hide-joliet kolibri.img -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 $(MKISOFS_EXTRA) 2>&1
|
|
|
|
# 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 drivers/.dir fonts/.dir \
|
|
games/.dir lib/.dir media/.dir network/.dir .deps/.dir:
|
|
mkdir -p $(dir $@)
|
|
touch $@
|
|
File\ Managers/.dir:
|
|
mkdir -p "File Managers"
|
|
touch "File Managers/.dir"
|
|
|
|
# FASM black magic goes to Makefile.fasm.
|
|
include Makefile.fasm
|
|
|
|
# Similar for NASM.
|
|
include Makefile.nasm
|
|
|
|
# Similar for copying files.
|
|
include Makefile.copy
|
|
|
|
# Special rules for copying sysfuncr.txt - it isn't directly included in the image.
|
|
docpak: $(DOCDIR)SYSFUNCR.TXT $(wildcard $(DOCDIR)*)
|
|
$(DOCDIR)SYSFUNCR.TXT: $(KERNEL)/docs/sysfuncr.txt
|
|
cp $(KERNEL)/docs/sysfuncr.txt $(DOCDIR)SYSFUNCR.TXT
|
|
|
|
# Similar for C--.
|
|
include Makefile.cmm
|
|
|
|
# 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 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) 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) Makefile.msvc | .obj.graph
|
|
$(msvc_compile)
|
|
$(GRAPH_C_OBJECTS): .obj.graph/%.obj: $(PROGS)/other/graph/%.c $(GRAPH_H_FILES) Makefile.msvc | .obj.graph
|
|
$(msvc_compile)
|
|
$(GRAPH_FASM_OBJECTS): .obj.graph/%.obj: $(PROGS)/other/graph/%.asm 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) Makefile.msvc | .obj.kosilka
|
|
$(msvc_compile)
|
|
.obj.kosilka:
|
|
mkdir -p .obj.kosilka
|
|
|
|
include 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 \
|
|
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 \
|
|
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 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 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 Makefile.msvc | .obj.ac97snd
|
|
$(msvc_compile)
|
|
.obj.ac97snd/crt.obj: $(AC97DIR)/ac97snd/crt.c $(AC97DIR)/ac97snd/crt.h 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) 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
|