123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266 |
- # full client build script
- Import qw( BASE_CFLAGS BASE_LDFLAGS INSTALL_DIR BUILD_DIR TARGETNAME CC CXX LINK );
- # splines
- $env_splines = new cons(
- CC => $CC,
- CXX => $CXX,
- LINK => $LINK,
- ENV => { PATH => $ENV{PATH}, HOME => $ENV{HOME} }
- );
- @SPLINES_FILES = qw(
- ../splines/math_angles.cpp
- ../splines/math_matrix.cpp
- ../splines/math_quaternion.cpp
- ../splines/math_vector.cpp
- ../splines/q_parse.cpp
- ../splines/q_shared.cpp
- ../splines/splines.cpp
- ../splines/util_str.cpp
- );
- $SPLINES_FILESREF = \@SPLINES_FILES;
-
- Library $env_splines 'splines', @$SPLINES_FILESREF;
- # botlib
- # FIXME TTimo
- # we already deal with botlib on dedicated target
- # the compilation options are a bit different but we could certainly rely on
- # the same Conscript and make things cleaner
- $env_botlib = new cons(
- CC => $CC,
- CXX => $CXX,
- LINK => $LINK,
- ENV => { PATH => $ENV{PATH}, HOME => $ENV{HOME} },
- CFLAGS => $BASE_CFLAGS . '-DBOTLIB '
- );
- @BOTLIB_FILES = qw(
- ../botlib/be_aas_bspq3.c
- ../botlib/be_aas_cluster.c
- ../botlib/be_aas_debug.c
- ../botlib/be_aas_entity.c
- ../botlib/be_aas_file.c
- ../botlib/be_aas_main.c
- ../botlib/be_aas_move.c
- ../botlib/be_aas_optimize.c
- ../botlib/be_aas_reach.c
- ../botlib/be_aas_route.c
- ../botlib/be_aas_routealt.c
- ../botlib/be_aas_sample.c
- ../botlib/be_ai_char.c
- ../botlib/be_ai_chat.c
- ../botlib/be_ai_gen.c
- ../botlib/be_ai_goal.c
- ../botlib/be_ai_move.c
- ../botlib/be_ai_weap.c
- ../botlib/be_ai_weight.c
- ../botlib/be_ea.c
- ../botlib/be_interface.c
- ../botlib/l_crc.c
- ../botlib/l_libvar.c
- ../botlib/l_log.c
- ../botlib/l_memory.c
- ../botlib/l_precomp.c
- ../botlib/l_script.c
- ../botlib/l_struct.c
- );
- $BOTLIB_REF = \@BOTLIB_FILES;
- Library $env_botlib 'botlib', @$BOTLIB_REF;
- # jpeg
- # NOTE TTimo we might need this one on other targets
- $env_jpeglib = new cons(
- CC => $CC,
- CXX => $CXX,
- LINK => $LINK,
- ENV => { PATH => $ENV{PATH}, HOME => $ENV{HOME} },
- CFLAGS => $BASE_CFLAGS
- );
-
- @JPEGLIB_FILES = qw(
- ../jpeg-6/jcapimin.c
- ../jpeg-6/jchuff.c
- ../jpeg-6/jcinit.c
- ../jpeg-6/jccoefct.c
- ../jpeg-6/jccolor.c
- ../jpeg-6/jfdctflt.c
- ../jpeg-6/jcdctmgr.c
- ../jpeg-6/jcphuff.c
- ../jpeg-6/jcmainct.c
- ../jpeg-6/jcmarker.c
- ../jpeg-6/jcmaster.c
- ../jpeg-6/jcomapi.c
- ../jpeg-6/jcparam.c
- ../jpeg-6/jcprepct.c
- ../jpeg-6/jcsample.c
- ../jpeg-6/jdapimin.c
- ../jpeg-6/jdapistd.c
- ../jpeg-6/jdatasrc.c
- ../jpeg-6/jdcoefct.c
- ../jpeg-6/jdcolor.c
- ../jpeg-6/jddctmgr.c
- ../jpeg-6/jdhuff.c
- ../jpeg-6/jdinput.c
- ../jpeg-6/jdmainct.c
- ../jpeg-6/jdmarker.c
- ../jpeg-6/jdmaster.c
- ../jpeg-6/jdpostct.c
- ../jpeg-6/jdsample.c
- ../jpeg-6/jdtrans.c
- ../jpeg-6/jerror.c
- ../jpeg-6/jidctflt.c
- ../jpeg-6/jmemmgr.c
- ../jpeg-6/jmemnobs.c
- ../jpeg-6/jutils.c
- );
- $JPEGLIB_REF = \@JPEGLIB_FILES;
-
- Library $env_jpeglib 'jpeglib', @$JPEGLIB_REF;
- # NOTE TTimo this requires patched cons version to work (see unix/cons)
- %nasm_hash = new cons()->copy(
- CC => 'nasm',
- CCCOM => '%CC -f elf -o %> %<'
- );
- $nasm_hash{SUFMAP}{'.nasm'} = 'build::command::cc';
- $nasm_env = new cons(%nasm_hash);
- Library $nasm_env 'asmlib', 'ftol.nasm', 'snapvector.nasm';
- # compiling files with inlined assembly
- $env_inlined = new cons(
- CFLAGS => '-DELF -x assembler-with-cpp'
- );
- Library $env_inlined 'inlinelib', '../unix/matha.s', '../unix/snd_mixa.s';
- # putting it all together
- $env = new cons(
- CC => $CC,
- CXX => $CXX,
- LINK => $LINK,
- ENV => { PATH => $ENV{PATH}, HOME => $ENV{HOME} },
- CFLAGS => $BASE_CFLAGS,
- LIBS => ' ' . $BUILD_DIR . '/unix/splines.a '
- . $BUILD_DIR . '/unix/botlib.a '
- . $BUILD_DIR . '/unix/jpeglib.a '
- . $BUILD_DIR . '/unix/asmlib.a '
- . $BUILD_DIR . '/unix/inlinelib.a '
- . $BASE_LDFLAGS
- . '-L/usr/X11R6/lib -lX11 -lXext -lXxf86dga -lXxf86vm -ldl -lm'
- );
- @RENDERER_FILES = qw(
- ../renderer/tr_animation.c
- ../renderer/tr_backend.c
- ../renderer/tr_bsp.c
- ../renderer/tr_cmds.c
- ../renderer/tr_curve.c
- ../renderer/tr_flares.c
- ../renderer/tr_font.c
- ../renderer/tr_image.c
- ../renderer/tr_init.c
- ../renderer/tr_light.c
- ../renderer/tr_main.c
- ../renderer/tr_marks.c
- ../renderer/tr_mesh.c
- ../renderer/tr_model.c
- ../renderer/tr_noise.c
- ../renderer/tr_scene.c
- ../renderer/tr_shade.c
- ../renderer/tr_shade_calc.c
- ../renderer/tr_shader.c
- ../renderer/tr_shadows.c
- ../renderer/tr_sky.c
- ../renderer/tr_surface.c
- ../renderer/tr_world.c
- );
- $RENDERER_REF = \@RENDERER_FILES;
- @CLIENT_FILES = qw(
- ../client/cl_cgame.c
- ../client/cl_cin.c
- ../client/cl_console.c
- ../client/cl_input.c
- ../client/cl_keys.c
- ../client/cl_main.c
- ../client/cl_net_chan.c
- ../client/cl_parse.c
- ../client/cl_scrn.c
- ../client/cl_ui.c
- );
- $CLIENT_REF = \@CLIENT_FILES;
- @COMMON_FILES = qw(
- ../qcommon/cm_load.c
- ../qcommon/cm_patch.c
- ../qcommon/cm_polylib.c
- ../qcommon/cm_test.c
- ../qcommon/cm_trace.c
- ../qcommon/cmd.c
- ../qcommon/common.c
- ../qcommon/cvar.c
- ../qcommon/files.c
- ../qcommon/md4.c
- ../qcommon/msg.c
- ../qcommon/net_chan.c
- ../qcommon/huffman.c
- ../qcommon/unzip.c
- );
- $COMMON_REF = \@COMMON_FILES;
- @SOUND_FILES = qw(
- ../client/snd_adpcm.c
- ../client/snd_dma.c
- ../client/snd_mem.c
- ../client/snd_mix.c
- ../client/snd_wavelet.c
- );
- $SOUND_REF = \@SOUND_FILES;
- @UNIX_FILES = qw(
- ../unix/unix_main.c
- ../unix/unix_net.c
- ../unix/unix_shared.c
- ../unix/linux_common.c
- ../unix/linux_qgl.c
- ../unix/linux_glimp.c
- ../unix/linux_joystick.c
- ../unix/linux_snd.c
- ../unix/linux_signals.c
- );
- $UNIX_REF = \@UNIX_FILES;
- @SERVER_FILES = qw(
- ../server/sv_bot.c
- ../server/sv_ccmds.c
- ../server/sv_client.c
- ../server/sv_game.c
- ../server/sv_init.c
- ../server/sv_main.c
- ../server/sv_net_chan.c
- ../server/sv_snapshot.c
- ../server/sv_world.c
- );
- $SERVER_REF = \@SERVER_FILES;
- # FIXME TTimo vm_<cpu>.c
- @VM_FILES = qw(
- ../qcommon/vm.c
- ../qcommon/vm_x86.c
- ../qcommon/vm_interpreted.c
- );
- $VM_REF = \@VM_FILES;
- # FIXME: import the CPU string to build the name of the target
- Program $env $TARGETNAME, '../game/q_shared.c', '../game/q_math.c',
- @$RENDERER_REF, @$CLIENT_REF, @$COMMON_REF, @$SOUND_REF,
- @$UNIX_REF, @$SERVER_REF, @$VM_REF;
- Install $env $INSTALL_DIR, $TARGETNAME;
|