94 lines
2.3 KiB
Text
94 lines
2.3 KiB
Text
|
# Q3 ui building
|
||
|
|
||
|
# qvm building against native:
|
||
|
# only native has ui_syscalls.c
|
||
|
# qvm uses a ui_syscalls.asm with equ stubs
|
||
|
# qvm has additional bg_lib.c
|
||
|
|
||
|
Import qw( BASE_CFLAGS TARGET_DIR INSTALL_DIR NO_VM NO_SO CC CXX LINK );
|
||
|
|
||
|
$env = new cons(
|
||
|
# the code has the very bad habit of doing things like #include "../ui/ui_shared.h"
|
||
|
# this seems to confuse the dependency analysis, explicit toplevel includes seem to fix
|
||
|
CPPPATH => '#cgame:#game:#q3_ui',
|
||
|
CC => $CC,
|
||
|
CXX => $CXX,
|
||
|
LINK => $LINK,
|
||
|
ENV => { PATH => $ENV{PATH}, HOME => $ENV{HOME} },
|
||
|
CFLAGS => $BASE_CFLAGS . '-fPIC',
|
||
|
LDFLAGS => '-shared -ldl -lm'
|
||
|
);
|
||
|
|
||
|
# qvm building
|
||
|
# we heavily customize the cons environment
|
||
|
$vm_env = new cons(
|
||
|
# the code has the very bad habit of doing things like #include "../ui/ui_shared.h"
|
||
|
# this seems to confuse the dependency analysis, explicit toplevel includes seem to fix
|
||
|
CPPPATH => '#cgame:#game:#q3_ui',
|
||
|
CC => 'q3lcc',
|
||
|
CCCOM => '%CC %CFLAGS %_IFLAGS -c %< -o %>',
|
||
|
SUFOBJ => '.asm',
|
||
|
LINK => 'q3asm',
|
||
|
CFLAGS => '-DQ3_VM -S -Wf-target=bytecode -Wf-g',
|
||
|
# need to know where to find the compiler tools
|
||
|
ENV => { PATH => $ENV{PATH} . ":./qvmtools", },
|
||
|
);
|
||
|
|
||
|
# the file with vmMain function MUST be the first one of the list
|
||
|
@FILES = qw(
|
||
|
ui_main.c
|
||
|
../game/bg_misc.c
|
||
|
../game/q_math.c
|
||
|
../game/q_shared.c
|
||
|
ui_addbots.c
|
||
|
ui_atoms.c
|
||
|
ui_cdkey.c
|
||
|
ui_cinematics.c
|
||
|
ui_confirm.c
|
||
|
ui_connect.c
|
||
|
ui_controls2.c
|
||
|
ui_credits.c
|
||
|
ui_demo2.c
|
||
|
ui_display.c
|
||
|
ui_gameinfo.c
|
||
|
ui_ingame.c
|
||
|
ui_menu.c
|
||
|
ui_mfield.c
|
||
|
ui_mods.c
|
||
|
ui_network.c
|
||
|
ui_options.c
|
||
|
ui_playermodel.c
|
||
|
ui_players.c
|
||
|
ui_playersettings.c
|
||
|
ui_preferences.c
|
||
|
ui_qmenu.c
|
||
|
ui_removebots.c
|
||
|
ui_serverinfo.c
|
||
|
ui_servers2.c
|
||
|
ui_setup.c
|
||
|
ui_sound.c
|
||
|
ui_sparena.c
|
||
|
ui_specifyserver.c
|
||
|
ui_splevel.c
|
||
|
ui_sppostgame.c
|
||
|
ui_spskill.c
|
||
|
ui_startserver.c
|
||
|
ui_team.c
|
||
|
ui_teamorders.c
|
||
|
ui_video.c
|
||
|
);
|
||
|
$FILESREF = \@FILES;
|
||
|
|
||
|
if ($NO_SO eq 0)
|
||
|
{
|
||
|
Program $env 'uii386.so', @$FILESREF, '../ui/ui_syscalls.c';
|
||
|
Install $env $INSTALL_DIR, 'uii386.so';
|
||
|
}
|
||
|
if ($NO_VM eq 0)
|
||
|
{
|
||
|
Depends $vm_env 'ui.qvm', '#qvmtools/q3lcc';
|
||
|
Depends $vm_env 'ui.qvm', '#qvmtools/q3asm';
|
||
|
Program $vm_env 'ui.qvm', @$FILESREF, '../game/bg_lib.c', '../ui/ui_syscalls.asm';
|
||
|
Install $vm_env $INSTALL_DIR . '/vm', 'ui.qvm';
|
||
|
}
|