lilium-voyager/code/unix/Conscript-client

284 lines
6.6 KiB
Plaintext

# 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/lib64 -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_interpreted.c
);
if ($cpu eq 'i386')
{
push @VM_FILES, qw(
../qcommon/vm_x86.c
);
}
elsif ($cpu eq 'ppc')
{
push @VM_FILES, qw(
../qcommon/vm_ppc.c
);
}
else
{
push @VM_FILES, qw(
../qcommon/vm_none.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;