jedioutcast/code/unix/Makefile
2013-04-04 13:24:26 -05:00

988 lines
27 KiB
Makefile

#
# Quake3 Unix Makefile
#
# Currently build for the following:
# Linux i386 (full client)
# Linux Alpha (dedicated server only)
# SGI IRIX (full client)
#
# Nov '98 by Zoid <zoid@idsoftware.com>
#
# GNU Make required
#
PLATFORM=$(shell uname|tr '[:upper:]' '[:lower:]')
PLATFORM_RELEASE=$(shell uname -r)
###
### These paths are where you probably want to change things
###
# Where we are building to, libMesaVoodooGL.so.3.1 should be here, etc.
# the demo pk3 file should be here in demoq3/pak0.pk3 or baseq3/pak0.pk3
BUILD_DIR=/home/zoid/Quake3
# Where we are building from (where the source code should be!)
MOUNT_DIR=/devel/Quake3/q3code
#############################################################################
##
## You shouldn't have to touch anything below here
##
#############################################################################
DEMO_PAK=$(BUILD_DIR)/demoq3/pak0.pk3
BUILD_DEBUG_DIR=debug$(ARCH)$(GLIBC)
BUILD_RELEASE_DIR=release$(ARCH)$(GLIBC)
CLIENT_DIR=$(MOUNT_DIR)/client
SERVER_DIR=$(MOUNT_DIR)/server
REF_DIR=$(MOUNT_DIR)/renderer
COMMON_DIR=$(MOUNT_DIR)/qcommon
UNIX_DIR=$(MOUNT_DIR)/unix
GAME_DIR=$(MOUNT_DIR)/game
CGAME_DIR=$(MOUNT_DIR)/cgame
NULL_DIR=$(MOUNT_DIR)/null
#used for linux i386 builds
MESA_DIR=/usr/local/src/Mesa-3.0
VERSION=1.05
VERSION_FN=$(VERSION)$(GLIBC)
RPM_RELEASE=9
#############################################################################
# SETUP AND BUILD
#############################################################################
ifeq ($(PLATFORM),irix)
ARCH=mips #default to MIPS
VENDOR=sgi
GLIBC= #libc is irrelevant
CC=cc
BASE_CFLAGS=-Dstricmp=strcasecmp -Xcpluscomm -woff 1185 -mips3 \
-nostdinc -I. -I$(ROOT)/usr/include
RELEASE_CFLAGS=$(BASE_CFLAGS) -O3
DEBUG_CFLAGS=$(BASE_CFLAGS) -g
SHLIBEXT=so
SHLIBCFLAGS=
SHLIBLDFLAGS=-shared
LDFLAGS=-ldl -lm
GLLDFLAGS=-L/usr/X11/lib -lGL -lX11 -lXext -lm
TARGETS=$(BUILDDIR)/sgiquake3 \
$(BUILDDIR)/qagame$(ARCH).$(SHLIBEXT) \
$(BUILDDIR)/cgame$(ARCH).$(SHLIBEXT)
else
ifeq ($(PLATFORM),linux)
ifneq (,$(findstring libc6,$(shell if [ -e /lib/libc.so.6* ];then echo libc6;fi)))
GLIBC=-glibc
else
GLIBC=
endif #libc6 test
ifneq (,$(findstring alpha,$(shell uname -m)))
ARCH=axp
RPMARCH=alpha
VENDOR=dec
else #default to i386
ARCH=i386
RPMARCH=i386
VENDOR=unknown
endif #alpha test
BASE_CFLAGS=-Dstricmp=strcasecmp -I$(MESA_DIR)/include -I/usr/include/glide \
-DREF_HARD_LINKED -pipe
DEBUG_CFLAGS=$(BASE_CFLAGS) -g
ifeq ($(ARCH),axp)
RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG -O6 -ffast-math -funroll-loops -fomit-frame-pointer -fexpensive-optimizations
else
RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG -O3 -m486 -fomit-frame-pointer -pipe -ffast-math -fexpensive-optimizations -malign-loops=2 -malign-jumps=2 -malign-functions=2
endif
CC=gcc
SHLIBEXT=so
SHLIBCFLAGS=-fPIC
SHLIBLDFLAGS=-shared
LDFLAGS=-ldl -lm
GLLDFLAGS=-L/usr/X11R6/lib -L$(MESA_DIR)/lib -lX11 -lXext -lXxf86dga -lXxf86vm
GL_SVGA_LDFLAGS=-L/usr/X11R6/lib -L$(MESA_DIR)/lib -lX11 -lXext -lvga
ifeq ($(ARCH),axp)
TARGETS=$(BUILDDIR)/linuxq3ded $(BUILDDIR)/qagame$(ARCH).$(SHLIBEXT)
else
# $(BUILDDIR)/linuxquake3.vga
TARGETS=\
$(BUILDDIR)/linuxquake3 \
$(BUILDDIR)/qagame$(ARCH).$(SHLIBEXT) \
$(BUILDDIR)/cgame$(ARCH).$(SHLIBEXT)
#$(BUILDDIR)/quake3
endif
else #generic
CC=cc
BASE_CFLAGS=-Dstricmp=strcasecmp
DEBUG_CFLAGS=$(BASE_CFLAGS) -g
RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG -O
SHLIBEXT=so
SHLIBCFLAGS=-fPIC
SHLIBLDFLAGS=-shared
LDFLAGS=-ldl -lm
TARGETS=$(BUILDDIR)/q3ded $(BUILDDIR)/qagame$(ARCH).$(SHLIBEXT)
endif #Linux
endif #IRIX
DO_CC=$(CC) $(CFLAGS) -o $@ -c $<
DO_DEBUG_CC=$(CC) $(DEBUG_CFLAGS) -o $@ -c $<
DO_SHLIB_CC=$(CC) $(CFLAGS) $(SHLIBCFLAGS) -o $@ -c $<
DO_SHLIB_DEBUG_CC=$(CC) $(DEBUG_CFLAGS) $(SHLIBCFLAGS) -o $@ -c $<
DO_AS=$(CC) $(CFLAGS) -DELF -x assembler-with-cpp -o $@ -c $<
#### DEFAULT TARGET
# default: build_release
build_debug:
$(MAKE) targets BUILDDIR=$(BUILD_DEBUG_DIR) CFLAGS="$(DEBUG_CFLAGS)"
build_release:
$(MAKE) targets BUILDDIR=$(BUILD_RELEASE_DIR) CFLAGS="$(RELEASE_CFLAGS)"
#Build both debug and release builds
all: build_debug build_release
targets: makedirs $(TARGETS)
makedirs:
@if [ ! -d $(BUILDDIR) ];then mkdir $(BUILDDIR);fi
@if [ ! -d $(BUILDDIR)/client ];then mkdir $(BUILDDIR)/client;fi
@if [ ! -d $(BUILDDIR)/ded ];then mkdir $(BUILDDIR)/ded;fi
@if [ ! -d $(BUILDDIR)/ref ];then mkdir $(BUILDDIR)/ref;fi
@if [ ! -d $(BUILDDIR)/game ];then mkdir $(BUILDDIR)/game;fi
@if [ ! -d $(BUILDDIR)/cgame ];then mkdir $(BUILDDIR)/cgame;fi
#############################################################################
# CLIENT/SERVER
#############################################################################
QUAKE3_OBJS = \
$(BUILDDIR)/client/cl_cgame.o \
$(BUILDDIR)/client/cl_cin.o \
$(BUILDDIR)/client/cl_console.o \
$(BUILDDIR)/client/cl_input.o \
$(BUILDDIR)/client/cl_keys.o \
$(BUILDDIR)/client/cl_main.o \
$(BUILDDIR)/client/cl_parse.o \
$(BUILDDIR)/client/cl_scrn.o \
$(BUILDDIR)/client/snd_dma.o \
$(BUILDDIR)/client/snd_mem.o \
$(BUILDDIR)/client/snd_mix.o \
$(BUILDDIR)/client/sv_bot.o \
$(BUILDDIR)/client/sv_client.o \
$(BUILDDIR)/client/sv_ccmds.o \
$(BUILDDIR)/client/sv_game.o \
$(BUILDDIR)/client/sv_init.o \
$(BUILDDIR)/client/sv_main.o \
$(BUILDDIR)/client/sv_snapshot.o \
$(BUILDDIR)/client/sv_world.o \
$(BUILDDIR)/client/ui_arena.o \
$(BUILDDIR)/client/ui_connect.o \
$(BUILDDIR)/client/ui_controls.o \
$(BUILDDIR)/client/ui_demo.o \
$(BUILDDIR)/client/ui_maps.o \
$(BUILDDIR)/client/ui_menu.o \
$(BUILDDIR)/client/ui_network.o \
$(BUILDDIR)/client/ui_preferences.o \
$(BUILDDIR)/client/ui_qmenu.o \
$(BUILDDIR)/client/ui_servers.o \
$(BUILDDIR)/client/ui_startserver.o \
$(BUILDDIR)/client/ui_video.o \
\
$(BUILDDIR)/client/cm_load.o \
$(BUILDDIR)/client/cm_patch.o \
$(BUILDDIR)/client/cm_polylib.o \
$(BUILDDIR)/client/cm_tag.o \
$(BUILDDIR)/client/cm_test.o \
$(BUILDDIR)/client/cm_trace.o \
$(BUILDDIR)/client/cmd.o \
$(BUILDDIR)/client/common.o \
$(BUILDDIR)/client/cvar.o \
$(BUILDDIR)/client/files.o \
$(BUILDDIR)/client/gameinfo.o \
$(BUILDDIR)/client/md4.o \
$(BUILDDIR)/client/msg.o \
$(BUILDDIR)/client/net_chan.o \
$(BUILDDIR)/client/vm.o \
\
$(BUILDDIR)/client/q_shared.o \
$(BUILDDIR)/client/q_math.o \
\
$(BUILDDIR)/client/tr_backend.o \
$(BUILDDIR)/client/tr_bsp.o \
$(BUILDDIR)/client/tr_calc.o \
$(BUILDDIR)/client/tr_calc_3dnow.o \
$(BUILDDIR)/client/tr_calc_c.o \
$(BUILDDIR)/client/tr_calc_kni.o \
$(BUILDDIR)/client/tr_cmds.o \
$(BUILDDIR)/client/tr_curve.o \
$(BUILDDIR)/client/tr_draw.o \
$(BUILDDIR)/client/tr_flares.o \
$(BUILDDIR)/client/tr_image.o \
$(BUILDDIR)/client/tr_init.o \
$(BUILDDIR)/client/tr_light.o \
$(BUILDDIR)/client/tr_main.o \
$(BUILDDIR)/client/tr_mesh.o \
$(BUILDDIR)/client/tr_misc.o \
$(BUILDDIR)/client/tr_model.o \
$(BUILDDIR)/client/tr_noise.o \
$(BUILDDIR)/client/tr_scene.o \
$(BUILDDIR)/client/tr_shade.o \
$(BUILDDIR)/client/tr_shader.o \
$(BUILDDIR)/client/tr_shade_calc.o \
$(BUILDDIR)/client/tr_shadows.o \
$(BUILDDIR)/client/tr_smp.o \
$(BUILDDIR)/client/tr_sky.o \
$(BUILDDIR)/client/tr_surf.o \
$(BUILDDIR)/client/tr_world.o \
\
$(BUILDDIR)/client/unix_main.o \
$(BUILDDIR)/client/unix_net.o \
$(BUILDDIR)/client/unix_shared.o
#platform specific objects
ifeq ($(PLATFORM),irix)
QUAKE3_PLATOBJ=\
$(BUILDDIR)/client/irix_qgl.o \
$(BUILDDIR)/client/irix_glimp.o \
$(BUILDDIR)/client/irix_snd.o
else
ifeq ($(PLATFORM),linux)
ifeq ($(ARCH),axp)
QUAKE3_PLATOBJ=
else
QUAKE3_PLATOBJ=\
$(BUILDDIR)/client/linux_qgl.o \
$(BUILDDIR)/client/linux_glimp.o \
$(BUILDDIR)/client/linux_snd.o \
$(BUILDDIR)/client/snd_mixa.o \
$(BUILDDIR)/client/matha.o \
$(BUILDDIR)/client/sys_dosa.o
QUAKE3_VGA=\
$(BUILDDIR)/client/linux_qgl.o \
$(BUILDDIR)/client/linux_glimp_vga.o \
$(BUILDDIR)/client/linux_input_vga.o \
$(BUILDDIR)/client/linux_snd.o \
$(BUILDDIR)/client/snd_mixa.o \
$(BUILDDIR)/client/matha.o \
$(BUILDDIR)/client/sys_dosa.o
endif
endif #Linux
endif #IRIX
$(BUILDDIR)/linuxquake3 : $(QUAKE3_OBJS) $(QUAKE3_PLATOBJ)
$(CC) $(CFLAGS) -o $@ $(QUAKE3_OBJS) $(QUAKE3_PLATOBJ) $(GLLDFLAGS) $(LDFLAGS)
ifeq ($(PLATFORM),linux)
ifeq ($(ARCH),i386)
$(BUILDDIR)/linuxquake3.vga : $(QUAKE3_OBJS) $(QUAKE3_VGA)
$(CC) $(CFLAGS) -o $@ $(QUAKE3_OBJS) $(QUAKE3_VGA) $(GL_SVGA_LDFLAGS) $(LDFLAGS)
endif
endif
$(BUILDDIR)/client/cl_cgame.o : $(CLIENT_DIR)/cl_cgame.c
$(DO_CC)
$(BUILDDIR)/client/cl_cin.o : $(CLIENT_DIR)/cl_cin.c
$(DO_CC)
$(BUILDDIR)/client/cl_console.o : $(CLIENT_DIR)/cl_console.c
$(DO_CC)
$(BUILDDIR)/client/cl_input.o : $(CLIENT_DIR)/cl_input.c
$(DO_CC)
$(BUILDDIR)/client/cl_keys.o : $(CLIENT_DIR)/cl_keys.c
$(DO_CC)
$(BUILDDIR)/client/cl_main.o : $(CLIENT_DIR)/cl_main.c
$(DO_CC)
$(BUILDDIR)/client/cl_parse.o : $(CLIENT_DIR)/cl_parse.c
$(DO_CC)
$(BUILDDIR)/client/cl_scrn.o : $(CLIENT_DIR)/cl_scrn.c
$(DO_CC)
$(BUILDDIR)/client/snd_dma.o : $(CLIENT_DIR)/snd_dma.c
$(DO_CC)
$(BUILDDIR)/client/snd_mem.o : $(CLIENT_DIR)/snd_mem.c
$(DO_CC)
$(BUILDDIR)/client/snd_mix.o : $(CLIENT_DIR)/snd_mix.c
$(DO_CC)
$(BUILDDIR)/client/sv_bot.o : $(SERVER_DIR)/sv_bot.c
$(DO_CC)
$(BUILDDIR)/client/sv_client.o : $(SERVER_DIR)/sv_client.c
$(DO_CC)
$(BUILDDIR)/client/sv_ccmds.o : $(SERVER_DIR)/sv_ccmds.c
$(DO_CC)
$(BUILDDIR)/client/sv_game.o : $(SERVER_DIR)/sv_game.c
$(DO_CC)
$(BUILDDIR)/client/sv_init.o : $(SERVER_DIR)/sv_init.c
$(DO_CC)
$(BUILDDIR)/client/sv_main.o : $(SERVER_DIR)/sv_main.c
$(DO_CC)
$(BUILDDIR)/client/sv_snapshot.o : $(SERVER_DIR)/sv_snapshot.c
$(DO_CC)
$(BUILDDIR)/client/sv_world.o : $(SERVER_DIR)/sv_world.c
$(DO_CC)
$(BUILDDIR)/client/ui_arena.o : $(CLIENT_DIR)/ui_arena.c
$(DO_CC)
$(BUILDDIR)/client/ui_connect.o : $(CLIENT_DIR)/ui_connect.c
$(DO_CC)
$(BUILDDIR)/client/ui_controls.o : $(CLIENT_DIR)/ui_controls.c
$(DO_CC)
$(BUILDDIR)/client/ui_demo.o : $(CLIENT_DIR)/ui_demo.c
$(DO_CC)
$(BUILDDIR)/client/ui_maps.o : $(CLIENT_DIR)/ui_maps.c
$(DO_CC)
$(BUILDDIR)/client/ui_menu.o : $(CLIENT_DIR)/ui_menu.c
$(DO_CC)
$(BUILDDIR)/client/ui_network.o : $(CLIENT_DIR)/ui_network.c
$(DO_CC)
$(BUILDDIR)/client/ui_preferences.o : $(CLIENT_DIR)/ui_preferences.c
$(DO_CC)
$(BUILDDIR)/client/ui_qmenu.o : $(CLIENT_DIR)/ui_qmenu.c
$(DO_CC)
$(BUILDDIR)/client/ui_servers.o : $(CLIENT_DIR)/ui_servers.c
$(DO_CC)
$(BUILDDIR)/client/ui_startserver.o : $(CLIENT_DIR)/ui_startserver.c
$(DO_CC)
$(BUILDDIR)/client/ui_video.o : $(UNIX_DIR)/ui_video.c
$(DO_CC)
$(BUILDDIR)/client/cm_trace.o : $(COMMON_DIR)/cm_trace.c
$(DO_CC)
$(BUILDDIR)/client/cm_load.o : $(COMMON_DIR)/cm_load.c
$(DO_CC)
$(BUILDDIR)/client/cm_test.o : $(COMMON_DIR)/cm_test.c
$(DO_CC)
$(BUILDDIR)/client/cm_patch.o : $(COMMON_DIR)/cm_patch.c
$(DO_CC)
$(BUILDDIR)/client/cm_polylib.o : $(COMMON_DIR)/cm_polylib.c
$(DO_CC)
$(BUILDDIR)/client/cm_tag.o : $(COMMON_DIR)/cm_tag.c
$(DO_CC)
$(BUILDDIR)/client/cmd.o : $(COMMON_DIR)/cmd.c
$(DO_CC)
$(BUILDDIR)/client/common.o : $(COMMON_DIR)/common.c
$(DO_CC)
$(BUILDDIR)/client/cvar.o : $(COMMON_DIR)/cvar.c
$(DO_CC)
$(BUILDDIR)/client/files.o : $(COMMON_DIR)/files.c
$(DO_CC)
$(BUILDDIR)/client/gameinfo.o : $(COMMON_DIR)/gameinfo.c
$(DO_CC)
$(BUILDDIR)/client/md4.o : $(COMMON_DIR)/md4.c
$(DO_CC)
$(BUILDDIR)/client/msg.o : $(COMMON_DIR)/msg.c
$(DO_CC)
$(BUILDDIR)/client/net_chan.o : $(COMMON_DIR)/net_chan.c
$(DO_CC)
$(BUILDDIR)/client/vm.o : $(COMMON_DIR)/vm.c
$(DO_CC)
$(BUILDDIR)/client/q_shared.o : $(GAME_DIR)/q_shared.c
$(DO_DEBUG_CC)
$(BUILDDIR)/client/q_math.o : $(GAME_DIR)/q_math.c
$(DO_CC)
$(BUILDDIR)/client/tr_bsp.o : $(REF_DIR)/tr_bsp.c
$(DO_CC)
$(BUILDDIR)/client/tr_backend.o : $(REF_DIR)/tr_backend.c
$(DO_CC)
$(BUILDDIR)/client/tr_calc.o : $(REF_DIR)/tr_calc.c
$(DO_CC)
$(BUILDDIR)/client/tr_calc_3dnow.o : $(REF_DIR)/tr_calc_3dnow.c
$(DO_CC)
$(BUILDDIR)/client/tr_calc_c.o : $(REF_DIR)/tr_calc_c.c
$(DO_CC)
$(BUILDDIR)/client/tr_calc_kni.o : $(REF_DIR)/tr_calc_kni.c
$(DO_CC)
$(BUILDDIR)/client/tr_cmds.o : $(REF_DIR)/tr_cmds.c
$(DO_CC)
$(BUILDDIR)/client/tr_curve.o : $(REF_DIR)/tr_curve.c
$(DO_CC)
$(BUILDDIR)/client/tr_draw.o : $(REF_DIR)/tr_draw.c
$(DO_CC)
$(BUILDDIR)/client/tr_flares.o : $(REF_DIR)/tr_flares.c
$(DO_CC)
$(BUILDDIR)/client/tr_image.o : $(REF_DIR)/tr_image.c
$(DO_CC)
$(BUILDDIR)/client/tr_init.o : $(REF_DIR)/tr_init.c
$(DO_CC)
$(BUILDDIR)/client/tr_light.o : $(REF_DIR)/tr_light.c
$(DO_CC)
$(BUILDDIR)/client/tr_main.o : $(REF_DIR)/tr_main.c
$(DO_CC)
$(BUILDDIR)/client/tr_mesh.o : $(REF_DIR)/tr_mesh.c
$(DO_CC)
$(BUILDDIR)/client/tr_misc.o : $(REF_DIR)/tr_misc.c
$(DO_CC)
$(BUILDDIR)/client/tr_model.o : $(REF_DIR)/tr_model.c
$(DO_CC)
$(BUILDDIR)/client/tr_noise.o : $(REF_DIR)/tr_noise.c
$(DO_CC)
$(BUILDDIR)/client/tr_scene.o : $(REF_DIR)/tr_scene.c
$(DO_CC)
$(BUILDDIR)/client/tr_shade.o : $(REF_DIR)/tr_shade.c
$(DO_CC)
$(BUILDDIR)/client/tr_shader.o : $(REF_DIR)/tr_shader.c
$(DO_CC)
$(BUILDDIR)/client/tr_shade_calc.o : $(REF_DIR)/tr_shade_calc.c
$(DO_CC)
$(BUILDDIR)/client/tr_shadows.o : $(REF_DIR)/tr_shadows.c
$(DO_CC)
$(BUILDDIR)/client/tr_sky.o : $(REF_DIR)/tr_sky.c
$(DO_CC)
$(BUILDDIR)/client/tr_smp.o : $(REF_DIR)/tr_smp.c
$(DO_CC)
$(BUILDDIR)/client/tr_stripify.o : $(REF_DIR)/tr_stripify.c
$(DO_CC)
$(BUILDDIR)/client/tr_subdivide.o : $(REF_DIR)/tr_subdivide.c
$(DO_CC)
$(BUILDDIR)/client/tr_surf.o : $(REF_DIR)/tr_surf.c
$(DO_CC)
$(BUILDDIR)/client/tr_world.o : $(REF_DIR)/tr_world.c
$(DO_CC)
$(BUILDDIR)/client/unix_qgl.o : $(UNIX_DIR)/unix_qgl.c
$(DO_CC)
$(BUILDDIR)/client/unix_dedicated.o : $(UNIX_DIR)/unix_dedicated.c
$(DO_CC)
$(BUILDDIR)/client/unix_earlycon.o : $(UNIX_DIR)/unix_earlycon.c
$(DO_CC)
$(BUILDDIR)/client/unix_main.o : $(UNIX_DIR)/unix_main.c
$(DO_CC)
$(BUILDDIR)/client/unix_net.o : $(UNIX_DIR)/unix_net.c
$(DO_CC)
$(BUILDDIR)/client/unix_shared.o : $(UNIX_DIR)/unix_shared.c
$(DO_CC)
$(BUILDDIR)/client/irix_glimp.o : $(UNIX_DIR)/irix_glimp.c
$(DO_CC)
$(BUILDDIR)/client/irix_snd.o : $(UNIX_DIR)/irix_snd.c
$(DO_CC)
$(BUILDDIR)/client/irix_input.o : $(UNIX_DIR)/irix_input.c
$(DO_CC)
$(BUILDDIR)/client/linux_glimp.o : $(UNIX_DIR)/linux_glimp.c
$(DO_CC)
$(BUILDDIR)/client/linux_qgl.o : $(UNIX_DIR)/linux_qgl.c
$(DO_CC)
$(BUILDDIR)/client/linux_input.o : $(UNIX_DIR)/linux_input.c
$(DO_CC)
$(BUILDDIR)/client/linux_glimp_vga.o : $(UNIX_DIR)/linux_glimp_vga.c
$(DO_CC)
$(BUILDDIR)/client/linux_snd.o : $(UNIX_DIR)/linux_snd.c
$(DO_CC)
$(BUILDDIR)/client/snd_mixa.o : $(UNIX_DIR)/snd_mixa.s
$(DO_AS)
$(BUILDDIR)/client/matha.o : $(UNIX_DIR)/matha.s
$(DO_AS)
$(BUILDDIR)/client/sys_dosa.o : $(UNIX_DIR)/sys_dosa.s
$(DO_AS)
$(BUILDDIR)/client/linux_input_vga.o : $(UNIX_DIR)/linux_input_vga.c
$(DO_CC)
#############################################################################
# DEDICATED SERVER
#############################################################################
Q3DED_OBJS = \
$(BUILDDIR)/ded/sv_bot.o \
$(BUILDDIR)/ded/sv_client.o \
$(BUILDDIR)/ded/sv_ccmds.o \
$(BUILDDIR)/ded/sv_game.o \
$(BUILDDIR)/ded/sv_init.o \
$(BUILDDIR)/ded/sv_main.o \
$(BUILDDIR)/ded/sv_snapshot.o \
$(BUILDDIR)/ded/sv_world.o \
\
$(BUILDDIR)/ded/cm_trace.o \
$(BUILDDIR)/ded/cm_load.o \
$(BUILDDIR)/ded/cm_test.o \
$(BUILDDIR)/ded/cm_patch.o \
$(BUILDDIR)/ded/cm_tag.o \
$(BUILDDIR)/ded/cmd.o \
$(BUILDDIR)/ded/common.o \
$(BUILDDIR)/ded/cvar.o \
$(BUILDDIR)/ded/files.o \
$(BUILDDIR)/ded/gameinfo.o \
$(BUILDDIR)/ded/md4.o \
$(BUILDDIR)/ded/msg.o \
$(BUILDDIR)/ded/net_chan.o \
\
$(BUILDDIR)/ded/unix_dedicated.o \
$(BUILDDIR)/ded/unix_main.o \
$(BUILDDIR)/ded/unix_net.o \
$(BUILDDIR)/ded/unix_shared.o \
\
$(BUILDDIR)/ded/cl_null.o
$(BUILDDIR)/linuxq3ded : $(Q3DED_OBJS)
$(CC) $(CFLAGS) -o $@ $(Q3DED_OBJS) $(LDFLAGS)
$(BUILDDIR)/ded/sv_bot.o : $(SERVER_DIR)/sv_bot.c
$(DO_DED_CC)
$(BUILDDIR)/ded/sv_client.o : $(SERVER_DIR)/sv_client.c
$(DO_DED_CC)
$(BUILDDIR)/ded/sv_ccmds.o : $(SERVER_DIR)/sv_ccmds.c
$(DO_DED_CC)
$(BUILDDIR)/ded/sv_game.o : $(SERVER_DIR)/sv_game.c
$(DO_DED_CC)
$(BUILDDIR)/ded/sv_init.o : $(SERVER_DIR)/sv_init.c
$(DO_DED_CC)
$(BUILDDIR)/ded/sv_main.o : $(SERVER_DIR)/sv_main.c
$(DO_DED_CC)
$(BUILDDIR)/ded/sv_snapshot.o : $(SERVER_DIR)/sv_snapshot.c
$(DO_DED_CC)
$(BUILDDIR)/ded/sv_world.o : $(SERVER_DIR)/sv_world.c
$(DO_DED_CC)
$(BUILDDIR)/ded/cm_trace.o : $(COMMON_DIR)/cm_trace.c
$(DO_DED_CC)
$(BUILDDIR)/ded/cm_load.o : $(COMMON_DIR)/cm_load.c
$(DO_DED_CC)
$(BUILDDIR)/ded/cm_test.o : $(COMMON_DIR)/cm_test.c
$(DO_DED_CC)
$(BUILDDIR)/ded/cm_patch.o : $(COMMON_DIR)/cm_patch.c
$(DO_DED_CC)
$(BUILDDIR)/ded/cm_tag.o : $(COMMON_DIR)/cm_tag.c
$(DO_DED_CC)
$(BUILDDIR)/ded/cmd.o : $(COMMON_DIR)/cmd.c
$(DO_DED_CC)
$(BUILDDIR)/ded/common.o : $(COMMON_DIR)/common.c
$(DO_DED_CC)
$(BUILDDIR)/ded/cvar.o : $(COMMON_DIR)/cvar.c
$(DO_DED_CC)
$(BUILDDIR)/ded/files.o : $(COMMON_DIR)/files.c
$(DO_DED_CC)
$(BUILDDIR)/ded/gameinfo.o : $(COMMON_DIR)/gameinfo.c
$(DO_DED_CC)
$(BUILDDIR)/ded/md4.o : $(COMMON_DIR)/md4.c
$(DO_DED_CC)
$(BUILDDIR)/ded/msg.o : $(COMMON_DIR)/msg.c
$(DO_DED_CC)
$(BUILDDIR)/ded/net_chan.o : $(COMMON_DIR)/net_chan.c
$(DO_DED_CC)
$(BUILDDIR)/ded/unix_dedicated.o : $(UNIX_DIR)/unix_dedicated.c
$(DO_DED_CC)
$(BUILDDIR)/ded/unix_main.o : $(UNIX_DIR)/unix_main.c
$(DO_DED_CC)
$(BUILDDIR)/ded/unix_net.o : $(UNIX_DIR)/unix_net.c
$(DO_DED_CC)
$(BUILDDIR)/ded/unix_shared.o : $(UNIX_DIR)/unix_shared.c
$(DO_DED_CC)
$(BUILDDIR)/ded/cl_null.o : $(NULL_DIR)/cl_null.c
$(DO_DED_CC)
#############################################################################
# GAME
#############################################################################
GAME_OBJS = \
$(BUILDDIR)/game/b_ai.o \
$(BUILDDIR)/game/b_files.o \
$(BUILDDIR)/game/b_items.o \
$(BUILDDIR)/game/b_main.o \
$(BUILDDIR)/game/b_nav.o \
$(BUILDDIR)/game/b_navgen.o \
$(BUILDDIR)/game/bg_misc.o \
$(BUILDDIR)/game/bg_pmove.o \
$(BUILDDIR)/game/g_active.o \
$(BUILDDIR)/game/g_aim.o \
$(BUILDDIR)/game/g_client.o \
$(BUILDDIR)/game/g_cmds.o \
$(BUILDDIR)/game/g_combat.o \
$(BUILDDIR)/game/g_items.o \
$(BUILDDIR)/game/g_main.o \
$(BUILDDIR)/game/g_mem.o \
$(BUILDDIR)/game/g_misc.o \
$(BUILDDIR)/game/g_missile.o \
$(BUILDDIR)/game/g_mover.o \
$(BUILDDIR)/game/g_spawn.o \
$(BUILDDIR)/game/g_svcmds.o \
$(BUILDDIR)/game/g_target.o \
$(BUILDDIR)/game/g_team.o \
$(BUILDDIR)/game/g_trigger.o \
$(BUILDDIR)/game/g_utils.o \
$(BUILDDIR)/game/g_weapon.o \
$(BUILDDIR)/game/q_shared.o \
$(BUILDDIR)/game/q_math.o
$(BUILDDIR)/qagame$(ARCH).$(SHLIBEXT) : $(GAME_OBJS)
$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(GAME_OBJS)
$(BUILDDIR)/game/b_ai.o : $(GAME_DIR)/b_ai.c
$(DO_SHLIB_CC)
$(BUILDDIR)/game/b_files.o : $(GAME_DIR)/b_files.c
$(DO_SHLIB_CC)
$(BUILDDIR)/game/b_items.o : $(GAME_DIR)/b_items.c
$(DO_SHLIB_CC)
$(BUILDDIR)/game/b_main.o : $(GAME_DIR)/b_main.c
$(DO_SHLIB_CC)
$(BUILDDIR)/game/b_nav.o : $(GAME_DIR)/b_nav.c
$(DO_SHLIB_CC)
$(BUILDDIR)/game/b_navgen.o : $(GAME_DIR)/b_navgen.c
$(DO_SHLIB_CC)
$(BUILDDIR)/game/bg_misc.o : $(GAME_DIR)/bg_misc.c
$(DO_SHLIB_CC)
$(BUILDDIR)/game/bg_pmove.o : $(GAME_DIR)/bg_pmove.c
$(DO_SHLIB_CC)
$(BUILDDIR)/game/g_active.o : $(GAME_DIR)/g_active.c
$(DO_SHLIB_CC)
$(BUILDDIR)/game/g_aim.o : $(GAME_DIR)/g_aim.c
$(DO_SHLIB_CC)
$(BUILDDIR)/game/g_client.o : $(GAME_DIR)/g_client.c
$(DO_SHLIB_CC)
$(BUILDDIR)/game/g_cmds.o : $(GAME_DIR)/g_cmds.c
$(DO_SHLIB_CC)
$(BUILDDIR)/game/g_combat.o : $(GAME_DIR)/g_combat.c
$(DO_SHLIB_CC)
$(BUILDDIR)/game/g_items.o : $(GAME_DIR)/g_items.c
$(DO_SHLIB_CC)
$(BUILDDIR)/game/g_main.o : $(GAME_DIR)/g_main.c
$(DO_SHLIB_CC)
$(BUILDDIR)/game/g_mem.o : $(GAME_DIR)/g_mem.c
$(DO_SHLIB_CC)
$(BUILDDIR)/game/g_misc.o : $(GAME_DIR)/g_misc.c
$(DO_SHLIB_CC)
$(BUILDDIR)/game/g_missile.o : $(GAME_DIR)/g_missile.c
$(DO_SHLIB_CC)
$(BUILDDIR)/game/g_mover.o : $(GAME_DIR)/g_mover.c
$(DO_SHLIB_CC)
$(BUILDDIR)/game/g_spawn.o : $(GAME_DIR)/g_spawn.c
$(DO_SHLIB_CC)
$(BUILDDIR)/game/g_svcmds.o : $(GAME_DIR)/g_svcmds.c
$(DO_SHLIB_CC)
$(BUILDDIR)/game/g_target.o : $(GAME_DIR)/g_target.c
$(DO_SHLIB_CC)
$(BUILDDIR)/game/g_team.o : $(GAME_DIR)/g_team.c
$(DO_SHLIB_CC)
$(BUILDDIR)/game/g_trigger.o : $(GAME_DIR)/g_trigger.c
$(DO_SHLIB_CC)
$(BUILDDIR)/game/g_utils.o : $(GAME_DIR)/g_utils.c
$(DO_SHLIB_CC)
$(BUILDDIR)/game/g_weapon.o : $(GAME_DIR)/g_weapon.c
$(DO_SHLIB_CC)
$(BUILDDIR)/game/q_shared.o : $(GAME_DIR)/q_shared.c
$(DO_SHLIB_DEBUG_CC)
$(BUILDDIR)/game/q_math.o : $(GAME_DIR)/q_math.c
$(DO_SHLIB_CC)
#############################################################################
# CGAME
#############################################################################
CGAME_OBJS = \
$(BUILDDIR)/cgame/bg_misc.o \
$(BUILDDIR)/cgame/bg_pmove.o \
$(BUILDDIR)/cgame/cg_draw.o \
$(BUILDDIR)/cgame/cg_effects.o \
$(BUILDDIR)/cgame/cg_ents.o \
$(BUILDDIR)/cgame/cg_event.o \
$(BUILDDIR)/cgame/cg_info.o \
$(BUILDDIR)/cgame/cg_localents.o \
$(BUILDDIR)/cgame/cg_main.o \
$(BUILDDIR)/cgame/cg_marks.o \
$(BUILDDIR)/cgame/cg_menu.o \
$(BUILDDIR)/cgame/cg_players.o \
$(BUILDDIR)/cgame/cg_predict.o \
$(BUILDDIR)/cgame/cg_scoreboard.o \
$(BUILDDIR)/cgame/cg_snapshot.o \
$(BUILDDIR)/cgame/cg_view.o \
$(BUILDDIR)/cgame/cg_weapons.o \
$(BUILDDIR)/cgame/q_shared.o \
$(BUILDDIR)/cgame/q_math.o
$(BUILDDIR)/cgame$(ARCH).$(SHLIBEXT) : $(CGAME_OBJS)
$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(CGAME_OBJS)
$(BUILDDIR)/cgame/bg_misc.o : $(GAME_DIR)/bg_misc.c
$(DO_SHLIB_CC)
$(BUILDDIR)/cgame/bg_pmove.o : $(GAME_DIR)/bg_pmove.c
$(DO_SHLIB_CC)
$(BUILDDIR)/cgame/cg_draw.o : $(CGAME_DIR)/cg_draw.c
$(DO_SHLIB_CC)
$(BUILDDIR)/cgame/cg_effects.o : $(CGAME_DIR)/cg_effects.c
$(DO_SHLIB_CC)
$(BUILDDIR)/cgame/cg_ents.o : $(CGAME_DIR)/cg_ents.c
$(DO_SHLIB_CC)
$(BUILDDIR)/cgame/cg_event.o : $(CGAME_DIR)/cg_event.c
$(DO_SHLIB_CC)
$(BUILDDIR)/cgame/cg_info.o : $(CGAME_DIR)/cg_info.c
$(DO_SHLIB_CC)
$(BUILDDIR)/cgame/cg_localents.o : $(CGAME_DIR)/cg_localents.c
$(DO_SHLIB_CC)
$(BUILDDIR)/cgame/cg_main.o : $(CGAME_DIR)/cg_main.c
$(DO_SHLIB_CC)
$(BUILDDIR)/cgame/cg_marks.o : $(CGAME_DIR)/cg_marks.c
$(DO_SHLIB_CC)
$(BUILDDIR)/cgame/cg_menu.o : $(CGAME_DIR)/cg_menu.c
$(DO_SHLIB_CC)
$(BUILDDIR)/cgame/cg_players.o : $(CGAME_DIR)/cg_players.c
$(DO_SHLIB_CC)
$(BUILDDIR)/cgame/cg_predict.o : $(CGAME_DIR)/cg_predict.c
$(DO_SHLIB_CC)
$(BUILDDIR)/cgame/cg_scoreboard.o : $(CGAME_DIR)/cg_scoreboard.c
$(DO_SHLIB_CC)
$(BUILDDIR)/cgame/cg_snapshot.o : $(CGAME_DIR)/cg_snapshot.c
$(DO_SHLIB_CC)
$(BUILDDIR)/cgame/cg_view.o : $(CGAME_DIR)/cg_view.c
$(DO_SHLIB_CC)
$(BUILDDIR)/cgame/cg_weapons.o : $(CGAME_DIR)/cg_weapons.c
$(DO_SHLIB_CC)
$(BUILDDIR)/cgame/q_shared.o : $(GAME_DIR)/q_shared.c
$(DO_SHLIB_DEBUG_CC)
$(BUILDDIR)/cgame/q_math.o : $(GAME_DIR)/q_math.c
$(DO_SHLIB_CC)
#############################################################################
# RPM
#############################################################################
###### DISABLED
TMPDIR=/var/tmp
TARDIR=$(TMPDIR)/q3test
TARFILE = q3test-$(VERSION_FN)-$(RPM_RELEASE).$(ARCH).tar
tar:
if [ ! -d archives ];then mkdir archives;chmod 755 archives;fi
$(MAKE) copyfiles COPYDIR=$(TARDIR)
cd $(TARDIR)/..; tar cvf $(TARFILE) q3test && gzip -9 $(TARFILE)
mv $(TARDIR)/../$(TARFILE).gz archives/.
chmod 644 archives/$(TARFILE).gz
rm -rf $(TARDIR)
# Make RPMs. You need to be root to make this work
RPMROOT=/usr/src/redhat
RPM = rpm
RPMFLAGS = -bb
INSTALLDIR = /usr/local/games/q3test
RPMDIR = $(TMPDIR)/q3test-$(VERSION_FN)
DESTDIR= $(RPMDIR)/$(INSTALLDIR)
rpm: q3test.spec
touch $(RPMROOT)/SOURCES/q3test-$(VERSION_FN).tar.gz
if [ ! -d archives ];then mkdir archives;fi
$(MAKE) copyfiles COPYDIR=$(DESTDIR)
cp $(UNIX_DIR)/quake3.gif $(RPMROOT)/SOURCES/.
cp q3test.spec $(RPMROOT)/SPECS/.
cd $(RPMROOT)/SPECS; $(RPM) $(RPMFLAGS) q3test.spec
rm -rf $(RPMDIR)
mv $(RPMROOT)/RPMS/$(RPMARCH)/q3test-$(VERSION_FN)-$(RPM_RELEASE).$(RPMARCH).rpm archives/q3test-$(VERSION_FN)-$(RPM_RELEASE).$(RPMARCH).rpm
chmod 644 archives/q3test-$(VERSION_FN)-$(RPM_RELEASE).$(RPMARCH).rpm
copyfiles:
-mkdirhier $(COPYDIR)
cp $(BUILD_RELEASE_DIR)/linuxquake3 $(COPYDIR)
strip $(COPYDIR)/linuxquake3
chmod 755 $(COPYDIR)/linuxquake3
cp $(BUILD_RELEASE_DIR)/qagame$(ARCH).$(SHLIBEXT) $(COPYDIR)
chmod 755 $(COPYDIR)/qagame$(ARCH).$(SHLIBEXT)
cp $(BUILD_RELEASE_DIR)/cgame$(ARCH).$(SHLIBEXT) $(COPYDIR)
chmod 755 $(COPYDIR)/cgame$(ARCH).$(SHLIBEXT)
cp $(BUILD_DIR)/libMesaVoodooGL.so.3.1 $(COPYDIR)/.
chmod 755 $(COPYDIR)/libMesaVoodooGL.so.3.1
-mkdir $(COPYDIR)/demoq3
chmod 1777 $(COPYDIR)/demoq3
cp $(DEMO_PAK) $(COPYDIR)/demoq3/pak0.pk3
cp $(UNIX_DIR)/README.EULA $(COPYDIR)
chmod 644 $(COPYDIR)/README.EULA
cp $(UNIX_DIR)/README.Q3Test $(COPYDIR)
chmod 644 $(COPYDIR)/README.Q3Test
q3test.spec : $(UNIX_DIR)/q3test.spec.sh Makefile
sh $< $(VERSION_FN) $(RPM_RELEASE) $(ARCH) $(INSTALLDIR) > $@
#############################################################################
# MISC
#############################################################################
clean: clean-debug clean-release
clean-debug:
$(MAKE) clean2 BUILDDIR=$(BUILD_DEBUG_DIR) CFLAGS="$(DEBUG_CFLAGS)"
clean-release:
$(MAKE) clean2 BUILDDIR=$(BUILD_RELEASE_DIR) CFLAGS="$(DEBUG_CFLAGS)"