aboutsummaryrefslogtreecommitdiffstats
path: root/code/q3_ui/Conscript
diff options
context:
space:
mode:
Diffstat (limited to 'code/q3_ui/Conscript')
-rwxr-xr-xcode/q3_ui/Conscript93
1 files changed, 93 insertions, 0 deletions
diff --git a/code/q3_ui/Conscript b/code/q3_ui/Conscript
new file mode 100755
index 0000000..2387e25
--- /dev/null
+++ b/code/q3_ui/Conscript
@@ -0,0 +1,93 @@
+# 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';
+}