1#
2# Makefile for Unix 2.0
3#
4# Nov '97 by Zoid <zoid@idsoftware.com>
5#
6# ELF only
7#
8# Modified by QuDos at http://qudos.quakedev.com
9
10# Check OS type.
11OSTYPE=    $(shell uname -s | tr A-Z a-z)
12ARCH?=     $(shell uname -m | sed -e s/i.86/i386/)
13MARCH=     $(shell uname -m)
14OP_SYSTEM= $(shell uname -sr)
15
16MOUNT_DIR=.
17VERSION=$(shell grep "\#define Q2PVERSION" $(MOUNT_DIR)/qcommon/qcommon.h | sed -e 's/.*".* \([^ ]*\)"/\1/')
18Q2P_VERSION=Q2P $(VERSION)
19Q2P_VERSION_BZ2=Q2P-$(VERSION)
20BINDIR=quake2
21
22BUILD_DEBUG_DIR:=build_debug
23BUILD_RELEASE_DIR:=build_release
24
25#===========================#
26# Set to YES or NO for a    #
27# verbose compilation       #
28# process.                  #
29#===========================#
30VERBOSE=YES
31
32#===========================#
33# Q2P Client                #
34#===========================#
35BUILD_Q2P?=NO
36
37#===========================#
38# Enable Optimizations.     #
39# Release build only.       #
40#===========================#
41OPTIMIZE?=NO
42
43#===========================#
44# Remove symbols from       #
45# binaries, reduce size.    #
46# Release build only.       #
47#===========================#
48STRIP?=YES
49
50#===========================#
51# Sound Drivers             #
52#===========================#
53ifeq ($(OSTYPE),linux)
54BUILD_ALSA_SND?=NO
55endif
56BUILD_OSS_SND?=NO
57BUILD_SDL_SND?=NO
58
59#===========================#
60# Quake 2 dedicated server. #
61#===========================#
62BUILD_DEDICATED?=NO
63
64#===========================#
65# GLX, SDL-GLX              #
66# render.                   #
67#===========================#
68BUILD_GLX?=NO
69BUILD_SDLGL?=NO
70
71#===========================#
72# Linked To GLU library.    #
73#===========================#
74WITH_GLULIB?=YES
75
76#===========================#
77# Built in DGA mouse        #
78# support.                  #
79#===========================#
80WITH_XF86_DGA?=YES
81
82#===========================#
83# Read from $(DATADIR) and  #
84# write to "~/.quake2"      #
85#===========================#
86WITH_DATADIR?=YES
87
88#===========================#
89# Load renderers            #
90# from $(LIBDIR)            #
91#===========================#
92WITH_LIBDIR?=YES
93
94#===========================#
95# Built in CD Audio         #
96# support.                  #
97#===========================#
98WITH_CDAUDIO?=YES
99ifeq ($(OSTYPE),freebsd)
100CD_API=cd_freebsd.c
101endif
102ifeq ($(OSTYPE),dragonfly)
103CD_API=cd_freebsd.c
104endif
105ifeq ($(OSTYPE),linux)
106CD_API=cd_linux.c
107endif
108
109#===========================#
110# Enable XMMS/Audacious     #
111# support. Only one of them #
112# at same time.             #
113#===========================#
114WITH_AUDACIOUS?=NO
115WITH_XMMS?=NO
116
117#===========================#
118# Quake 2 game library.     #
119#===========================#
120BUILD_GAME?=NO
121
122#===========================#
123# CTF Library.              #
124#===========================#
125BUILD_CTF?=NO
126
127
128CLIENT_DIR=$(MOUNT_DIR)/client
129SERVER_DIR=$(MOUNT_DIR)/server
130REF_GL_DIR=$(MOUNT_DIR)/ref_gl
131COMMON_DIR=$(MOUNT_DIR)/qcommon
132UNIX_DIR=$(MOUNT_DIR)/unix
133GAME_DIR=$(MOUNT_DIR)/game
134CTF_DIR=$(MOUNT_DIR)/ctf
135
136CC?=gcc
137CC_VERSION=$(shell $(CC) -dumpversion)
138
139X11BASE?=   /usr/local
140LOCALBASE?= /usr/local
141GAMEBASE?=  $(PREFIX)
142SYSBINDIR?= $(PREFIX)/bin
143
144ifeq (${OSTYPE},$(filter ${OSTYPE}, freebsd dragonfly))
145 DATADIR?= $(GAMEBASE)/share/quake2
146 LIBDIR?=  $(GAMEBASE)/lib/quake2
147else
148 DATADIR?= $(GAMEBASE)/games/quake2
149 LIBDIR?=  $(GAMEBASE)/games/quake2
150endif
151
152SHLIB_EXT=so
153GAME_NAME=game.$(SHLIB_EXT)
154
155BASE_CFLAGS+=-I$(LOCALBASE)/include \
156            -I$(X11BASE)/include \
157            -DOP_SYSTEM='\"$(OP_SYSTEM)\"' \
158            -DGAME_NAME='\"$(GAME_NAME)\"' \
159            -DQ2P_VERSION='\"$(VERSION)\"' \
160            -DCC_VERSION='\"$(CC_VERSION)\"' \
161	    -Wall -fcommon \
162	    -pipe #-Werror
163
164RELEASE_CFLAGS+=$(BASE_CFLAGS) \
165	       -fno-strict-aliasing \
166	       -DNDEBUG
167
168ifeq ($(strip $(OPTIMIZE)),YES)
169 RELEASE_CFLAGS+=-O3 \
170                 -funroll-loops \
171                 -fomit-frame-pointer \
172                 -ffast-math
173endif
174
175ifeq ($(strip $(STRIP)),YES)
176 RELEASE_CFLAGS+=-s
177endif
178
179OGG_LDFLAGS= -lvorbisfile -lvorbis -logg
180
181ifeq ($(strip $(WITH_GLULIB)),YES)
182 GLU_CFLAGS+=-DUSE_GLU
183endif
184
185ifeq ($(strip $(WITH_XF86_DGA)),YES)
186 BASE_CFLAGS+=-DUSE_XF86_DGA
187endif
188
189ifeq ($(ARCH),x86_64)
190 ARCH_LIBDIR=64
191endif
192
193ifeq ($(strip $(WITH_DATADIR)),YES)
194 BASE_CFLAGS+=-DDATADIR='\"$(DATADIR)\"'
195endif
196
197ifeq ($(strip $(WITH_LIBDIR)),YES)
198 BASE_CFLAGS+=-DLIBDIR='\"$(LIBDIR)\"'
199endif
200
201ifeq ($(strip $(WITH_CDAUDIO)),YES)
202 CDAUDIO_CFLAGS+=-DCDAUDIO
203endif
204
205GLIB_CFLAGS=$(shell glib-config --cflags)
206
207ifeq ($(strip $(WITH_AUDACIOUS)),YES)
208 AUDACIOUS_CFLAGS=$(GLIB_CFLAGS) -DWITH_AUDACIOUS
209endif
210
211ifeq ($(strip $(WITH_XMMS)),YES)
212 XMMS_CFLAGS=$(GLIB_CFLAGS) -DWITH_XMMS
213endif
214
215DEBUG_CFLAGS=$(BASE_CFLAGS) -O0 -g
216
217LDFLAGS=-L$(LOCALBASE)/lib -lm -lpthread
218ifeq ($(OSTYPE),linux)
219 LDFLAGS+=-ldl
220endif
221
222Z_LDFLAGS=-L$(LOCALBASE)/lib -lz
223
224X_LDFLAGS=-L$(X11BASE)/lib$(ARCH_LIBDIR) -lX11 -lXext -lXxf86vm
225ifeq ($(strip $(WITH_XF86_DGA)),YES)
226 X_LDFLAGS+=-lXxf86dga
227endif
228
229GLX_LDFLAGS+=-L$(LOCALBASE)/lib -ljpeg `libpng-config --libs`
230ifeq ($(strip $(WITH_GLULIB)),YES)
231GLX_LDFLAGS+=-L$(X11BASE)/lib$(ARCH_LIBDIR) -lGLU
232endif
233
234SDL_CONFIG=sdl-config
235SDL_CFLAGS=$(shell $(SDL_CONFIG) --cflags)
236SDL_LDFLAGS=$(shell $(SDL_CONFIG) --libs)
237SDL_GL_CFLAGS=$(SDL_CFLAGS)
238SDL_GL_LDFLAGS=$(SDL_LDFLAGS)
239
240SHLIB_CFLAGS=-fPIC -DPIC
241SHLIB_LDFLAGS= $(LDFLAGS) -shared
242
243ifeq ($(VERBOSE),NO)
244CC_OUTPUT=echo "  Compiling >> $< ..." &&
245endif
246
247DO_CC=$(CC_OUTPUT) $(CC) $(CFLAGS) -o $@ -c $<
248DO_SHLIB_CC=$(CC_OUTPUT) $(CC) $(CFLAGS) $(SHLIB_CFLAGS) -o $@ -c $<
249
250#############################################################################
251# SETUP AND BUILD
252#############################################################################
253
254ifeq ($(strip $(BUILD_Q2P)),YES)
255 TARGETS += $(BINDIR)/q2p
256endif
257
258ifeq ($(strip $(BUILD_DEDICATED)),YES)
259 TARGETS += $(BINDIR)/q2p-ded
260 DED_CFLAGS += -DDEDICATED_ONLY
261endif
262
263ifeq ($(OSTYPE),linux)
264 ifeq ($(strip $(BUILD_ALSA_SND)),YES)
265  ALSA_LDFLAGS +=-lasound
266  TARGETS += $(BINDIR)/snd_alsa.$(SHLIB_EXT)
267 endif
268endif
269
270ifeq ($(strip $(BUILD_OSS_SND)),YES)
271 TARGETS += $(BINDIR)/snd_oss.$(SHLIB_EXT)
272endif
273
274ifeq ($(strip $(BUILD_SDL_SND)),YES)
275 TARGETS += $(BINDIR)/snd_sdl.$(SHLIB_EXT)
276endif
277
278
279ifeq ($(strip $(BUILD_GLX)),YES)
280 TARGETS += $(BINDIR)/vid_gl.$(SHLIB_EXT)
281endif
282
283ifeq ($(strip $(BUILD_SDLGL)),YES)
284 TARGETS += $(BINDIR)/vid_sdl.$(SHLIB_EXT)
285endif
286
287ifeq ($(strip $(BUILD_GAME)),YES)
288 TARGETS+=$(BINDIR)/baseq2/game.$(SHLIB_EXT)
289endif
290
291ifeq ($(strip $(BUILD_CTF)),YES)
292 TARGETS+=$(BINDIR)/ctf/game.$(SHLIB_EXT)
293endif
294
295all:
296	@echo
297	@echo "Operative system: $(OP_SYSTEM)"
298	@echo
299	@echo Set to YES or NO at the top of this file the possible options to build by the makefile.
300	@echo By default, it will build q2p, q2p dedicated and glx renderer.
301	@echo
302	@echo Possible targets:
303	@echo
304	@echo "   "">> Add VERBOSE=YES to a verbose output, defaults to NO"
305	@echo "   "">> WARNING: -ffast-math and/or -fomit-frame-pointer flags can cause crashes."
306	@echo "   "">> make/gmake release"
307	@echo "   "">> make/gmake debug"
308	@echo "   "">> make/gmake install (quake2 home dir)."
309	@echo "   "">> make/gmake install_root (required when was built with DATADIR/LIBDIR"
310	@echo "   ""                      options enabled, you must gain root privileges)."
311	@echo "   "">> make/gmake clean (clean objects)."
312	@echo "   "">> make/gmake clean_bin (clean executables)."
313	@echo "   "">> make/gmake distclean (clean objects, executables and modified files)."
314	@echo "   "">> make/gmake bz2 (create a tar.bz2 package with the full release distribution)."
315	@echo
316
317debug:
318	@printf "** Debug Build **\n"
319	@-mkdir -p $(BUILD_DEBUG_DIR) \
320		$(BINDIR) \
321		$(BUILD_DEBUG_DIR)/client
322
323ifeq ($(strip $(BUILD_DEDICATED)),YES)
324	@-mkdir -p $(BUILD_DEBUG_DIR) \
325		$(BUILD_DEBUG_DIR)/ded
326endif
327
328ifeq ($(strip $(BUILD_GLX)),YES)
329	@-mkdir -p $(BUILD_DEBUG_DIR) \
330		$(BUILD_DEBUG_DIR)/ref_gl
331endif
332
333ifeq ($(strip $(BUILD_SDLGL)),YES)
334	@-mkdir -p $(BUILD_DEBUG_DIR) \
335		$(BUILD_DEBUG_DIR)/ref_gl
336endif
337
338ifeq ($(strip $(BUILD_GAME)),YES)
339	@-mkdir -p $(BUILD_DEBUG_DIR) \
340		$(BINDIR)/baseq2 \
341		$(BUILD_DEBUG_DIR)/game
342endif
343
344ifeq ($(strip $(BUILD_CTF)),YES)
345	@-mkdir -p $(BUILD_DEBUG_DIR) \
346		$(BINDIR)/ctf \
347		$(BUILD_DEBUG_DIR)/ctf
348endif
349
350ifeq ($(VERBOSE),YES)
351	$(MAKE) targets BUILDDIR=$(BUILD_DEBUG_DIR) CFLAGS="$(DEBUG_CFLAGS)";
352else
353	@-$(MAKE) --silent targets BUILDDIR=$(BUILD_DEBUG_DIR) CFLAGS="$(DEBUG_CFLAGS)";
354endif
355	@printf "Done \n"
356
357release:
358	@printf "** Release Build **\n"
359	@-mkdir -p $(BUILD_RELEASE_DIR) \
360		$(BINDIR) \
361		$(BUILD_RELEASE_DIR)/client
362
363ifeq ($(strip $(BUILD_DEDICATED)),YES)
364	@-mkdir -p $(BUILD_RELEASE_DIR) \
365		$(BUILD_RELEASE_DIR)/ded
366endif
367
368ifeq ($(strip $(BUILD_GLX)),YES)
369	@-mkdir -p $(BUILD_RELEASE_DIR) \
370		$(BUILD_RELEASE_DIR)/ref_gl
371endif
372
373ifeq ($(strip $(BUILD_SDLGL)),YES)
374	@-mkdir -p $(BUILD_RELEASE_DIR) \
375		$(BUILD_RELEASE_DIR)/ref_gl
376endif
377
378ifeq ($(strip $(BUILD_GAME)),YES)
379	@-mkdir -p $(BUILD_RELEASE_DIR) \
380		$(BINDIR)/baseq2 \
381		$(BUILD_RELEASE_DIR)/game
382endif
383
384ifeq ($(strip $(BUILD_CTF)),YES)
385	@-mkdir -p $(BUILD_RELEASE_DIR) \
386		$(BINDIR)/ctf \
387		$(BUILD_RELEASE_DIR)/ctf
388endif
389
390ifeq ($(VERBOSE),YES)
391	$(MAKE) targets BUILDDIR=$(BUILD_RELEASE_DIR) CFLAGS="$(RELEASE_CFLAGS)";
392else
393	@-$(MAKE) --silent targets BUILDDIR=$(BUILD_RELEASE_DIR) CFLAGS="$(RELEASE_CFLAGS)";
394endif
395	@printf "Done \n"
396
397targets: $(TARGETS)
398	@echo "Q2P compilation finished succesfully ;)"
399	@echo
400	@echo "'make/gmake install' to install in your quake2 home dir."
401	@echo
402	@echo "'make/gmake install_root' if was built with DATADIR/LIBDIR options enabled, you must gain root privileges."
403	@echo
404#	@xmessage -center -bg black -fg green -file Q2P_readme.txt &
405
406#############################################################################
407# CLIENT/SERVER
408#############################################################################
409
410Q2P_OBJS = \
411$(BUILDDIR)/client/cl_cin.o   $(BUILDDIR)/client/cl_ents.o    $(BUILDDIR)/client/cl_events.o \
412$(BUILDDIR)/client/cl_flash.o $(BUILDDIR)/client/cl_fx.o      $(BUILDDIR)/client/cl_input.o \
413$(BUILDDIR)/client/cl_inv.o   $(BUILDDIR)/client/cl_lights.o  $(BUILDDIR)/client/cl_main.o \
414$(BUILDDIR)/client/cl_newfx.o $(BUILDDIR)/client/cl_parse.o   $(BUILDDIR)/client/cl_pred.o \
415$(BUILDDIR)/client/cl_tent.o  $(BUILDDIR)/client/cl_scrn.o    $(BUILDDIR)/client/cl_view.o \
416$(BUILDDIR)/client/console.o  $(BUILDDIR)/client/keys.o       $(BUILDDIR)/client/menu.o \
417$(BUILDDIR)/client/snd_dma.o  $(BUILDDIR)/client/snd_mem.o    $(BUILDDIR)/client/snd_mix.o \
418$(BUILDDIR)/client/snd_ogg.o  $(BUILDDIR)/client/qmenu.o      $(BUILDDIR)/client/m_flash.o \
419$(BUILDDIR)/client/cmd.o      $(BUILDDIR)/client/cmodel.o     $(BUILDDIR)/client/common.o \
420$(BUILDDIR)/client/crc.o      $(BUILDDIR)/client/cvar.o       $(BUILDDIR)/client/files.o \
421$(BUILDDIR)/client/md4.o      $(BUILDDIR)/client/net_chan.o \
422$(BUILDDIR)/client/unzip.o    $(BUILDDIR)/client/ioapi.o \
423$(BUILDDIR)/client/sv_ccmds.o $(BUILDDIR)/client/sv_ents.o    $(BUILDDIR)/client/sv_game.o \
424$(BUILDDIR)/client/sv_init.o  $(BUILDDIR)/client/sv_main.o    $(BUILDDIR)/client/sv_send.o \
425$(BUILDDIR)/client/sv_user.o  $(BUILDDIR)/client/sv_world.o \
426$(BUILDDIR)/client/sh_unix.o  $(BUILDDIR)/client/vid_so.o     $(BUILDDIR)/client/sys_unix.o \
427$(BUILDDIR)/client/net_udp.o  $(BUILDDIR)/client/menu_video.o $(BUILDDIR)/client/cl_think.o \
428$(BUILDDIR)/client/audacious_player.o \
429$(BUILDDIR)/client/xmms_player.o \
430$(BUILDDIR)/client/cl_locs.o \
431$(BUILDDIR)/client/q_shared.o $(BUILDDIR)/client/pmove.o
432
433CD_OBJS = \
434	$(BUILDDIR)/client/cd_unix.o
435
436ifeq ($(OSTYPE),linux)
437 ifeq ($(strip $(BUILD_ALSA_SND)),YES)
438  ALSA_SND_OBJS= $(BUILDDIR)/client/snd_alsa.o
439 endif
440endif
441
442ifeq ($(strip $(BUILD_OSS_SND)),YES)
443 OSS_SND_OBJS= $(BUILDDIR)/client/snd_oss.o
444endif
445
446ifeq ($(strip $(BUILD_SDL_SND)),YES)
447 SDL_SND_OBJS= $(BUILDDIR)/client/snd_sdl.o
448endif
449
450$(BINDIR)/q2p : $(Q2P_OBJS) $(CD_OBJS)
451	@echo
452	@echo "**Built Q2P client with cflags:"
453	@echo "$(CC) $(CC_VERSION)";
454	@echo "$(CFLAGS)";
455	@echo "$(AUDACIOUS_CFLAGS)";
456	@echo "$(XMMS_CFLAGS)";
457	@echo "$(CDAUDIO_CFLAGS)";
458	@echo
459	@echo "**Linking Client with flags:"
460	@echo "$(LDFLAGS)";
461	@echo "$(Z_LDFLAGS)";
462	@echo "$(OGG_LDFLAGS)";
463	@echo
464	$(CC) $(CFLAGS) $(GLIB_CFLAGS) $(AUDACIOUS_CFLAGS) $(XMMS_CFLAGS) $(CDAUDIO_CFLAGS) -o $@ $(Q2P_OBJS) $(CD_OBJS) $(LDFLAGS) $(Z_LDFLAGS) $(OGG_LDFLAGS)
465
466ifeq ($(OSTYPE),linux)
467$(BINDIR)/snd_alsa.$(SHLIB_EXT) : $(ALSA_SND_OBJS)
468	@echo
469	@echo "**Built Alsa sound driver with cflags:"
470	@echo "$(CC) $(CC_VERSION)";
471	@echo "$(CFLAGS)";
472	@echo "$(SHLIB_CFLAGS)";
473	@echo
474	@echo "**Linking Alsa sound driver with flags:"
475	@echo "$(SHLIB_LDFLAGS)";
476	@echo "$(ALSA_LDFLAGS)";
477	@echo
478	$(CC) $(CFLAGS) $(SHLIB_LDFLAGS) -o $@ $(ALSA_SND_OBJS) $(LDFLAGS) $(ALSA_LDFLAGS)
479endif
480
481$(BINDIR)/snd_oss.$(SHLIB_EXT) : $(OSS_SND_OBJS)
482	@echo
483	@echo "**Built OSS sound driver with cflags:"
484	@echo "$(CC) $(CC_VERSION)";
485	@echo "$(CFLAGS)";
486	@echo "$(SHLIB_CFLAGS)";
487	@echo
488	@echo "**Linking OSS sound driver with flags:"
489	@echo "$(SHLIB_LDFLAGS)";
490	@echo
491	$(CC) $(CFLAGS) $(SHLIB_LDFLAGS) -o $@ $(OSS_SND_OBJS) $(LDFLAGS)
492
493$(BINDIR)/snd_sdl.$(SHLIB_EXT) : $(SDL_SND_OBJS)
494	@echo
495	@echo "**Built SDL sound driver with cflags:"
496	@echo "$(CC) $(CC_VERSION)";
497	@echo "$(CFLAGS)";
498	@echo "$(SHLIB_CFLAGS)";
499	@echo
500	@echo "**Linking SDL sound driver with flags:"
501	@echo "$(SHLIB_LDFLAGS)";
502	@echo "$(SDL_LDFLAGS)";
503	@echo
504	$(CC) $(CFLAGS) $(SHLIB_LDFLAGS) -o $@ $(SDL_SND_OBJS) $(LDFLAGS) $(SDL_LDFLAGS)
505
506
507$(BUILDDIR)/client/cl_cin.o :      $(CLIENT_DIR)/cl_cin.c;      $(DO_CC) $(CDAUDIO_CFLAGS)
508$(BUILDDIR)/client/cl_ents.o :     $(CLIENT_DIR)/cl_ents.c;     $(DO_CC)
509$(BUILDDIR)/client/cl_events.o :   $(CLIENT_DIR)/cl_events.c;   $(DO_CC)
510$(BUILDDIR)/client/cl_fx.o :       $(CLIENT_DIR)/cl_fx.c;       $(DO_CC)
511$(BUILDDIR)/client/cl_think.o :    $(CLIENT_DIR)/cl_think.c;    $(DO_CC)
512$(BUILDDIR)/client/cl_flash.o :    $(CLIENT_DIR)/cl_flash.c;    $(DO_CC)
513$(BUILDDIR)/client/cl_input.o :    $(CLIENT_DIR)/cl_input.c;    $(DO_CC)
514$(BUILDDIR)/client/cl_inv.o :      $(CLIENT_DIR)/cl_inv.c;      $(DO_CC)
515$(BUILDDIR)/client/cl_lights.o :   $(CLIENT_DIR)/cl_lights.c;   $(DO_CC)
516$(BUILDDIR)/client/cl_locs.o :     $(CLIENT_DIR)/cl_locs.c;     $(DO_CC)
517$(BUILDDIR)/client/cl_main.o :     $(CLIENT_DIR)/cl_main.c;     $(DO_CC) $(CDAUDIO_CFLAGS) $(AUDACIOUS_CFLAGS) $(XMMS_CFLAGS)
518$(BUILDDIR)/client/cl_newfx.o :    $(CLIENT_DIR)/cl_newfx.c;    $(DO_CC)
519$(BUILDDIR)/client/cl_parse.o :    $(CLIENT_DIR)/cl_parse.c;    $(DO_CC) $(CDAUDIO_CFLAGS)
520$(BUILDDIR)/client/cl_pred.o :     $(CLIENT_DIR)/cl_pred.c;     $(DO_CC)
521$(BUILDDIR)/client/cl_tent.o :     $(CLIENT_DIR)/cl_tent.c;     $(DO_CC)
522$(BUILDDIR)/client/cl_scrn.o :     $(CLIENT_DIR)/cl_scrn.c;     $(DO_CC) $(CDAUDIO_CFLAGS)
523$(BUILDDIR)/client/cl_view.o :     $(CLIENT_DIR)/cl_view.c;     $(DO_CC) $(CDAUDIO_CFLAGS)
524$(BUILDDIR)/client/console.o :     $(CLIENT_DIR)/console.c;     $(DO_CC)
525$(BUILDDIR)/client/keys.o :        $(CLIENT_DIR)/keys.c;        $(DO_CC)
526$(BUILDDIR)/client/menu.o :        $(CLIENT_DIR)/menu.c;        $(DO_CC)
527$(BUILDDIR)/client/menu_video.o :  $(CLIENT_DIR)/menu_video.c;  $(DO_CC)
528$(BUILDDIR)/client/snd_dma.o :     $(CLIENT_DIR)/snd_dma.c;     $(DO_CC) $(AUDACIOUS_CFLAGS) $(XMMS_CFLAGS)
529$(BUILDDIR)/client/snd_mem.o :     $(CLIENT_DIR)/snd_mem.c;     $(DO_CC)
530$(BUILDDIR)/client/snd_mix.o :     $(CLIENT_DIR)/snd_mix.c;     $(DO_CC)
531$(BUILDDIR)/client/snd_ogg.o :     $(CLIENT_DIR)/snd_ogg.c;     $(DO_CC)
532$(BUILDDIR)/client/qmenu.o :       $(CLIENT_DIR)/qmenu.c;       $(DO_CC)
533$(BUILDDIR)/client/cmd.o :         $(COMMON_DIR)/cmd.c;         $(DO_CC)
534$(BUILDDIR)/client/cmodel.o :      $(COMMON_DIR)/cmodel.c;      $(DO_CC)
535$(BUILDDIR)/client/common.o :      $(COMMON_DIR)/common.c;      $(DO_CC)
536$(BUILDDIR)/client/crc.o :         $(COMMON_DIR)/crc.c;         $(DO_CC)
537$(BUILDDIR)/client/cvar.o :        $(COMMON_DIR)/cvar.c;        $(DO_CC)
538$(BUILDDIR)/client/files.o :       $(COMMON_DIR)/files.c;       $(DO_CC) $(CDAUDIO_CFLAGS)
539$(BUILDDIR)/client/md4.o :         $(COMMON_DIR)/md4.c;         $(DO_CC)
540$(BUILDDIR)/client/net_chan.o :    $(COMMON_DIR)/net_chan.c;    $(DO_CC)
541$(BUILDDIR)/client/unzip.o :       $(COMMON_DIR)/unzip/unzip.c; $(DO_CC)
542$(BUILDDIR)/client/ioapi.o :       $(COMMON_DIR)/unzip/ioapi.c; $(DO_CC)
543$(BUILDDIR)/client/pmove.o :       $(COMMON_DIR)/pmove.c;       $(DO_CC)
544$(BUILDDIR)/client/m_flash.o :     $(GAME_DIR)/m_flash.c;       $(DO_CC)
545$(BUILDDIR)/client/q_shared.o :    $(GAME_DIR)/q_shared.c;      $(DO_CC)
546$(BUILDDIR)/client/sv_ccmds.o :    $(SERVER_DIR)/sv_ccmds.c;    $(DO_CC)
547$(BUILDDIR)/client/sv_ents.o :     $(SERVER_DIR)/sv_ents.c;     $(DO_CC)
548$(BUILDDIR)/client/sv_game.o :     $(SERVER_DIR)/sv_game.c;     $(DO_CC)
549$(BUILDDIR)/client/sv_init.o :     $(SERVER_DIR)/sv_init.c;     $(DO_CC)
550$(BUILDDIR)/client/sv_main.o :     $(SERVER_DIR)/sv_main.c;     $(DO_CC)
551$(BUILDDIR)/client/sv_send.o :     $(SERVER_DIR)/sv_send.c;     $(DO_CC)
552$(BUILDDIR)/client/sv_user.o :     $(SERVER_DIR)/sv_user.c;     $(DO_CC)
553$(BUILDDIR)/client/sv_world.o :    $(SERVER_DIR)/sv_world.c;    $(DO_CC)
554$(BUILDDIR)/client/cd_unix.o :     $(UNIX_DIR)/$(CD_API);       $(DO_CC) $(CDAUDIO_CFLAGS)
555$(BUILDDIR)/client/sh_unix.o :     $(UNIX_DIR)/sh_unix.c;       $(DO_CC)
556$(BUILDDIR)/client/vid_so.o :      $(UNIX_DIR)/vid_so.c;        $(DO_CC)
557$(BUILDDIR)/client/snd_alsa.o :    $(UNIX_DIR)/snd_alsa.c;      $(DO_SHLIB_CC)
558$(BUILDDIR)/client/snd_oss.o :     $(UNIX_DIR)/snd_oss.c;       $(DO_SHLIB_CC)
559$(BUILDDIR)/client/snd_sdl.o :     $(UNIX_DIR)/snd_sdl.c;       $(DO_SHLIB_CC) $(SDL_CFLAGS)
560$(BUILDDIR)/client/sys_unix.o :    $(UNIX_DIR)/sys_unix.c;      $(DO_CC)
561$(BUILDDIR)/client/net_udp.o :     $(UNIX_DIR)/net_udp.c;       $(DO_CC)
562$(BUILDDIR)/client/audacious_player.o : $(UNIX_DIR)/audacious_player.c; $(DO_CC) $(AUDACIOUS_CFLAGS)
563$(BUILDDIR)/client/xmms_player.o : $(UNIX_DIR)/xmms_player.c;   $(DO_CC) $(XMMS_CFLAGS)
564
565#############################################################################
566# DEDICATED SERVER
567#############################################################################
568
569Q2PDED_OBJS = \
570$(BUILDDIR)/ded/cmd.o      $(BUILDDIR)/ded/cmodel.o   $(BUILDDIR)/ded/common.o \
571$(BUILDDIR)/ded/crc.o      $(BUILDDIR)/ded/cvar.o     $(BUILDDIR)/ded/files.o \
572$(BUILDDIR)/ded/md4.o      $(BUILDDIR)/ded/net_chan.o \
573$(BUILDDIR)/ded/unzip.o    $(BUILDDIR)/ded/ioapi.o \
574$(BUILDDIR)/ded/sv_ccmds.o $(BUILDDIR)/ded/sv_ents.o  $(BUILDDIR)/ded/sv_game.o \
575$(BUILDDIR)/ded/sv_init.o  $(BUILDDIR)/ded/sv_main.o  $(BUILDDIR)/ded/sv_send.o \
576$(BUILDDIR)/ded/sv_user.o  $(BUILDDIR)/ded/sv_world.o \
577$(BUILDDIR)/ded/sh_unix.o  $(BUILDDIR)/ded/sys_unix.o $(BUILDDIR)/ded/net_udp.o \
578$(BUILDDIR)/ded/q_shared.o $(BUILDDIR)/ded/pmove.o \
579$(BUILDDIR)/ded/cl_null.o  $(BUILDDIR)/ded/cd_null.o
580
581$(BINDIR)/q2p-ded : $(Q2PDED_OBJS)
582	@echo
583	@echo "**Built Q2P dedicated client with cflags:"
584	@echo "$(CC) $(CC_VERSION)";
585	@echo "$(CFLAGS)";
586	@echo "$(DED_CFLAGS)";
587	@echo "$(CDAUDIO_CFLAGS)";
588	@echo
589	@echo "**Linking Dedicated client with flags:"
590	@echo "$(LDFLAGS)";
591	@echo "$(Z_LDFLAGS)";
592	@echo
593	$(CC) $(CFLAGS) $(DED_CFLAGS) $(CDAUDIO_CFLAGS) -o $@ $(Q2PDED_OBJS) $(LDFLAGS) $(Z_LDFLAGS)
594
595$(BUILDDIR)/ded/cmd.o :        $(COMMON_DIR)/cmd.c;         $(DO_CC)
596$(BUILDDIR)/ded/cmodel.o :     $(COMMON_DIR)/cmodel.c;      $(DO_CC)
597$(BUILDDIR)/ded/common.o :     $(COMMON_DIR)/common.c;      $(DO_CC) $(DED_CFLAGS)
598$(BUILDDIR)/ded/crc.o :        $(COMMON_DIR)/crc.c;         $(DO_CC)
599$(BUILDDIR)/ded/cvar.o :       $(COMMON_DIR)/cvar.c;        $(DO_CC)
600$(BUILDDIR)/ded/files.o :      $(COMMON_DIR)/files.c;       $(DO_CC)
601$(BUILDDIR)/ded/md4.o :        $(COMMON_DIR)/md4.c;         $(DO_CC)
602$(BUILDDIR)/ded/net_chan.o :   $(COMMON_DIR)/net_chan.c;    $(DO_CC)
603$(BUILDDIR)/ded/unzip.o :      $(COMMON_DIR)/unzip/unzip.c; $(DO_CC)
604$(BUILDDIR)/ded/ioapi.o :      $(COMMON_DIR)/unzip/ioapi.c; $(DO_CC)
605$(BUILDDIR)/ded/q_shared.o :   $(GAME_DIR)/q_shared.c;      $(DO_CC)
606$(BUILDDIR)/ded/pmove.o :      $(COMMON_DIR)/pmove.c;       $(DO_CC)
607$(BUILDDIR)/ded/sv_ccmds.o :   $(SERVER_DIR)/sv_ccmds.c;    $(DO_CC)
608$(BUILDDIR)/ded/sv_ents.o :    $(SERVER_DIR)/sv_ents.c;     $(DO_CC)
609$(BUILDDIR)/ded/sv_game.o :    $(SERVER_DIR)/sv_game.c;     $(DO_CC)
610$(BUILDDIR)/ded/sv_init.o :    $(SERVER_DIR)/sv_init.c;     $(DO_CC)
611$(BUILDDIR)/ded/sv_main.o :    $(SERVER_DIR)/sv_main.c;     $(DO_CC)
612$(BUILDDIR)/ded/sv_send.o :    $(SERVER_DIR)/sv_send.c;     $(DO_CC)
613$(BUILDDIR)/ded/sv_user.o :    $(SERVER_DIR)/sv_user.c;     $(DO_CC)
614$(BUILDDIR)/ded/sv_world.o :   $(SERVER_DIR)/sv_world.c;    $(DO_CC)
615$(BUILDDIR)/ded/sh_unix.o :    $(UNIX_DIR)/sh_unix.c;       $(DO_CC)
616$(BUILDDIR)/ded/sys_unix.o :   $(UNIX_DIR)/sys_unix.c;      $(DO_CC) $(DED_CFLAGS)
617$(BUILDDIR)/ded/net_udp.o :    $(UNIX_DIR)/net_udp.c;       $(DO_CC)
618$(BUILDDIR)/ded/cd_null.o :    $(CLIENT_DIR)/cd_null.c;     $(DO_CC) $(CDAUDIO_CFLAGS)
619$(BUILDDIR)/ded/cl_null.o :    $(CLIENT_DIR)/cl_null.c;     $(DO_CC) $(DED_CFLAGS)
620
621#############################################################################
622# REF_GL
623#############################################################################
624
625REF_GL_OBJS = \
626$(BUILDDIR)/ref_gl/gl_decals.o $(BUILDDIR)/ref_gl/gl_draw.o  $(BUILDDIR)/ref_gl/gl_image.o \
627$(BUILDDIR)/ref_gl/gl_light.o  $(BUILDDIR)/ref_gl/gl_mesh.o  $(BUILDDIR)/ref_gl/gl_model.o \
628$(BUILDDIR)/ref_gl/gl_refl.o   $(BUILDDIR)/ref_gl/gl_rmain.o $(BUILDDIR)/ref_gl/gl_rmisc.o \
629$(BUILDDIR)/ref_gl/gl_rsurf.o  $(BUILDDIR)/ref_gl/gl_warp.o  $(BUILDDIR)/ref_gl/qgl.o \
630$(BUILDDIR)/ref_gl/sh_unix.o   $(BUILDDIR)/ref_gl/q_shared.o
631
632REF_GL_GLX_OBJS = \
633$(BUILDDIR)/ref_gl/gl_glx.o
634
635REF_SDL_GLX_OBJS = \
636$(BUILDDIR)/ref_gl/gl_sdl.o
637
638$(BINDIR)/vid_gl.$(SHLIB_EXT) : $(REF_GL_OBJS) $(REF_GL_GLX_OBJS)
639	@echo
640	@echo "**Built GLX video driver with cflags:"
641	@echo "$(CC) $(CC_VERSION)";
642	@echo "$(CFLAGS)";
643	@echo "$(GLU_CFLAGS)";
644	@echo
645	@echo "**Linking GLX video driver with flags:"
646	@echo "$(X_LDFLAGS)";
647	@echo "$(GLX_LDFLAGS)";
648	@echo "$(SHLIB_LDFLAGS)";
649	@echo
650	$(CC) $(CFLAGS) $(GLU_CFLAGS) $(SHLIB_LDFLAGS) -o $@ $(REF_GL_OBJS) $(REF_GL_GLX_OBJS) $(X_LDFLAGS) $(GLX_LDFLAGS)
651
652$(BINDIR)/vid_sdl.$(SHLIB_EXT) : $(REF_GL_OBJS) $(REF_SDL_GLX_OBJS)
653	@echo
654	@echo "**Built SDL video driver with cflags:"
655	@echo "$(CC) $(CC_VERSION)";
656	@echo "$(CFLAGS)";
657	@echo "$(GLU_CFLAGS)";
658	@echo
659	@echo "**Linking SDL video driver with flags:"
660	@echo "$(SDL_GL_LDFLAGS)";
661	@echo "$(GLX_LDFLAGS)";
662	@echo "$(SHLIB_LDFLAGS)";
663	@echo
664	$(CC) $(CFLAGS) $(GLU_CFLAGS) $(SHLIB_LDFLAGS) -o $@ $(REF_GL_OBJS) $(REF_SDL_GLX_OBJS) $(GLX_LDFLAGS) $(SDL_GL_LDFLAGS)
665
666$(BUILDDIR)/ref_gl/gl_decals.o : $(REF_GL_DIR)/gl_decals.c; $(DO_SHLIB_CC)
667$(BUILDDIR)/ref_gl/gl_draw.o :   $(REF_GL_DIR)/gl_draw.c;   $(DO_SHLIB_CC)
668$(BUILDDIR)/ref_gl/gl_image.o :  $(REF_GL_DIR)/gl_image.c;  $(DO_SHLIB_CC) $(GLU_CFLAGS)
669$(BUILDDIR)/ref_gl/gl_light.o :  $(REF_GL_DIR)/gl_light.c;  $(DO_SHLIB_CC)
670$(BUILDDIR)/ref_gl/gl_mesh.o :   $(REF_GL_DIR)/gl_mesh.c;   $(DO_SHLIB_CC)
671$(BUILDDIR)/ref_gl/gl_model.o :  $(REF_GL_DIR)/gl_model.c;  $(DO_SHLIB_CC)
672$(BUILDDIR)/ref_gl/gl_refl.o :   $(REF_GL_DIR)/gl_refl.c;   $(DO_SHLIB_CC) $(GLU_CFLAGS)
673$(BUILDDIR)/ref_gl/gl_rmain.o :  $(REF_GL_DIR)/gl_rmain.c;  $(DO_SHLIB_CC)
674$(BUILDDIR)/ref_gl/gl_rmisc.o :  $(REF_GL_DIR)/gl_rmisc.c;  $(DO_SHLIB_CC) $(GLU_CFLAGS)
675$(BUILDDIR)/ref_gl/gl_rsurf.o :  $(REF_GL_DIR)/gl_rsurf.c;  $(DO_SHLIB_CC)
676$(BUILDDIR)/ref_gl/gl_warp.o :   $(REF_GL_DIR)/gl_warp.c;   $(DO_SHLIB_CC)
677$(BUILDDIR)/ref_gl/qgl.o :       $(REF_GL_DIR)/qgl.c;       $(DO_SHLIB_CC) $(GLU_CFLAGS)
678$(BUILDDIR)/ref_gl/gl_glx.o :    $(UNIX_DIR)/gl_glx.c;      $(DO_SHLIB_CC)
679$(BUILDDIR)/ref_gl/gl_sdl.o :    $(UNIX_DIR)/gl_sdl.c;      $(DO_SHLIB_CC) $(SDL_GL_CFLAGS)
680$(BUILDDIR)/ref_gl/sh_unix.o :   $(UNIX_DIR)/sh_unix.c;     $(DO_SHLIB_CC)
681$(BUILDDIR)/ref_gl/q_shared.o :  $(GAME_DIR)/q_shared.c;    $(DO_SHLIB_CC)
682
683#############################################################################
684# GAME
685#############################################################################
686
687GAME_OBJS = \
688$(BUILDDIR)/game/q_shared.o   $(BUILDDIR)/game/g_ai.o        $(BUILDDIR)/game/p_client.o \
689$(BUILDDIR)/game/g_cmds.o     $(BUILDDIR)/game/g_svcmds.o    $(BUILDDIR)/game/g_chase.o \
690$(BUILDDIR)/game/g_combat.o   $(BUILDDIR)/game/g_func.o      $(BUILDDIR)/game/g_items.o \
691$(BUILDDIR)/game/g_main.o     $(BUILDDIR)/game/g_misc.o      $(BUILDDIR)/game/g_monster.o \
692$(BUILDDIR)/game/g_phys.o     $(BUILDDIR)/game/g_save.o      $(BUILDDIR)/game/g_spawn.o \
693$(BUILDDIR)/game/g_target.o   $(BUILDDIR)/game/g_trigger.o   $(BUILDDIR)/game/g_turret.o \
694$(BUILDDIR)/game/g_utils.o    $(BUILDDIR)/game/g_weapon.o    $(BUILDDIR)/game/m_actor.o \
695$(BUILDDIR)/game/m_berserk.o  $(BUILDDIR)/game/m_boss2.o     $(BUILDDIR)/game/m_boss3.o \
696$(BUILDDIR)/game/m_boss31.o   $(BUILDDIR)/game/m_boss32.o    $(BUILDDIR)/game/m_brain.o \
697$(BUILDDIR)/game/m_chick.o    $(BUILDDIR)/game/m_flipper.o   $(BUILDDIR)/game/m_float.o \
698$(BUILDDIR)/game/m_flyer.o    $(BUILDDIR)/game/m_gladiator.o $(BUILDDIR)/game/m_gunner.o \
699$(BUILDDIR)/game/m_hover.o    $(BUILDDIR)/game/m_infantry.o  $(BUILDDIR)/game/m_insane.o \
700$(BUILDDIR)/game/m_medic.o    $(BUILDDIR)/game/m_move.o      $(BUILDDIR)/game/m_mutant.o \
701$(BUILDDIR)/game/m_parasite.o $(BUILDDIR)/game/m_soldier.o   $(BUILDDIR)/game/m_supertank.o \
702$(BUILDDIR)/game/m_tank.o     $(BUILDDIR)/game/p_hud.o       $(BUILDDIR)/game/p_trail.o \
703$(BUILDDIR)/game/p_view.o     $(BUILDDIR)/game/p_weapon.o    $(BUILDDIR)/game/m_flash.o
704
705$(BINDIR)/baseq2/game.$(SHLIB_EXT) : $(GAME_OBJS)
706	@echo
707	@echo "**Built $@ with cflags:"
708	@echo "$(CC) $(CC_VERSION) $(CFLAGS)";
709	@echo "$(SHLIB_CFLAGS)";
710	@echo
711	@echo "**Linking $@ with flags:"
712	@echo "$(SHLIB_LDFLAGS)";
713	@echo
714	$(CC) $(CFLAGS) $(SHLIB_LDFLAGS) -o $@ $(GAME_OBJS)
715
716$(BUILDDIR)/game/g_ai.o :        $(GAME_DIR)/g_ai.c;        $(DO_SHLIB_CC)
717$(BUILDDIR)/game/p_client.o :    $(GAME_DIR)/p_client.c;    $(DO_SHLIB_CC)
718$(BUILDDIR)/game/g_cmds.o :      $(GAME_DIR)/g_cmds.c;      $(DO_SHLIB_CC)
719$(BUILDDIR)/game/g_svcmds.o :    $(GAME_DIR)/g_svcmds.c;    $(DO_SHLIB_CC)
720$(BUILDDIR)/game/g_chase.o :     $(GAME_DIR)/g_chase.c;     $(DO_SHLIB_CC)
721$(BUILDDIR)/game/g_combat.o :    $(GAME_DIR)/g_combat.c;    $(DO_SHLIB_CC)
722$(BUILDDIR)/game/g_func.o :      $(GAME_DIR)/g_func.c;      $(DO_SHLIB_CC)
723$(BUILDDIR)/game/g_items.o :     $(GAME_DIR)/g_items.c;     $(DO_SHLIB_CC)
724$(BUILDDIR)/game/g_main.o :      $(GAME_DIR)/g_main.c;      $(DO_SHLIB_CC)
725$(BUILDDIR)/game/g_misc.o :      $(GAME_DIR)/g_misc.c;      $(DO_SHLIB_CC)
726$(BUILDDIR)/game/g_monster.o :   $(GAME_DIR)/g_monster.c;   $(DO_SHLIB_CC)
727$(BUILDDIR)/game/g_phys.o :      $(GAME_DIR)/g_phys.c;      $(DO_SHLIB_CC)
728$(BUILDDIR)/game/g_save.o :      $(GAME_DIR)/g_save.c;      $(DO_SHLIB_CC)
729$(BUILDDIR)/game/g_spawn.o :     $(GAME_DIR)/g_spawn.c;     $(DO_SHLIB_CC)
730$(BUILDDIR)/game/g_target.o :    $(GAME_DIR)/g_target.c;    $(DO_SHLIB_CC)
731$(BUILDDIR)/game/g_trigger.o :   $(GAME_DIR)/g_trigger.c;   $(DO_SHLIB_CC)
732$(BUILDDIR)/game/g_turret.o :    $(GAME_DIR)/g_turret.c;    $(DO_SHLIB_CC)
733$(BUILDDIR)/game/g_utils.o :     $(GAME_DIR)/g_utils.c;     $(DO_SHLIB_CC)
734$(BUILDDIR)/game/g_weapon.o :    $(GAME_DIR)/g_weapon.c;    $(DO_SHLIB_CC)
735$(BUILDDIR)/game/m_actor.o :     $(GAME_DIR)/m_actor.c;     $(DO_SHLIB_CC)
736$(BUILDDIR)/game/m_berserk.o :   $(GAME_DIR)/m_berserk.c;   $(DO_SHLIB_CC)
737$(BUILDDIR)/game/m_boss2.o :     $(GAME_DIR)/m_boss2.c;     $(DO_SHLIB_CC)
738$(BUILDDIR)/game/m_boss3.o :     $(GAME_DIR)/m_boss3.c;     $(DO_SHLIB_CC)
739$(BUILDDIR)/game/m_boss31.o :    $(GAME_DIR)/m_boss31.c;    $(DO_SHLIB_CC)
740$(BUILDDIR)/game/m_boss32.o :    $(GAME_DIR)/m_boss32.c;    $(DO_SHLIB_CC)
741$(BUILDDIR)/game/m_brain.o :     $(GAME_DIR)/m_brain.c;     $(DO_SHLIB_CC)
742$(BUILDDIR)/game/m_chick.o :     $(GAME_DIR)/m_chick.c;     $(DO_SHLIB_CC)
743$(BUILDDIR)/game/m_flipper.o :   $(GAME_DIR)/m_flipper.c;   $(DO_SHLIB_CC)
744$(BUILDDIR)/game/m_float.o :     $(GAME_DIR)/m_float.c;     $(DO_SHLIB_CC)
745$(BUILDDIR)/game/m_flyer.o :     $(GAME_DIR)/m_flyer.c;     $(DO_SHLIB_CC)
746$(BUILDDIR)/game/m_gladiator.o : $(GAME_DIR)/m_gladiator.c; $(DO_SHLIB_CC)
747$(BUILDDIR)/game/m_gunner.o :    $(GAME_DIR)/m_gunner.c;    $(DO_SHLIB_CC)
748$(BUILDDIR)/game/m_hover.o :     $(GAME_DIR)/m_hover.c;     $(DO_SHLIB_CC)
749$(BUILDDIR)/game/m_infantry.o :  $(GAME_DIR)/m_infantry.c;  $(DO_SHLIB_CC)
750$(BUILDDIR)/game/m_insane.o :    $(GAME_DIR)/m_insane.c;    $(DO_SHLIB_CC)
751$(BUILDDIR)/game/m_medic.o :     $(GAME_DIR)/m_medic.c;     $(DO_SHLIB_CC)
752$(BUILDDIR)/game/m_move.o :      $(GAME_DIR)/m_move.c;      $(DO_SHLIB_CC)
753$(BUILDDIR)/game/m_mutant.o :    $(GAME_DIR)/m_mutant.c;    $(DO_SHLIB_CC)
754$(BUILDDIR)/game/m_parasite.o :  $(GAME_DIR)/m_parasite.c;  $(DO_SHLIB_CC)
755$(BUILDDIR)/game/m_soldier.o :   $(GAME_DIR)/m_soldier.c;   $(DO_SHLIB_CC)
756$(BUILDDIR)/game/m_supertank.o : $(GAME_DIR)/m_supertank.c; $(DO_SHLIB_CC)
757$(BUILDDIR)/game/m_tank.o :      $(GAME_DIR)/m_tank.c;      $(DO_SHLIB_CC)
758$(BUILDDIR)/game/p_hud.o :       $(GAME_DIR)/p_hud.c;       $(DO_SHLIB_CC)
759$(BUILDDIR)/game/p_trail.o :     $(GAME_DIR)/p_trail.c;     $(DO_SHLIB_CC)
760$(BUILDDIR)/game/p_view.o :      $(GAME_DIR)/p_view.c;      $(DO_SHLIB_CC)
761$(BUILDDIR)/game/p_weapon.o :    $(GAME_DIR)/p_weapon.c;    $(DO_SHLIB_CC)
762$(BUILDDIR)/game/q_shared.o :    $(GAME_DIR)/q_shared.c;    $(DO_SHLIB_CC)
763$(BUILDDIR)/game/m_flash.o :     $(GAME_DIR)/m_flash.c;     $(DO_SHLIB_CC)
764
765#############################################################################
766# CTF
767#############################################################################
768
769CTF_OBJS = \
770$(BUILDDIR)/ctf/g_ai.o      $(BUILDDIR)/ctf/g_chase.o  $(BUILDDIR)/ctf/g_cmds.o \
771$(BUILDDIR)/ctf/g_combat.o  $(BUILDDIR)/ctf/g_ctf.o    $(BUILDDIR)/ctf/g_func.o \
772$(BUILDDIR)/ctf/g_items.o   $(BUILDDIR)/ctf/g_main.o   $(BUILDDIR)/ctf/g_misc.o \
773$(BUILDDIR)/ctf/g_monster.o $(BUILDDIR)/ctf/g_phys.o   $(BUILDDIR)/ctf/g_save.o \
774$(BUILDDIR)/ctf/g_spawn.o   $(BUILDDIR)/ctf/g_svcmds.o $(BUILDDIR)/ctf/g_target.o \
775$(BUILDDIR)/ctf/g_trigger.o $(BUILDDIR)/ctf/g_utils.o  $(BUILDDIR)/ctf/g_weapon.o \
776$(BUILDDIR)/ctf/m_move.o    $(BUILDDIR)/ctf/p_client.o $(BUILDDIR)/ctf/p_hud.o \
777$(BUILDDIR)/ctf/p_menu.o    $(BUILDDIR)/ctf/p_trail.o  $(BUILDDIR)/ctf/p_view.o \
778$(BUILDDIR)/ctf/p_weapon.o  $(BUILDDIR)/ctf/q_shared.o
779
780$(BINDIR)/ctf/game.$(SHLIB_EXT) : $(CTF_OBJS)
781	@echo
782	@echo "**Built $@ with cflags:"
783	@echo "$(CC) $(CC_VERSION) $(CFLAGS)";
784	@echo "$(SHLIB_CFLAGS)";
785	@echo
786	@echo "**Linking $@ with flags:"
787	@echo "$(SHLIB_LDFLAGS)";
788	@echo
789	$(CC) $(CFLAGS) $(SHLIB_LDFLAGS) -o $@ $(CTF_OBJS)
790
791$(BUILDDIR)/ctf/g_ai.o :      $(CTF_DIR)/g_ai.c;      $(DO_SHLIB_CC)
792$(BUILDDIR)/ctf/g_chase.o :   $(CTF_DIR)/g_chase.c;   $(DO_SHLIB_CC)
793$(BUILDDIR)/ctf/g_cmds.o :    $(CTF_DIR)/g_cmds.c;    $(DO_SHLIB_CC)
794$(BUILDDIR)/ctf/g_combat.o :  $(CTF_DIR)/g_combat.c;  $(DO_SHLIB_CC)
795$(BUILDDIR)/ctf/g_ctf.o :     $(CTF_DIR)/g_ctf.c;     $(DO_SHLIB_CC)
796$(BUILDDIR)/ctf/g_func.o :    $(CTF_DIR)/g_func.c;    $(DO_SHLIB_CC)
797$(BUILDDIR)/ctf/g_items.o :   $(CTF_DIR)/g_items.c;   $(DO_SHLIB_CC)
798$(BUILDDIR)/ctf/g_main.o :    $(CTF_DIR)/g_main.c;    $(DO_SHLIB_CC)
799$(BUILDDIR)/ctf/g_misc.o :    $(CTF_DIR)/g_misc.c;    $(DO_SHLIB_CC)
800$(BUILDDIR)/ctf/g_monster.o : $(CTF_DIR)/g_monster.c; $(DO_SHLIB_CC)
801$(BUILDDIR)/ctf/g_phys.o :    $(CTF_DIR)/g_phys.c;    $(DO_SHLIB_CC)
802$(BUILDDIR)/ctf/g_save.o :    $(CTF_DIR)/g_save.c;    $(DO_SHLIB_CC)
803$(BUILDDIR)/ctf/g_spawn.o :   $(CTF_DIR)/g_spawn.c;   $(DO_SHLIB_CC)
804$(BUILDDIR)/ctf/g_svcmds.o :  $(CTF_DIR)/g_svcmds.c;  $(DO_SHLIB_CC)
805$(BUILDDIR)/ctf/g_target.o :  $(CTF_DIR)/g_target.c;  $(DO_SHLIB_CC)
806$(BUILDDIR)/ctf/g_trigger.o : $(CTF_DIR)/g_trigger.c; $(DO_SHLIB_CC)
807$(BUILDDIR)/ctf/g_utils.o :   $(CTF_DIR)/g_utils.c;   $(DO_SHLIB_CC)
808$(BUILDDIR)/ctf/g_weapon.o :  $(CTF_DIR)/g_weapon.c;  $(DO_SHLIB_CC)
809$(BUILDDIR)/ctf/m_move.o :    $(CTF_DIR)/m_move.c;    $(DO_SHLIB_CC)
810$(BUILDDIR)/ctf/p_client.o :  $(CTF_DIR)/p_client.c;  $(DO_SHLIB_CC)
811$(BUILDDIR)/ctf/p_hud.o :     $(CTF_DIR)/p_hud.c;     $(DO_SHLIB_CC)
812$(BUILDDIR)/ctf/p_menu.o :    $(CTF_DIR)/p_menu.c;    $(DO_SHLIB_CC)
813$(BUILDDIR)/ctf/p_trail.o :   $(CTF_DIR)/p_trail.c;   $(DO_SHLIB_CC)
814$(BUILDDIR)/ctf/p_view.o :    $(CTF_DIR)/p_view.c;    $(DO_SHLIB_CC)
815$(BUILDDIR)/ctf/p_weapon.o :  $(CTF_DIR)/p_weapon.c;  $(DO_SHLIB_CC)
816$(BUILDDIR)/ctf/q_shared.o :  $(CTF_DIR)/q_shared.c;  $(DO_SHLIB_CC)
817
818#############################################################################
819# MISC
820#############################################################################
821
822DATE=`date +%F`
823
824clean:
825	@echo
826	@echo Cleaning objects...
827	@rm -rf \
828	$(BUILD_DEBUG_DIR) \
829	$(BUILD_RELEASE_DIR)
830	@echo ...................
831	@echo .... Done
832
833clean_bin:
834	@echo
835	@echo Cleaning binaries...
836	@-rm -rf $(BINDIR)
837	@echo ....................
838	@echo .... Done
839
840clean_cl:
841	@echo
842	@echo Cleaning client objects...
843	@-rm -f $(BINDIR)/snd_* \
844	@-rm -f $(BINDIR)/q2p* \
845	@-rm -f $(BUILD_RELEASE_DIR)/client/* \
846	@-rm -f $(BUILD_DEBUG_DIR)/client/*
847	@echo ....................
848	@echo .... Done
849
850clean_gl:
851	@echo
852	@echo Cleaning gl objects...
853	@-rm -f $(BINDIR)/vid_* \
854	@-rm -f $(BUILD_RELEASE_DIR)/ref_gl/* \
855	@-rm -f $(BUILD_DEBUG_DIR)/ref_gl/*
856	@echo ....................
857	@echo .... Done
858
859distclean:
860	@echo
861	@echo Cleaning objects and binaries...
862	@-rm -rf $(BUILD_DEBUG_DIR) $(BUILD_RELEASE_DIR) $(BINDIR)
863	@-rm -f `find . \( -not -type d \) -and \
864		\( -name '*~' \) -type f -print`
865	@echo ................................
866	@echo .... Done
867
868dist:distclean
869	@echo
870	@printf "Creating bzip2 for source files...\n"
871	@mkdir -p ../$(Q2P_VERSION_BZ2)-$(DATE)
872	@cp -r * ../$(Q2P_VERSION_BZ2)-$(DATE)
873	@tar cjvf ../$(Q2P_VERSION_BZ2)-$(DATE).tar.bz2 \
874		  ../$(Q2P_VERSION_BZ2)-$(DATE)
875	@rm -rf ../$(Q2P_VERSION_BZ2)-$(DATE)
876	@printf ".... Done.\n"
877
878install:
879	@echo
880	@printf "Copying files to your home dir\n"
881	@echo ......
882	@cp -rv $(BINDIR) $(HOME)
883	@cp -rv gnu.txt Q2P_readme.txt Ogg_readme.txt unix/q2p.run $(HOME)/$(BINDIR)
884	@chmod +x $(HOME)/$(BINDIR)/q2p.run
885	@cp -rv $(MOUNT_DIR)/data/baseq2/q2p.q2z $(HOME)/$(BINDIR)/baseq2
886	@mkdir -pv $(HOME)/bin
887	@cd $(HOME)/bin && ln -svf $(HOME)/$(BINDIR)/q2p.run q2p
888	@printf "Symlinking executable to $(HOME)/bin\n"
889	@echo
890	@printf "You must to set the PATH $(HOME)/bin to the executable search path in order to run q2p.\n"
891	@printf "See the Q2P_readme.txt\n"
892	@echo
893	@echo Done
894install_root:
895	@echo
896	@mkdir -pv $(DATADIR)
897	@printf "Copying files to $(DATADIR)\n"
898ifeq ($(OSTYPE),freebsd)
899	@cp -rv $(BINDIR) $(LOCALBASE)/share
900	@rm -fv $(DATADIR)/vid_* $(DATADIR)/snd_*
901	@mkdir -pv $(LIBDIR)
902	@cp -rv $(BINDIR)/*.so $(LIBDIR)
903else
904	@cp -rv $(BINDIR) $(LOCALBASE)/games
905endif
906	@cp -rv $(MOUNT_DIR)/unix/q2p.run unix/q2p.png $(DATADIR)
907	@chmod +x $(DATADIR)/q2p.run
908	@cp -rv $(MOUNT_DIR)/data/baseq2/q2p.q2z $(DATADIR)/baseq2
909	@cp -rv $(MOUNT_DIR)/unix/Q2P.desktop /home/*/Desktop/Q2P
910	@ln -sfv $(DATADIR)/q2p.run $(SYSBINDIR)/q2p
911	@printf "Symlinking executable to $(SYSBINDIR)\n"
912	@echo
913	@printf "Copy or link into $(DATADIR)/baseq2 the required pak files and players folder\n"
914	@printf "from your quake2 cdrom in order to run. Also get CTF files from id ftp.\n"
915	@echo
916	@printf "Type q2p as user to start.\n"
917ifeq ($(strip $(BUILD_DEDICATED)),YES)
918	@printf "Type q2p +set dedicated +exec <your_server_config_file>.cfg as user to start a dedicated server.\n"
919endif
920	@echo
921	@echo Done
922bz2:
923	@echo
924	@printf "Creating bzip2 compressed file ...\n"
925	@cp -r gnu.txt Q2P_readme.txt Ogg_readme.txt unix/q2p.run $(BINDIR)
926	@-mkdir -p $(BINDIR)/baseq2
927	@cp -r $(MOUNT_DIR)/data/baseq2/q2p.q2z $(BINDIR)/baseq2
928	@tar cjvf $(Q2P_VERSION_BZ2)-$(OSTYPE)-$(DATE).tar.bz2 $(BINDIR)
929	@printf ".... Done.\n"
930
931