diff options
Diffstat (limited to 'code/ui/Conscript')
-rwxr-xr-x | code/ui/Conscript | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/code/ui/Conscript b/code/ui/Conscript new file mode 100755 index 0000000..94715d9 --- /dev/null +++ b/code/ui/Conscript @@ -0,0 +1,62 @@ +# 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';
+}
|