import os, string, sys, fnmatch Import('env') quake3_env = env.Copy() quake3_src = [ 'engine/client/cl_avi.c', 'engine/client/cl_cgame.c', 'engine/client/cl_cin.c', 'engine/client/cl_console.c', 'engine/client/cl_curl.c', 'engine/client/cl_input.c', 'engine/client/cl_keys.c', 'engine/client/cl_main.c', 'engine/client/cl_net_chan.c', 'engine/client/cl_parse.c', 'engine/client/cl_scrn.c', 'engine/client/cl_ui.c', 'engine/client/snd_adpcm.c', 'engine/client/snd_codec.c', 'engine/client/snd_codec_ogg.c', 'engine/client/snd_codec_wav.c', 'engine/client/snd_dma.c', 'engine/client/snd_main.c', 'engine/client/snd_mem.c', 'engine/client/snd_mix.c', 'engine/client/snd_openal.c', 'engine/client/snd_wavelet.c', 'engine/client/qal.c', 'engine/qcommon/cm_load.c', 'engine/qcommon/cm_patch.c', 'engine/qcommon/cm_polylib.c', 'engine/qcommon/cm_test.c', 'engine/qcommon/cm_trace.c', 'engine/qcommon/cmd.c', 'engine/qcommon/common.c', 'engine/qcommon/cvar.c', 'engine/qcommon/files.c', 'engine/qcommon/huffman.c', 'engine/qcommon/md4.c', 'engine/qcommon/md5.c', 'engine/qcommon/msg.c', 'engine/qcommon/net_chan.c', 'engine/qcommon/q_math.c', 'engine/qcommon/q_shared.c', 'engine/qcommon/unzip.c', 'engine/server/sv_bot.c', 'engine/server/sv_ccmds.c', 'engine/server/sv_client.c', 'engine/server/sv_game.c', 'engine/server/sv_init.c', 'engine/server/sv_main.c', 'engine/server/sv_net_chan.c', 'engine/server/sv_snapshot.c', 'engine/server/sv_world.c', 'engine/botlib/be_aas_bspq3.c', 'engine/botlib/be_aas_cluster.c', 'engine/botlib/be_aas_debug.c', 'engine/botlib/be_aas_entity.c', 'engine/botlib/be_aas_file.c', 'engine/botlib/be_aas_main.c', 'engine/botlib/be_aas_move.c', 'engine/botlib/be_aas_optimize.c', 'engine/botlib/be_aas_reach.c', 'engine/botlib/be_aas_route.c', 'engine/botlib/be_aas_routealt.c', 'engine/botlib/be_aas_sample.c', 'engine/botlib/be_ai_char.c', 'engine/botlib/be_ai_chat.c', 'engine/botlib/be_ai_gen.c', 'engine/botlib/be_ai_goal.c', 'engine/botlib/be_ai_move.c', 'engine/botlib/be_ai_weap.c', 'engine/botlib/be_ai_weight.c', 'engine/botlib/be_ea.c', 'engine/botlib/be_interface.c', 'engine/botlib/l_crc.c', 'engine/botlib/l_libvar.c', 'engine/botlib/l_log.c', 'engine/botlib/l_memory.c', 'engine/botlib/l_precomp.c', 'engine/botlib/l_script.c', 'engine/botlib/l_struct.c', 'engine/jpeg-6/jcapimin.c', 'engine/jpeg-6/jchuff.c', 'engine/jpeg-6/jcinit.c', 'engine/jpeg-6/jccoefct.c', 'engine/jpeg-6/jccolor.c', 'engine/jpeg-6/jfdctflt.c', 'engine/jpeg-6/jcdctmgr.c', 'engine/jpeg-6/jcphuff.c', 'engine/jpeg-6/jcmainct.c', 'engine/jpeg-6/jcmarker.c', 'engine/jpeg-6/jcmaster.c', 'engine/jpeg-6/jcomapi.c', 'engine/jpeg-6/jcparam.c', 'engine/jpeg-6/jcprepct.c', 'engine/jpeg-6/jcsample.c', 'engine/jpeg-6/jdapimin.c', 'engine/jpeg-6/jdapistd.c', 'engine/jpeg-6/jdatasrc.c', 'engine/jpeg-6/jdcoefct.c', 'engine/jpeg-6/jdcolor.c', 'engine/jpeg-6/jddctmgr.c', 'engine/jpeg-6/jdhuff.c', 'engine/jpeg-6/jdinput.c', 'engine/jpeg-6/jdmainct.c', 'engine/jpeg-6/jdmarker.c', 'engine/jpeg-6/jdmaster.c', 'engine/jpeg-6/jdpostct.c', 'engine/jpeg-6/jdsample.c', 'engine/jpeg-6/jdtrans.c', 'engine/jpeg-6/jerror.c', 'engine/jpeg-6/jidctflt.c', 'engine/jpeg-6/jmemmgr.c', 'engine/jpeg-6/jmemnobs.c', 'engine/jpeg-6/jutils.c', 'engine/renderer/tr_animation.c', 'engine/renderer/tr_backend.c', 'engine/renderer/tr_bsp.c', 'engine/renderer/tr_cmds.c', 'engine/renderer/tr_curve.c', 'engine/renderer/tr_flares.c', 'engine/renderer/tr_font.c', 'engine/renderer/tr_image.c', 'engine/renderer/tr_init.c', 'engine/renderer/tr_light.c', 'engine/renderer/tr_main.c', 'engine/renderer/tr_marks.c', 'engine/renderer/tr_mesh.c', 'engine/renderer/tr_model.c', 'engine/renderer/tr_noise.c', 'engine/renderer/tr_scene.c', 'engine/renderer/tr_shade.c', 'engine/renderer/tr_shade_calc.c', 'engine/renderer/tr_shader.c', 'engine/renderer/tr_shadows.c', 'engine/renderer/tr_sky.c', 'engine/renderer/tr_surface.c', 'engine/renderer/tr_world.c', ] unix_src = [ 'engine/unix/unix_main.c', 'engine/unix/unix_net.c', 'engine/unix/unix_shared.c' ] linux_src = [ 'engine/unix/linux_glimp.c', 'engine/unix/linux_joystick.c', 'engine/unix/linux_qgl.c', 'engine/unix/linux_signals.c' ] vm_src = [ 'engine/qcommon/vm.c', 'engine/qcommon/vm_interpreted.c' ] asm_src = [ 'engine/unix/ftola.s', 'engine/unix/matha.s', 'engine/unix/snapvectora.s', 'engine/unix/snd_mixa.s' ] quake3_env.Append(CCFLAGS='-DBOTLIB') quake3_env.Append(CCFLAGS='-DC_ONLY') if sys.platform != 'win32': quake3_env.Append(LIBS=['X11', 'Xext', 'Xxf86dga', 'Xxf86vm']) quake3_env.Append(LIBS=['m', 'vorbisfile']) # The "dl" library is needed on Linux if fnmatch.fnmatch(sys.platform, 'linux*'): quake3_env.Append(LIBS=['dl']) if env['vm'] != 0 and env['vm_archs'].count(env['arch']) > 0: vm_src += ['engine/qcommon/vm_' + env['arch'] + '.c'] else: quake3_env.Append(CCFLAGS='-DNO_VM_COMPILED') if env['smp'] != 0: quake3_env.Append(CCFLAGS='-DSMP') quake3_env.Append(LIBS=['pthread']) if env['sound'] == 'oss': quake3_env.Program('quake3', [quake3_src, unix_src, linux_src, vm_src, 'engine/unix/linux_snd.c']) else: quake3_env.Append(CCFLAGS='-DUSE_SDL_SOUND') quake3_env.ParseConfig('sdl-config --cflags') quake3_env.ParseConfig('sdl-config --libs') quake3_env.Program('quake3', [quake3_src, unix_src, linux_src, vm_src, 'engine/unix/sdl_snd.c']) quake3_env.Install('#', 'quake3')