diff options
Diffstat (limited to 'code/game/Conscript')
-rwxr-xr-x | code/game/Conscript | 280 |
1 files changed, 140 insertions, 140 deletions
diff --git a/code/game/Conscript b/code/game/Conscript index f823cef..5fdf815 100755 --- a/code/game/Conscript +++ b/code/game/Conscript @@ -1,140 +1,140 @@ -# game building
-# builds the game for vanilla Q3 and TA
-
-# there are slight differences between Q3 and TA build:
-# -DMISSIONPACK
-# the config is passed in the imported variable TARGET_DIR
-
-# qvm building against native:
-# only native has g_syscalls.c
-# only qvm has ../game/bg_lib.c
-# qvm uses a custom g_syscalls.asm with equ stubs
-
-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'
-);
-
-# for TA, use -DMISSIONPACK
-%ta_env_hash = $env->copy(
- CPPPATH => '#cgame:#game:#ui'
- );
-$ta_env_hash{CFLAGS} = '-DMISSIONPACK ' . $ta_env_hash{CFLAGS};
-$ta_env = new cons(%ta_env_hash);
-
-# 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", },
-);
-
-# TA qvm building
-%vm_ta_env_hash = $vm_env->copy(
- CPPPATH => '#cgame:#game:#ui'
- );
-$vm_ta_env_hash{CFLAGS} = '-DMISSIONPACK ' . $vm_ta_env_hash{CFLAGS};
-$vm_ta_env = new cons(%vm_ta_env_hash);
-
-# the file with vmMain function MUST be the first one of the list
-@FILES = qw(
- g_main.c
- ai_chat.c
- ai_cmd.c
- ai_dmnet.c
- ai_dmq3.c
- ai_main.c
- ai_team.c
- ai_vcmd.c
- bg_misc.c
- bg_pmove.c
- bg_slidemove.c
- g_active.c
- g_arenas.c
- g_bot.c
- g_client.c
- g_cmds.c
- g_combat.c
- g_items.c
- g_mem.c
- g_misc.c
- g_missile.c
- g_mover.c
- g_session.c
- g_spawn.c
- g_svcmds.c
- g_target.c
- g_team.c
- g_trigger.c
- g_utils.c
- g_weapon.c
- q_math.c
- q_shared.c
- );
-$FILESREF = \@FILES;
-
-# only in .so
-# (VM uses a custom .asm with equ stubs)
-@SO_FILES = qw(
- g_syscalls.c
- );
-$SO_FILESREF = \@SO_FILES;
-
-# only for VM
-@VM_FILES = qw(
- bg_lib.c
- g_syscalls.asm
- );
-$VM_FILESREF = \@VM_FILES;
-
-# FIXME CPU string?
-# NOTE: $env $ta_env and $vm_env $vm_ta_env may not be necessary
-# we could alter the $env and $ta_env based on $TARGET_DIR
-# doing it this way to ensure homogeneity with cgame building
-if ($TARGET_DIR eq 'Q3')
-{
- if ($NO_SO eq 0)
- {
- Program $env 'qagamei386.so', @$FILESREF, @$SO_FILESREF;
- Install $env $INSTALL_DIR, 'qagamei386.so';
- }
- if ($NO_VM eq 0)
- {
- Depends $vm_env 'qagame.qvm', '#qvmtools/q3lcc';
- Depends $vm_env 'qagame.qvm', '#qvmtools/q3asm';
- Program $vm_env 'qagame.qvm', @$FILESREF, @$VM_FILESREF;
- Install $vm_env $INSTALL_DIR . '/vm', 'qagame.qvm';
- }
-}
-else
-{
- if ($NO_SO eq 0)
- {
- Program $ta_env 'qagamei386.so', @$FILESREF, @$SO_FILESREF;
- Install $ta_env $INSTALL_DIR, 'qagamei386.so';
- }
- if ($NO_VM eq 0)
- {
- Depends $vm_env 'qagame.qvm', '#qvmtools/q3lcc';
- Depends $vm_env 'qagame.qvm', '#qvmtools/q3asm';
- Program $vm_ta_env 'qagame.qvm', @$FILESREF, @$VM_FILESREF;
- Install $vm_ta_env $INSTALL_DIR . '/vm', 'qagame.qvm';
- }
-}
+# game building +# builds the game for vanilla Q3 and TA + +# there are slight differences between Q3 and TA build: +# -DMISSIONPACK +# the config is passed in the imported variable TARGET_DIR + +# qvm building against native: +# only native has g_syscalls.c +# only qvm has ../game/bg_lib.c +# qvm uses a custom g_syscalls.asm with equ stubs + +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' +); + +# for TA, use -DMISSIONPACK +%ta_env_hash = $env->copy( + CPPPATH => '#cgame:#game:#ui' + ); +$ta_env_hash{CFLAGS} = '-DMISSIONPACK ' . $ta_env_hash{CFLAGS}; +$ta_env = new cons(%ta_env_hash); + +# 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", }, +); + +# TA qvm building +%vm_ta_env_hash = $vm_env->copy( + CPPPATH => '#cgame:#game:#ui' + ); +$vm_ta_env_hash{CFLAGS} = '-DMISSIONPACK ' . $vm_ta_env_hash{CFLAGS}; +$vm_ta_env = new cons(%vm_ta_env_hash); + +# the file with vmMain function MUST be the first one of the list +@FILES = qw( + g_main.c + ai_chat.c + ai_cmd.c + ai_dmnet.c + ai_dmq3.c + ai_main.c + ai_team.c + ai_vcmd.c + bg_misc.c + bg_pmove.c + bg_slidemove.c + g_active.c + g_arenas.c + g_bot.c + g_client.c + g_cmds.c + g_combat.c + g_items.c + g_mem.c + g_misc.c + g_missile.c + g_mover.c + g_session.c + g_spawn.c + g_svcmds.c + g_target.c + g_team.c + g_trigger.c + g_utils.c + g_weapon.c + q_math.c + q_shared.c + ); +$FILESREF = \@FILES; + +# only in .so +# (VM uses a custom .asm with equ stubs) +@SO_FILES = qw( + g_syscalls.c + ); +$SO_FILESREF = \@SO_FILES; + +# only for VM +@VM_FILES = qw( + bg_lib.c + g_syscalls.asm + ); +$VM_FILESREF = \@VM_FILES; + +# FIXME CPU string? +# NOTE: $env $ta_env and $vm_env $vm_ta_env may not be necessary +# we could alter the $env and $ta_env based on $TARGET_DIR +# doing it this way to ensure homogeneity with cgame building +if ($TARGET_DIR eq 'Q3') +{ + if ($NO_SO eq 0) + { + Program $env 'qagamei386.so', @$FILESREF, @$SO_FILESREF; + Install $env $INSTALL_DIR, 'qagamei386.so'; + } + if ($NO_VM eq 0) + { + Depends $vm_env 'qagame.qvm', '#qvmtools/q3lcc'; + Depends $vm_env 'qagame.qvm', '#qvmtools/q3asm'; + Program $vm_env 'qagame.qvm', @$FILESREF, @$VM_FILESREF; + Install $vm_env $INSTALL_DIR . '/vm', 'qagame.qvm'; + } +} +else +{ + if ($NO_SO eq 0) + { + Program $ta_env 'qagamei386.so', @$FILESREF, @$SO_FILESREF; + Install $ta_env $INSTALL_DIR, 'qagamei386.so'; + } + if ($NO_VM eq 0) + { + Depends $vm_env 'qagame.qvm', '#qvmtools/q3lcc'; + Depends $vm_env 'qagame.qvm', '#qvmtools/q3asm'; + Program $vm_ta_env 'qagame.qvm', @$FILESREF, @$VM_FILESREF; + Install $vm_ta_env $INSTALL_DIR . '/vm', 'qagame.qvm'; + } +} |