From 952c5c128f9efaea89d41d882c4ea3ade7df4591 Mon Sep 17 00:00:00 2001
From: zakk <zakk@edf5b092-35ff-0310-97b2-ce42778d08ea>
Date: Fri, 26 Aug 2005 04:48:05 +0000
Subject: Itsa me, quake3io!

git-svn-id: svn://svn.icculus.org/quake3/trunk@2 edf5b092-35ff-0310-97b2-ce42778d08ea
---
 code/cgame/Conscript | 138 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 138 insertions(+)
 create mode 100755 code/cgame/Conscript

(limited to 'code/cgame/Conscript')

diff --git a/code/cgame/Conscript b/code/cgame/Conscript
new file mode 100755
index 0000000..887a2a1
--- /dev/null
+++ b/code/cgame/Conscript
@@ -0,0 +1,138 @@
+# cgame building
+# builds the cgame for vanilla Q3 and TA
+
+# there are slight differences between Q3 and TA build:
+#   -DMISSIONPACK
+#   TA has cg_newdraw.c and ../ui/ui_shared.c
+# the config is passed in the imported variable TARGET_DIR
+
+# qvm building against native:
+# only native has cg_syscalls.c
+# only qvm has ../game/bg_lib.c
+# qvm uses a custom cg_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 -DCGAME -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(
+  cg_main.c
+  ../game/bg_misc.c
+  ../game/bg_pmove.c
+  ../game/bg_slidemove.c
+  ../game/q_math.c
+  ../game/q_shared.c
+  cg_consolecmds.c  
+  cg_draw.c
+  cg_drawtools.c
+  cg_effects.c
+  cg_ents.c
+  cg_event.c
+  cg_info.c
+  cg_localents.c
+  cg_marks.c
+  cg_players.c
+  cg_playerstate.c
+  cg_predict.c
+  cg_scoreboard.c
+  cg_servercmds.c
+  cg_snapshot.c
+  cg_view.c
+  cg_weapons.c
+  );
+$FILESREF = \@FILES;
+
+# only in .so
+# (VM uses a custom .asm with equ stubs)
+@SO_FILES = qw(
+  cg_syscalls.c
+  );
+$SO_FILESREF = \@SO_FILES;
+  
+# only for VM
+@VM_FILES = qw(
+  ../game/bg_lib.c
+  cg_syscalls.asm
+  );
+$VM_FILESREF = \@VM_FILES;  
+
+# common additionals for TA
+@TA_FILES = qw(
+  cg_newdraw.c
+  ../ui/ui_shared.c
+  );
+$TA_FILESREF = \@TA_FILES;
+
+# FIXME CPU string  
+if ($TARGET_DIR eq 'Q3')
+{
+	if ($NO_SO eq 0)
+	{
+		Program $env 'cgamei386.so', @$FILESREF, @$SO_FILESREF;
+		Install $env $INSTALL_DIR, 'cgamei386.so';
+	}
+	if ($NO_VM eq 0)
+	{
+    Depends $vm_env 'cgame.qvm', '#qvmtools/q3lcc';
+    Depends $vm_env 'cgame.qvm', '#qvmtools/q3asm';
+		Program $vm_env 'cgame.qvm', @$FILESREF, @$VM_FILESREF;
+		Install $vm_env $INSTALL_DIR . '/vm', 'cgame.qvm';
+	}
+}
+else
+{
+	if ($NO_SO eq 0)
+	{
+		Program $ta_env 'cgamei386.so',
+			@$FILESREF, @$SO_FILESREF, @$TA_FILESREF;
+		Install $ta_env $INSTALL_DIR, 'cgamei386.so';
+	}
+	if ($NO_VM eq 0)
+	{
+    Depends $vm_env 'cgame.qvm', '#qvmtools/q3lcc';
+    Depends $vm_env 'cgame.qvm', '#qvmtools/q3asm';
+		Program $vm_ta_env 'cgame.qvm', 
+			@$FILESREF, @$VM_FILESREF, @$TA_FILESREF;
+		Install $vm_ta_env $INSTALL_DIR . '/vm', 'cgame.qvm';
+	}	
+}
-- 
cgit v1.2.3