123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- # TA ui building
- # qvm building against native:
- # only native has ui_syscalls.c
- # qvm uses a custom 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:#ui',
- CC => $CC,
- CXX => $CXX,
- LINK => $LINK,
- ENV => { PATH => $ENV{PATH}, HOME => $ENV{HOME} },
- CFLAGS => $BASE_CFLAGS . '-DMISSIONPACK -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:#ui',
- CC => 'q3lcc',
- CCCOM => '%CC %CFLAGS %_IFLAGS -c %< -o %>',
- SUFOBJ => '.asm',
- LINK => 'q3asm',
- CFLAGS => '-DQ3_VM -DMISSIONPACK -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
- ui_atoms.c
- ui_gameinfo.c
- ui_players.c
- ui_util.c
- ui_shared.c
- ../game/bg_misc.c
- ../game/q_math.c
- ../game/q_shared.c
- );
- $FILESREF = \@FILES;
- if ($NO_SO eq 0)
- {
- Program $env 'uii386.so', @$FILESREF, '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_syscalls.asm';
- Install $vm_env $INSTALL_DIR . '/vm', 'ui.qvm';
- }
|