7
COMPILE_PLATFORM=$(shell uname|sed -e s/_.*//|tr '[:upper:]' '[:lower:]')
9
COMPILE_ARCH=$(shell uname -m | sed -e s/i.86/i386/)
11
ifeq ($(COMPILE_PLATFORM),sunos)
12
# Solaris uname and GNU uname differ
13
COMPILE_ARCH=$(shell uname -p | sed -e s/i.86/i386/)
15
ifeq ($(COMPILE_PLATFORM),darwin)
16
# Apple does some things a little differently...
17
COMPILE_ARCH=$(shell uname -p | sed -e s/i.86/i386/)
20
ifeq ($(COMPILE_PLATFORM),mingw32)
21
ifeq ($(COMPILE_ARCH),i386)
29
ifndef BUILD_CLIENT_SMP
42
ifneq ($(PLATFORM),darwin)
46
#############################################################################
48
# If you require a different configuration from the defaults below, create a
49
# new file named "Makefile.local" in the same directory as this file and define
50
# your parameters there. This allows you to change configuration without
51
# causing problems with keeping up to date with the repository.
53
#############################################################################
54
-include Makefile.local
57
PLATFORM=$(COMPILE_PLATFORM)
61
ifeq ($(COMPILE_ARCH),powerpc)
70
ifneq ($(PLATFORM),$(COMPILE_PLATFORM))
75
ifneq ($(ARCH),$(COMPILE_ARCH))
79
export CROSS_COMPILING
82
COPYDIR="/usr/local/games/quake3"
93
ifndef GENERATE_DEPENDENCIES
94
GENERATE_DEPENDENCIES=1
101
ifndef USE_OPENAL_DLOPEN
109
ifndef USE_CURL_DLOPEN
110
ifeq ($(PLATFORM),mingw32)
117
ifndef USE_CODEC_VORBIS
121
ifndef USE_LOCAL_HEADERS
125
#############################################################################
127
BD=$(BUILD_DIR)/debug-$(PLATFORM)-$(ARCH)
128
BR=$(BUILD_DIR)/release-$(PLATFORM)-$(ARCH)
129
CDIR=$(MOUNT_DIR)/client
130
SDIR=$(MOUNT_DIR)/server
131
RDIR=$(MOUNT_DIR)/renderer
132
CMDIR=$(MOUNT_DIR)/qcommon
133
SDLDIR=$(MOUNT_DIR)/sdl
134
ASMDIR=$(MOUNT_DIR)/asm
135
SYSDIR=$(MOUNT_DIR)/sys
136
GDIR=$(MOUNT_DIR)/game
137
CGDIR=$(MOUNT_DIR)/cgame
138
BLIBDIR=$(MOUNT_DIR)/botlib
139
NDIR=$(MOUNT_DIR)/null
140
UIDIR=$(MOUNT_DIR)/ui
141
Q3UIDIR=$(MOUNT_DIR)/q3_ui
142
JPDIR=$(MOUNT_DIR)/jpeg-6
143
Q3ASMDIR=$(MOUNT_DIR)/tools/asm
144
LBURGDIR=$(MOUNT_DIR)/tools/lcc/lburg
145
Q3CPPDIR=$(MOUNT_DIR)/tools/lcc/cpp
146
Q3LCCETCDIR=$(MOUNT_DIR)/tools/lcc/etc
147
Q3LCCSRCDIR=$(MOUNT_DIR)/tools/lcc/src
148
LOKISETUPDIR=misc/setup
149
SDLHDIR=$(MOUNT_DIR)/SDL12
150
LIBSDIR=$(MOUNT_DIR)/libs
153
# extract version info
154
VERSION=$(shell grep "\#define *PRODUCT_VERSION" $(CMDIR)/q_shared.h | \
155
sed -e 's/[^"]*"\(.*\)"/\1/')
158
ifeq ($(wildcard .svn),.svn)
159
SVN_REV=$(shell LANG=C svnversion .)
161
SVN_VERSION=$(VERSION)_SVN$(SVN_REV)
166
SVN_VERSION=$(VERSION)
170
#############################################################################
171
# SETUP AND BUILD -- LINUX
172
#############################################################################
180
ifeq ($(PLATFORM),linux)
185
ifeq ($(ARCH),x86_64)
198
BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \
199
-pipe -DUSE_ICON $(shell sdl-config --cflags)
201
ifeq ($(USE_OPENAL),1)
202
BASE_CFLAGS += -DUSE_OPENAL
203
ifeq ($(USE_OPENAL_DLOPEN),1)
204
BASE_CFLAGS += -DUSE_OPENAL_DLOPEN
209
BASE_CFLAGS += -DUSE_CURL
210
ifeq ($(USE_CURL_DLOPEN),1)
211
BASE_CFLAGS += -DUSE_CURL_DLOPEN
215
ifeq ($(USE_CODEC_VORBIS),1)
216
BASE_CFLAGS += -DUSE_CODEC_VORBIS
219
OPTIMIZE = -O3 -ffast-math -funroll-loops -fomit-frame-pointer
221
ifeq ($(ARCH),x86_64)
222
OPTIMIZE = -O3 -fomit-frame-pointer -ffast-math -funroll-loops \
223
-falign-loops=2 -falign-jumps=2 -falign-functions=2 \
225
# experimental x86_64 jit compiler! you need GNU as
226
HAVE_VM_COMPILED = true
229
OPTIMIZE = -O3 -march=i586 -fomit-frame-pointer -ffast-math \
230
-funroll-loops -falign-loops=2 -falign-jumps=2 \
231
-falign-functions=2 -fstrength-reduce
232
HAVE_VM_COMPILED=true
235
BASE_CFLAGS += -maltivec
236
HAVE_VM_COMPILED=false
241
ifneq ($(HAVE_VM_COMPILED),true)
242
BASE_CFLAGS += -DNO_VM_COMPILED
247
SHLIBLDFLAGS=-shared $(LDFLAGS)
249
THREAD_LDFLAGS=-lpthread
252
CLIENT_LDFLAGS=$(shell sdl-config --libs) -lGL
254
ifeq ($(USE_OPENAL),1)
255
ifneq ($(USE_OPENAL_DLOPEN),1)
256
CLIENT_LDFLAGS += -lopenal
261
ifneq ($(USE_CURL_DLOPEN),1)
262
CLIENT_LDFLAGS += -lcurl
266
ifeq ($(USE_CODEC_VORBIS),1)
267
CLIENT_LDFLAGS += -lvorbisfile -lvorbis -logg
281
DEBUG_CFLAGS = $(BASE_CFLAGS) -g -O0
282
RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG $(OPTIMIZE)
286
#############################################################################
287
# SETUP AND BUILD -- MAC OS X
288
#############################################################################
290
ifeq ($(PLATFORM),darwin)
291
HAVE_VM_COMPILED=true
295
# building the QVMs on MacOSX is broken, atm.
298
BASE_CFLAGS = -Wall -Wimplicit -Wstrict-prototypes
301
OPTIMIZE += -faltivec -O3
304
OPTIMIZE += -march=prescott -mfpmath=sse
305
# x86 vm will crash without -mstackrealign since MMX instructions will be
306
# used no matter what and they corrupt the frame pointer in VM calls
307
BASE_CFLAGS += -mstackrealign
310
BASE_CFLAGS += -fno-strict-aliasing -DMACOS_X -fno-common -pipe
312
ifeq ($(USE_OPENAL),1)
313
BASE_CFLAGS += -DUSE_OPENAL
314
ifneq ($(USE_OPENAL_DLOPEN),1)
315
CLIENT_LDFLAGS += -framework OpenAL
317
BASE_CFLAGS += -DUSE_OPENAL_DLOPEN
322
BASE_CFLAGS += -DUSE_CURL
323
ifneq ($(USE_CURL_DLOPEN),1)
324
CLIENT_LDFLAGS += -lcurl
326
BASE_CFLAGS += -DUSE_CURL_DLOPEN
330
ifeq ($(USE_CODEC_VORBIS),1)
331
BASE_CFLAGS += -DUSE_CODEC_VORBIS
332
CLIENT_LDFLAGS += -lvorbisfile -lvorbis -logg
335
BASE_CFLAGS += -D_THREAD_SAFE=1
337
ifeq ($(USE_LOCAL_HEADERS),1)
338
BASE_CFLAGS += -I$(SDLHDIR)/include
341
# We copy sdlmain before ranlib'ing it so that subversion doesn't think
342
# the file has been modified by each build.
343
LIBSDLMAIN=$(B)/libSDLmain.a
344
LIBSDLMAINSRC=$(LIBSDIR)/macosx/libSDLmain.a
345
CLIENT_LDFLAGS += -framework Cocoa -framework IOKit -framework OpenGL \
346
$(LIBSDIR)/macosx/libSDL-1.2.0.dylib
348
OPTIMIZE += -ffast-math -falign-loops=16
350
ifneq ($(HAVE_VM_COMPILED),true)
351
BASE_CFLAGS += -DNO_VM_COMPILED
354
DEBUG_CFLAGS = $(BASE_CFLAGS) -g -O0
356
RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG $(OPTIMIZE)
359
SHLIBCFLAGS=-fPIC -fno-common
360
SHLIBLDFLAGS=-dynamiclib $(LDFLAGS)
362
NOTSHLIBCFLAGS=-mdynamic-no-pic
364
TOOLS_CFLAGS += -DMACOS_X
369
#############################################################################
370
# SETUP AND BUILD -- MINGW32
371
#############################################################################
373
ifeq ($(PLATFORM),mingw32)
381
BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \
384
ifeq ($(USE_LOCAL_HEADERS),1)
385
BASE_CFLAGS += -I$(SDLHDIR)/include
388
ifeq ($(USE_OPENAL),1)
389
BASE_CFLAGS += -DUSE_OPENAL=1 -DUSE_OPENAL_DLOPEN
393
BASE_CFLAGS += -DUSE_CURL
394
ifneq ($(USE_CURL_DLOPEN),1)
395
BASE_CFLAGS += -DCURL_STATICLIB
399
ifeq ($(USE_CODEC_VORBIS),1)
400
BASE_CFLAGS += -DUSE_CODEC_VORBIS
403
OPTIMIZE = -O3 -march=i586 -fno-omit-frame-pointer -ffast-math \
404
-falign-loops=2 -funroll-loops -falign-jumps=2 -falign-functions=2 \
407
HAVE_VM_COMPILED = true
411
SHLIBLDFLAGS=-shared $(LDFLAGS)
415
LDFLAGS= -lwsock32 -lwinmm
416
CLIENT_LDFLAGS = -mwindows -lgdi32 -lole32 -lopengl32
419
ifneq ($(USE_CURL_DLOPEN),1)
420
CLIENT_LDFLAGS += $(LIBSDIR)/win32/libcurl.a
424
ifeq ($(USE_CODEC_VORBIS),1)
425
CLIENT_LDFLAGS += -lvorbisfile -lvorbis -logg
434
DEBUG_CFLAGS=$(BASE_CFLAGS) -g -O0
435
RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG $(OPTIMIZE)
437
# libmingw32 must be linked before libSDLmain
438
CLIENT_LDFLAGS += -lmingw32 \
439
$(LIBSDIR)/win32/libSDLmain.a \
440
$(LIBSDIR)/win32/libSDL.dll.a
446
#############################################################################
447
# SETUP AND BUILD -- FREEBSD
448
#############################################################################
450
ifeq ($(PLATFORM),freebsd)
452
ifneq (,$(findstring alpha,$(shell uname -m)))
454
else #default to i386
459
BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \
460
-DUSE_ICON $(shell sdl-config --cflags)
462
ifeq ($(USE_OPENAL),1)
463
BASE_CFLAGS += -DUSE_OPENAL
464
ifeq ($(USE_OPENAL_DLOPEN),1)
465
BASE_CFLAGS += -DUSE_OPENAL_DLOPEN
469
ifeq ($(USE_CODEC_VORBIS),1)
470
BASE_CFLAGS += -DUSE_CODEC_VORBIS
474
BASE_CFLAGS += -DNO_VM_COMPILED
475
RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG -O3 -ffast-math -funroll-loops \
476
-fomit-frame-pointer -fexpensive-optimizations
479
RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG -O3 -mtune=pentiumpro \
480
-march=pentium -fomit-frame-pointer -pipe -ffast-math \
481
-falign-loops=2 -falign-jumps=2 -falign-functions=2 \
482
-funroll-loops -fstrength-reduce
483
HAVE_VM_COMPILED=true
485
BASE_CFLAGS += -DNO_VM_COMPILED
489
DEBUG_CFLAGS=$(BASE_CFLAGS) -g
493
SHLIBLDFLAGS=-shared $(LDFLAGS)
495
THREAD_LDFLAGS=-lpthread
496
# don't need -ldl (FreeBSD)
501
CLIENT_LDFLAGS += $(shell sdl-config --libs) -lGL
503
ifeq ($(USE_OPENAL),1)
504
ifneq ($(USE_OPENAL_DLOPEN),1)
505
CLIENT_LDFLAGS += $(THREAD_LDFLAGS) -lopenal
509
ifeq ($(USE_CODEC_VORBIS),1)
510
CLIENT_LDFLAGS += -lvorbisfile -lvorbis -logg
516
#############################################################################
517
# SETUP AND BUILD -- OPENBSD
518
#############################################################################
520
ifeq ($(PLATFORM),openbsd)
522
#default to i386, no tests done on anything else
526
BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \
527
-DUSE_ICON $(shell sdl-config --cflags)
529
ifeq ($(USE_OPENAL),1)
530
BASE_CFLAGS += -DUSE_OPENAL
531
ifeq ($(USE_OPENAL_DLOPEN),1)
532
BASE_CFLAGS += -DUSE_OPENAL_DLOPEN
536
ifeq ($(USE_CODEC_VORBIS),1)
537
BASE_CFLAGS += -DUSE_CODEC_VORBIS
540
BASE_CFLAGS += -DNO_VM_COMPILED -I/usr/X11R6/include -I/usr/local/include
541
RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG -O3 \
542
-march=pentium -fomit-frame-pointer -pipe -ffast-math \
543
-falign-loops=2 -falign-jumps=2 -falign-functions=2 \
544
-funroll-loops -fstrength-reduce
545
HAVE_VM_COMPILED=false
547
DEBUG_CFLAGS=$(BASE_CFLAGS) -g
551
SHLIBLDFLAGS=-shared $(LDFLAGS)
553
THREAD_LDFLAGS=-lpthread
558
CLIENT_LDFLAGS += $(shell sdl-config --libs) -lGL
560
ifeq ($(USE_OPENAL),1)
561
ifneq ($(USE_OPENAL_DLOPEN),1)
562
CLIENT_LDFLAGS += $(THREAD_LDFLAGS) -lopenal
566
ifeq ($(USE_CODEC_VORBIS),1)
567
CLIENT_LDFLAGS += -lvorbisfile -lvorbis -logg
573
#############################################################################
574
# SETUP AND BUILD -- NETBSD
575
#############################################################################
577
ifeq ($(PLATFORM),netbsd)
579
ifeq ($(shell uname -m),i386)
586
SHLIBLDFLAGS=-shared $(LDFLAGS)
587
THREAD_LDFLAGS=-lpthread
589
BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes
592
BASE_CFLAGS += -DNO_VM_COMPILED
595
DEBUG_CFLAGS=$(BASE_CFLAGS) -g
602
#############################################################################
603
# SETUP AND BUILD -- IRIX
604
#############################################################################
606
ifeq ($(PLATFORM),irix64)
608
ARCH=mips #default to MIPS
613
BASE_CFLAGS=-Dstricmp=strcasecmp -Xcpluscomm -woff 1185 \
614
-I. $(shell sdl-config --cflags) -I$(ROOT)/usr/include -DNO_VM_COMPILED
615
RELEASE_CFLAGS=$(BASE_CFLAGS) -O3
616
DEBUG_CFLAGS=$(BASE_CFLAGS) -g
622
LDFLAGS=-ldl -lm -lgen
623
# FIXME: The X libraries probably aren't necessary?
624
CLIENT_LDFLAGS=-L/usr/X11/$(LIB) $(shell sdl-config --libs) -lGL \
629
#############################################################################
630
# SETUP AND BUILD -- SunOS
631
#############################################################################
633
ifeq ($(PLATFORM),sunos)
638
COPYDIR="/usr/local/share/games/quake3"
640
ifneq (,$(findstring i86pc,$(shell uname -m)))
642
else #default to sparc
647
ifneq ($(ARCH),sparc)
648
$(error arch $(ARCH) is currently not supported)
653
BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \
654
-pipe -DUSE_ICON $(shell sdl-config --cflags)
656
OPTIMIZE = -O3 -ffast-math -funroll-loops
659
OPTIMIZE = -O3 -ffast-math \
660
-fstrength-reduce -falign-functions=2 \
661
-mtune=ultrasparc3 -mv8plus -mno-faster-structs \
662
-funroll-loops #-mv8plus
665
OPTIMIZE = -O3 -march=i586 -fomit-frame-pointer -ffast-math \
666
-funroll-loops -falign-loops=2 -falign-jumps=2 \
667
-falign-functions=2 -fstrength-reduce
668
HAVE_VM_COMPILED=true
671
BASE_CFLAGS += -I/usr/X11/include/NVIDIA
672
CLIENT_LDFLAGS += -L/usr/X11/lib/NVIDIA -R/usr/X11/lib/NVIDIA
676
ifneq ($(HAVE_VM_COMPILED),true)
677
BASE_CFLAGS += -DNO_VM_COMPILED
680
DEBUG_CFLAGS = $(BASE_CFLAGS) -ggdb -O0
682
RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG $(OPTIMIZE)
686
SHLIBLDFLAGS=-shared $(LDFLAGS)
688
THREAD_LDFLAGS=-lpthread
689
LDFLAGS=-lsocket -lnsl -ldl -lm
693
CLIENT_LDFLAGS +=$(shell sdl-config --libs) -lGL
697
#############################################################################
698
# SETUP AND BUILD -- GENERIC
699
#############################################################################
700
BASE_CFLAGS=-DNO_VM_COMPILED
701
DEBUG_CFLAGS=$(BASE_CFLAGS) -g
702
RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG -O3
719
ifneq ($(BUILD_SERVER),0)
720
TARGETS += $(B)/ioq3ded.$(ARCH)$(BINEXT)
723
ifneq ($(BUILD_CLIENT),0)
724
TARGETS += $(B)/ioquake3.$(ARCH)$(BINEXT)
725
ifneq ($(BUILD_CLIENT_SMP),0)
726
TARGETS += $(B)/ioquake3-smp.$(ARCH)$(BINEXT)
730
ifneq ($(BUILD_GAME_SO),0)
732
$(B)/baseq3/cgame$(ARCH).$(SHLIBEXT) \
733
$(B)/baseq3/qagame$(ARCH).$(SHLIBEXT) \
734
$(B)/baseq3/ui$(ARCH).$(SHLIBEXT) \
735
$(B)/missionpack/cgame$(ARCH).$(SHLIBEXT) \
736
$(B)/missionpack/qagame$(ARCH).$(SHLIBEXT) \
737
$(B)/missionpack/ui$(ARCH).$(SHLIBEXT)
740
ifneq ($(BUILD_GAME_QVM),0)
741
ifneq ($(CROSS_COMPILING),1)
743
$(B)/baseq3/vm/cgame.qvm \
744
$(B)/baseq3/vm/qagame.qvm \
745
$(B)/baseq3/vm/ui.qvm \
746
$(B)/missionpack/vm/qagame.qvm \
747
$(B)/missionpack/vm/cgame.qvm \
748
$(B)/missionpack/vm/ui.qvm
752
ifdef DEFAULT_BASEDIR
753
BASE_CFLAGS += -DDEFAULT_BASEDIR=\\\"$(DEFAULT_BASEDIR)\\\"
756
ifeq ($(USE_LOCAL_HEADERS),1)
757
BASE_CFLAGS += -DUSE_LOCAL_HEADERS
760
ifeq ($(GENERATE_DEPENDENCIES),1)
767
BASE_CFLAGS += -DSVN_VERSION=\\\"$(SVN_VERSION)\\\"
780
$(Q)$(CC) $(NOTSHLIBCFLAGS) $(CFLAGS) -o $@ -c $<
784
$(echo_cmd) "SMP_CC $<"
785
$(Q)$(CC) $(NOTSHLIBCFLAGS) $(CFLAGS) -DSMP -o $@ -c $<
789
$(echo_cmd) "BOT_CC $<"
790
$(Q)$(CC) $(NOTSHLIBCFLAGS) $(CFLAGS) $(BOTCFLAGS) -DBOTLIB -o $@ -c $<
793
ifeq ($(GENERATE_DEPENDENCIES),1)
794
DO_QVM_DEP=cat $(@:%.o=%.d) | sed -e 's/\.o/\.asm/g' >> $(@:%.o=%.d)
798
$(echo_cmd) "SHLIB_CC $<"
799
$(Q)$(CC) $(CFLAGS) $(SHLIBCFLAGS) -o $@ -c $<
804
$(echo_cmd) "GAME_CC $<"
805
$(Q)$(CC) -DQAGAME $(CFLAGS) $(SHLIBCFLAGS) -o $@ -c $<
810
$(echo_cmd) "CGAME_CC $<"
811
$(Q)$(CC) -DCGAME $(CFLAGS) $(SHLIBCFLAGS) -o $@ -c $<
816
$(echo_cmd) "UI_CC $<"
817
$(Q)$(CC) -DUI $(CFLAGS) $(SHLIBCFLAGS) -o $@ -c $<
821
define DO_SHLIB_CC_MISSIONPACK
822
$(echo_cmd) "SHLIB_CC_MISSIONPACK $<"
823
$(Q)$(CC) -DMISSIONPACK $(CFLAGS) $(SHLIBCFLAGS) -o $@ -c $<
827
define DO_GAME_CC_MISSIONPACK
828
$(echo_cmd) "GAME_CC_MISSIONPACK $<"
829
$(Q)$(CC) -DMISSIONPACK -DQAGAME $(CFLAGS) $(SHLIBCFLAGS) -o $@ -c $<
833
define DO_CGAME_CC_MISSIONPACK
834
$(echo_cmd) "CGAME_CC_MISSIONPACK $<"
835
$(Q)$(CC) -DMISSIONPACK -DCGAME $(CFLAGS) $(SHLIBCFLAGS) -o $@ -c $<
839
define DO_UI_CC_MISSIONPACK
840
$(echo_cmd) "UI_CC_MISSIONPACK $<"
841
$(Q)$(CC) -DMISSIONPACK -DUI $(CFLAGS) $(SHLIBCFLAGS) -o $@ -c $<
847
$(Q)$(CC) $(CFLAGS) -x assembler-with-cpp -o $@ -c $<
851
$(echo_cmd) "DED_CC $<"
852
$(Q)$(CC) $(NOTSHLIBCFLAGS) -DDEDICATED $(CFLAGS) -o $@ -c $<
856
$(echo_cmd) "WINDRES $<"
857
$(Q)$(WINDRES) -i $< -o $@
861
#############################################################################
863
#############################################################################
869
@$(MAKE) targets B=$(BD) CFLAGS="$(CFLAGS) $(DEPEND_CFLAGS) \
870
$(DEBUG_CFLAGS)" V=$(V)
873
@$(MAKE) targets B=$(BR) CFLAGS="$(CFLAGS) $(DEPEND_CFLAGS) \
874
$(RELEASE_CFLAGS)" V=$(V)
876
# Create the build directories, check libraries and print out
877
# an informational message, then start building
880
@echo "Building ioquake3 in $(B):"
881
@echo " PLATFORM: $(PLATFORM)"
882
@echo " ARCH: $(ARCH)"
883
@echo " COMPILE_PLATFORM: $(COMPILE_PLATFORM)"
884
@echo " COMPILE_ARCH: $(COMPILE_ARCH)"
888
@for i in $(CFLAGS); \
894
@for i in $(LDFLAGS); \
900
@for i in $(TARGETS); \
905
@$(MAKE) $(TARGETS) V=$(V)
908
@if [ ! -d $(BUILD_DIR) ];then $(MKDIR) $(BUILD_DIR);fi
909
@if [ ! -d $(B) ];then $(MKDIR) $(B);fi
910
@if [ ! -d $(B)/client ];then $(MKDIR) $(B)/client;fi
911
@if [ ! -d $(B)/clientsmp ];then $(MKDIR) $(B)/clientsmp;fi
912
@if [ ! -d $(B)/ded ];then $(MKDIR) $(B)/ded;fi
913
@if [ ! -d $(B)/baseq3 ];then $(MKDIR) $(B)/baseq3;fi
914
@if [ ! -d $(B)/baseq3/cgame ];then $(MKDIR) $(B)/baseq3/cgame;fi
915
@if [ ! -d $(B)/baseq3/game ];then $(MKDIR) $(B)/baseq3/game;fi
916
@if [ ! -d $(B)/baseq3/ui ];then $(MKDIR) $(B)/baseq3/ui;fi
917
@if [ ! -d $(B)/baseq3/qcommon ];then $(MKDIR) $(B)/baseq3/qcommon;fi
918
@if [ ! -d $(B)/baseq3/vm ];then $(MKDIR) $(B)/baseq3/vm;fi
919
@if [ ! -d $(B)/missionpack ];then $(MKDIR) $(B)/missionpack;fi
920
@if [ ! -d $(B)/missionpack/cgame ];then $(MKDIR) $(B)/missionpack/cgame;fi
921
@if [ ! -d $(B)/missionpack/game ];then $(MKDIR) $(B)/missionpack/game;fi
922
@if [ ! -d $(B)/missionpack/ui ];then $(MKDIR) $(B)/missionpack/ui;fi
923
@if [ ! -d $(B)/missionpack/qcommon ];then $(MKDIR) $(B)/missionpack/qcommon;fi
924
@if [ ! -d $(B)/missionpack/vm ];then $(MKDIR) $(B)/missionpack/vm;fi
925
@if [ ! -d $(B)/tools ];then $(MKDIR) $(B)/tools;fi
926
@if [ ! -d $(B)/tools/asm ];then $(MKDIR) $(B)/tools/asm;fi
927
@if [ ! -d $(B)/tools/etc ];then $(MKDIR) $(B)/tools/etc;fi
928
@if [ ! -d $(B)/tools/rcc ];then $(MKDIR) $(B)/tools/rcc;fi
929
@if [ ! -d $(B)/tools/cpp ];then $(MKDIR) $(B)/tools/cpp;fi
930
@if [ ! -d $(B)/tools/lburg ];then $(MKDIR) $(B)/tools/lburg;fi
932
#############################################################################
934
#############################################################################
936
TOOLS_OPTIMIZE = -g -O2 -Wall -fno-strict-aliasing
937
TOOLS_CFLAGS = $(TOOLS_OPTIMIZE) \
938
-DTEMPDIR=\"$(TEMPDIR)\" -DSYSTEM=\"\" \
943
ifeq ($(GENERATE_DEPENDENCIES),1)
948
$(echo_cmd) "TOOLS_CC $<"
949
$(Q)$(CC) $(TOOLS_CFLAGS) -o $@ -c $<
952
define DO_TOOLS_CC_DAGCHECK
953
$(echo_cmd) "TOOLS_CC_DAGCHECK $<"
954
$(Q)$(CC) $(TOOLS_CFLAGS) -Wno-unused -o $@ -c $<
957
LBURG = $(B)/tools/lburg/lburg$(BINEXT)
958
DAGCHECK_C = $(B)/tools/rcc/dagcheck.c
959
Q3RCC = $(B)/tools/q3rcc$(BINEXT)
960
Q3CPP = $(B)/tools/q3cpp$(BINEXT)
961
Q3LCC = $(B)/tools/q3lcc$(BINEXT)
962
Q3ASM = $(B)/tools/q3asm$(BINEXT)
965
$(B)/tools/lburg/lburg.o \
966
$(B)/tools/lburg/gram.o
968
$(B)/tools/lburg/%.o: $(LBURGDIR)/%.c
971
$(LBURG): $(LBURGOBJ)
973
$(Q)$(CC) $(TOOLS_LDFLAGS) -o $@ $^
976
$(B)/tools/rcc/alloc.o \
977
$(B)/tools/rcc/bind.o \
978
$(B)/tools/rcc/bytecode.o \
979
$(B)/tools/rcc/dag.o \
980
$(B)/tools/rcc/dagcheck.o \
981
$(B)/tools/rcc/decl.o \
982
$(B)/tools/rcc/enode.o \
983
$(B)/tools/rcc/error.o \
984
$(B)/tools/rcc/event.o \
985
$(B)/tools/rcc/expr.o \
986
$(B)/tools/rcc/gen.o \
987
$(B)/tools/rcc/init.o \
988
$(B)/tools/rcc/inits.o \
989
$(B)/tools/rcc/input.o \
990
$(B)/tools/rcc/lex.o \
991
$(B)/tools/rcc/list.o \
992
$(B)/tools/rcc/main.o \
993
$(B)/tools/rcc/null.o \
994
$(B)/tools/rcc/output.o \
995
$(B)/tools/rcc/prof.o \
996
$(B)/tools/rcc/profio.o \
997
$(B)/tools/rcc/simp.o \
998
$(B)/tools/rcc/stmt.o \
999
$(B)/tools/rcc/string.o \
1000
$(B)/tools/rcc/sym.o \
1001
$(B)/tools/rcc/symbolic.o \
1002
$(B)/tools/rcc/trace.o \
1003
$(B)/tools/rcc/tree.o \
1004
$(B)/tools/rcc/types.o
1006
$(DAGCHECK_C): $(LBURG) $(Q3LCCSRCDIR)/dagcheck.md
1007
$(echo_cmd) "LBURG $(Q3LCCSRCDIR)/dagcheck.md"
1008
$(Q)$(LBURG) $(Q3LCCSRCDIR)/dagcheck.md $@
1010
$(B)/tools/rcc/dagcheck.o: $(DAGCHECK_C)
1011
$(DO_TOOLS_CC_DAGCHECK)
1013
$(B)/tools/rcc/%.o: $(Q3LCCSRCDIR)/%.c
1016
$(Q3RCC): $(Q3RCCOBJ)
1018
$(Q)$(CC) $(TOOLS_LDFLAGS) -o $@ $^
1021
$(B)/tools/cpp/cpp.o \
1022
$(B)/tools/cpp/lex.o \
1023
$(B)/tools/cpp/nlist.o \
1024
$(B)/tools/cpp/tokens.o \
1025
$(B)/tools/cpp/macro.o \
1026
$(B)/tools/cpp/eval.o \
1027
$(B)/tools/cpp/include.o \
1028
$(B)/tools/cpp/hideset.o \
1029
$(B)/tools/cpp/getopt.o \
1030
$(B)/tools/cpp/unix.o
1032
$(B)/tools/cpp/%.o: $(Q3CPPDIR)/%.c
1035
$(Q3CPP): $(Q3CPPOBJ)
1037
$(Q)$(CC) $(TOOLS_LDFLAGS) -o $@ $^
1040
$(B)/tools/etc/lcc.o \
1041
$(B)/tools/etc/bytecode.o
1043
$(B)/tools/etc/%.o: $(Q3LCCETCDIR)/%.c
1046
$(Q3LCC): $(Q3LCCOBJ) $(Q3RCC) $(Q3CPP)
1048
$(Q)$(CC) $(TOOLS_LDFLAGS) -o $@ $(Q3LCCOBJ)
1051
$(echo_cmd) "Q3LCC $<"
1052
$(Q)$(Q3LCC) -o $@ $<
1055
define DO_CGAME_Q3LCC
1056
$(echo_cmd) "CGAME_Q3LCC $<"
1057
$(Q)$(Q3LCC) -DCGAME -o $@ $<
1060
define DO_GAME_Q3LCC
1061
$(echo_cmd) "GAME_Q3LCC $<"
1062
$(Q)$(Q3LCC) -DQAGAME -o $@ $<
1066
$(echo_cmd) "UI_Q3LCC $<"
1067
$(Q)$(Q3LCC) -DUI -o $@ $<
1070
define DO_Q3LCC_MISSIONPACK
1071
$(echo_cmd) "Q3LCC_MISSIONPACK $<"
1072
$(Q)$(Q3LCC) -DMISSIONPACK -o $@ $<
1075
define DO_CGAME_Q3LCC_MISSIONPACK
1076
$(echo_cmd) "CGAME_Q3LCC_MISSIONPACK $<"
1077
$(Q)$(Q3LCC) -DMISSIONPACK -DCGAME -o $@ $<
1080
define DO_GAME_Q3LCC_MISSIONPACK
1081
$(echo_cmd) "GAME_Q3LCC_MISSIONPACK $<"
1082
$(Q)$(Q3LCC) -DMISSIONPACK -DQAGAME -o $@ $<
1085
define DO_UI_Q3LCC_MISSIONPACK
1086
$(echo_cmd) "UI_Q3LCC_MISSIONPACK $<"
1087
$(Q)$(Q3LCC) -DMISSIONPACK -DUI -o $@ $<
1092
$(B)/tools/asm/q3asm.o \
1093
$(B)/tools/asm/cmdlib.o
1095
$(B)/tools/asm/%.o: $(Q3ASMDIR)/%.c
1098
$(Q3ASM): $(Q3ASMOBJ)
1100
$(Q)$(CC) $(TOOLS_LDFLAGS) -o $@ $^
1103
#############################################################################
1105
#############################################################################
1108
$(B)/client/cl_cgame.o \
1109
$(B)/client/cl_cin.o \
1110
$(B)/client/cl_console.o \
1111
$(B)/client/cl_input.o \
1112
$(B)/client/cl_keys.o \
1113
$(B)/client/cl_main.o \
1114
$(B)/client/cl_net_chan.o \
1115
$(B)/client/cl_parse.o \
1116
$(B)/client/cl_scrn.o \
1117
$(B)/client/cl_ui.o \
1118
$(B)/client/cl_avi.o \
1120
$(B)/client/cm_load.o \
1121
$(B)/client/cm_patch.o \
1122
$(B)/client/cm_polylib.o \
1123
$(B)/client/cm_test.o \
1124
$(B)/client/cm_trace.o \
1127
$(B)/client/common.o \
1128
$(B)/client/cvar.o \
1129
$(B)/client/files.o \
1133
$(B)/client/net_chan.o \
1134
$(B)/client/net_ip.o \
1135
$(B)/client/huffman.o \
1137
$(B)/client/snd_adpcm.o \
1138
$(B)/client/snd_dma.o \
1139
$(B)/client/snd_mem.o \
1140
$(B)/client/snd_mix.o \
1141
$(B)/client/snd_wavelet.o \
1143
$(B)/client/snd_main.o \
1144
$(B)/client/snd_codec.o \
1145
$(B)/client/snd_codec_wav.o \
1146
$(B)/client/snd_codec_ogg.o \
1149
$(B)/client/snd_openal.o \
1151
$(B)/client/cl_curl.o \
1153
$(B)/client/sv_bot.o \
1154
$(B)/client/sv_ccmds.o \
1155
$(B)/client/sv_client.o \
1156
$(B)/client/sv_game.o \
1157
$(B)/client/sv_init.o \
1158
$(B)/client/sv_main.o \
1159
$(B)/client/sv_net_chan.o \
1160
$(B)/client/sv_snapshot.o \
1161
$(B)/client/sv_world.o \
1163
$(B)/client/q_math.o \
1164
$(B)/client/q_shared.o \
1166
$(B)/client/unzip.o \
1167
$(B)/client/puff.o \
1169
$(B)/client/vm_interpreted.o \
1171
$(B)/client/be_aas_bspq3.o \
1172
$(B)/client/be_aas_cluster.o \
1173
$(B)/client/be_aas_debug.o \
1174
$(B)/client/be_aas_entity.o \
1175
$(B)/client/be_aas_file.o \
1176
$(B)/client/be_aas_main.o \
1177
$(B)/client/be_aas_move.o \
1178
$(B)/client/be_aas_optimize.o \
1179
$(B)/client/be_aas_reach.o \
1180
$(B)/client/be_aas_route.o \
1181
$(B)/client/be_aas_routealt.o \
1182
$(B)/client/be_aas_sample.o \
1183
$(B)/client/be_ai_char.o \
1184
$(B)/client/be_ai_chat.o \
1185
$(B)/client/be_ai_gen.o \
1186
$(B)/client/be_ai_goal.o \
1187
$(B)/client/be_ai_move.o \
1188
$(B)/client/be_ai_weap.o \
1189
$(B)/client/be_ai_weight.o \
1190
$(B)/client/be_ea.o \
1191
$(B)/client/be_interface.o \
1192
$(B)/client/l_crc.o \
1193
$(B)/client/l_libvar.o \
1194
$(B)/client/l_log.o \
1195
$(B)/client/l_memory.o \
1196
$(B)/client/l_precomp.o \
1197
$(B)/client/l_script.o \
1198
$(B)/client/l_struct.o \
1200
$(B)/client/jcapimin.o \
1201
$(B)/client/jcapistd.o \
1202
$(B)/client/jchuff.o \
1203
$(B)/client/jcinit.o \
1204
$(B)/client/jccoefct.o \
1205
$(B)/client/jccolor.o \
1206
$(B)/client/jfdctflt.o \
1207
$(B)/client/jcdctmgr.o \
1208
$(B)/client/jcphuff.o \
1209
$(B)/client/jcmainct.o \
1210
$(B)/client/jcmarker.o \
1211
$(B)/client/jcmaster.o \
1212
$(B)/client/jcomapi.o \
1213
$(B)/client/jcparam.o \
1214
$(B)/client/jcprepct.o \
1215
$(B)/client/jcsample.o \
1216
$(B)/client/jdapimin.o \
1217
$(B)/client/jdapistd.o \
1218
$(B)/client/jdatasrc.o \
1219
$(B)/client/jdcoefct.o \
1220
$(B)/client/jdcolor.o \
1221
$(B)/client/jddctmgr.o \
1222
$(B)/client/jdhuff.o \
1223
$(B)/client/jdinput.o \
1224
$(B)/client/jdmainct.o \
1225
$(B)/client/jdmarker.o \
1226
$(B)/client/jdmaster.o \
1227
$(B)/client/jdpostct.o \
1228
$(B)/client/jdsample.o \
1229
$(B)/client/jdtrans.o \
1230
$(B)/client/jerror.o \
1231
$(B)/client/jidctflt.o \
1232
$(B)/client/jmemmgr.o \
1233
$(B)/client/jmemnobs.o \
1234
$(B)/client/jutils.o \
1236
$(B)/client/tr_animation.o \
1237
$(B)/client/tr_backend.o \
1238
$(B)/client/tr_bsp.o \
1239
$(B)/client/tr_cmds.o \
1240
$(B)/client/tr_curve.o \
1241
$(B)/client/tr_flares.o \
1242
$(B)/client/tr_font.o \
1243
$(B)/client/tr_image.o \
1244
$(B)/client/tr_image_png.o \
1245
$(B)/client/tr_image_jpg.o \
1246
$(B)/client/tr_image_bmp.o \
1247
$(B)/client/tr_image_tga.o \
1248
$(B)/client/tr_image_pcx.o \
1249
$(B)/client/tr_init.o \
1250
$(B)/client/tr_light.o \
1251
$(B)/client/tr_main.o \
1252
$(B)/client/tr_marks.o \
1253
$(B)/client/tr_mesh.o \
1254
$(B)/client/tr_model.o \
1255
$(B)/client/tr_noise.o \
1256
$(B)/client/tr_scene.o \
1257
$(B)/client/tr_shade.o \
1258
$(B)/client/tr_shade_calc.o \
1259
$(B)/client/tr_shader.o \
1260
$(B)/client/tr_shadows.o \
1261
$(B)/client/tr_sky.o \
1262
$(B)/client/tr_surface.o \
1263
$(B)/client/tr_world.o \
1265
$(B)/client/sdl_gamma.o \
1266
$(B)/client/sdl_input.o \
1267
$(B)/client/sdl_snd.o \
1269
$(B)/client/con_passive.o \
1270
$(B)/client/con_log.o \
1271
$(B)/client/sys_main.o
1275
$(B)/client/snd_mixa.o \
1276
$(B)/client/matha.o \
1277
$(B)/client/ftola.o \
1278
$(B)/client/snapvectora.o
1282
$(B)/client/snd_mixa.o \
1283
$(B)/client/matha.o \
1284
$(B)/client/ftola.o \
1285
$(B)/client/snapvectora.o
1288
ifeq ($(HAVE_VM_COMPILED),true)
1290
Q3OBJ += $(B)/client/vm_x86.o
1293
Q3OBJ += $(B)/client/vm_x86.o
1295
ifeq ($(ARCH),x86_64)
1296
Q3OBJ += $(B)/client/vm_x86_64.o $(B)/client/vm_x86_64_assembler.o
1299
Q3OBJ += $(B)/client/vm_ppc.o
1303
ifeq ($(PLATFORM),mingw32)
1305
$(B)/client/win_resource.o \
1306
$(B)/client/sys_win32.o
1309
$(B)/client/sys_unix.o
1313
$(B)/client/sdl_glimp.o
1316
$(B)/clientsmp/sdl_glimp.o
1318
$(B)/ioquake3.$(ARCH)$(BINEXT): $(Q3OBJ) $(Q3POBJ) $(LIBSDLMAIN)
1320
$(Q)$(CC) -o $@ $(Q3OBJ) $(Q3POBJ) $(CLIENT_LDFLAGS) \
1321
$(LDFLAGS) $(LIBSDLMAIN)
1323
$(B)/ioquake3-smp.$(ARCH)$(BINEXT): $(Q3OBJ) $(Q3POBJ_SMP) $(LIBSDLMAIN)
1325
$(Q)$(CC) -o $@ $(Q3OBJ) $(Q3POBJ_SMP) $(CLIENT_LDFLAGS) \
1326
$(THREAD_LDFLAGS) $(LDFLAGS) $(LIBSDLMAIN)
1328
ifneq ($(strip $(LIBSDLMAIN)),)
1329
ifneq ($(strip $(LIBSDLMAINSRC)),)
1330
$(LIBSDLMAIN) : $(LIBSDLMAINSRC)
1338
#############################################################################
1340
#############################################################################
1344
$(B)/ded/sv_client.o \
1345
$(B)/ded/sv_ccmds.o \
1346
$(B)/ded/sv_game.o \
1347
$(B)/ded/sv_init.o \
1348
$(B)/ded/sv_main.o \
1349
$(B)/ded/sv_net_chan.o \
1350
$(B)/ded/sv_snapshot.o \
1351
$(B)/ded/sv_world.o \
1353
$(B)/ded/cm_load.o \
1354
$(B)/ded/cm_patch.o \
1355
$(B)/ded/cm_polylib.o \
1356
$(B)/ded/cm_test.o \
1357
$(B)/ded/cm_trace.o \
1364
$(B)/ded/net_chan.o \
1366
$(B)/ded/huffman.o \
1369
$(B)/ded/q_shared.o \
1373
$(B)/ded/vm_interpreted.o \
1375
$(B)/ded/be_aas_bspq3.o \
1376
$(B)/ded/be_aas_cluster.o \
1377
$(B)/ded/be_aas_debug.o \
1378
$(B)/ded/be_aas_entity.o \
1379
$(B)/ded/be_aas_file.o \
1380
$(B)/ded/be_aas_main.o \
1381
$(B)/ded/be_aas_move.o \
1382
$(B)/ded/be_aas_optimize.o \
1383
$(B)/ded/be_aas_reach.o \
1384
$(B)/ded/be_aas_route.o \
1385
$(B)/ded/be_aas_routealt.o \
1386
$(B)/ded/be_aas_sample.o \
1387
$(B)/ded/be_ai_char.o \
1388
$(B)/ded/be_ai_chat.o \
1389
$(B)/ded/be_ai_gen.o \
1390
$(B)/ded/be_ai_goal.o \
1391
$(B)/ded/be_ai_move.o \
1392
$(B)/ded/be_ai_weap.o \
1393
$(B)/ded/be_ai_weight.o \
1395
$(B)/ded/be_interface.o \
1397
$(B)/ded/l_libvar.o \
1399
$(B)/ded/l_memory.o \
1400
$(B)/ded/l_precomp.o \
1401
$(B)/ded/l_script.o \
1402
$(B)/ded/l_struct.o \
1404
$(B)/ded/null_client.o \
1405
$(B)/ded/null_input.o \
1406
$(B)/ded/null_snddma.o \
1408
$(B)/ded/con_log.o \
1414
$(B)/ded/snapvectora.o \
1420
$(B)/ded/snapvectora.o \
1424
ifeq ($(HAVE_VM_COMPILED),true)
1426
Q3DOBJ += $(B)/ded/vm_x86.o
1429
Q3DOBJ += $(B)/ded/vm_x86.o
1431
ifeq ($(ARCH),x86_64)
1432
Q3DOBJ += $(B)/ded/vm_x86_64.o $(B)/client/vm_x86_64_assembler.o
1435
Q3DOBJ += $(B)/ded/vm_ppc.o
1439
ifeq ($(PLATFORM),mingw32)
1441
$(B)/ded/win_resource.o \
1442
$(B)/ded/sys_win32.o \
1443
$(B)/ded/con_win32.o
1446
$(B)/ded/sys_unix.o \
1450
$(B)/ioq3ded.$(ARCH)$(BINEXT): $(Q3DOBJ)
1452
$(Q)$(CC) -o $@ $(Q3DOBJ) $(LDFLAGS)
1456
#############################################################################
1458
#############################################################################
1461
$(B)/baseq3/cgame/cg_main.o \
1462
$(B)/baseq3/cgame/bg_misc.o \
1463
$(B)/baseq3/cgame/bg_pmove.o \
1464
$(B)/baseq3/cgame/bg_slidemove.o \
1465
$(B)/baseq3/cgame/bg_lib.o \
1466
$(B)/baseq3/cgame/cg_consolecmds.o \
1467
$(B)/baseq3/cgame/cg_draw.o \
1468
$(B)/baseq3/cgame/cg_drawtools.o \
1469
$(B)/baseq3/cgame/cg_effects.o \
1470
$(B)/baseq3/cgame/cg_ents.o \
1471
$(B)/baseq3/cgame/cg_event.o \
1472
$(B)/baseq3/cgame/cg_info.o \
1473
$(B)/baseq3/cgame/cg_localents.o \
1474
$(B)/baseq3/cgame/cg_marks.o \
1475
$(B)/baseq3/cgame/cg_players.o \
1476
$(B)/baseq3/cgame/cg_playerstate.o \
1477
$(B)/baseq3/cgame/cg_predict.o \
1478
$(B)/baseq3/cgame/cg_scoreboard.o \
1479
$(B)/baseq3/cgame/cg_servercmds.o \
1480
$(B)/baseq3/cgame/cg_snapshot.o \
1481
$(B)/baseq3/cgame/cg_view.o \
1482
$(B)/baseq3/cgame/cg_weapons.o \
1484
$(B)/baseq3/qcommon/q_math.o \
1485
$(B)/baseq3/qcommon/q_shared.o
1487
Q3CGOBJ = $(Q3CGOBJ_) $(B)/baseq3/cgame/cg_syscalls.o
1488
Q3CGVMOBJ = $(Q3CGOBJ_:%.o=%.asm)
1490
$(B)/baseq3/cgame$(ARCH).$(SHLIBEXT): $(Q3CGOBJ)
1492
$(Q)$(CC) $(SHLIBLDFLAGS) -o $@ $(Q3CGOBJ)
1494
$(B)/baseq3/vm/cgame.qvm: $(Q3CGVMOBJ) $(CGDIR)/cg_syscalls.asm $(Q3ASM)
1495
$(echo_cmd) "Q3ASM $@"
1496
$(Q)$(Q3ASM) -o $@ $(Q3CGVMOBJ) $(CGDIR)/cg_syscalls.asm
1498
#############################################################################
1499
## MISSIONPACK CGAME
1500
#############################################################################
1503
$(B)/missionpack/cgame/cg_main.o \
1504
$(B)/missionpack/cgame/bg_misc.o \
1505
$(B)/missionpack/cgame/bg_pmove.o \
1506
$(B)/missionpack/cgame/bg_slidemove.o \
1507
$(B)/missionpack/cgame/bg_lib.o \
1508
$(B)/missionpack/cgame/cg_consolecmds.o \
1509
$(B)/missionpack/cgame/cg_newdraw.o \
1510
$(B)/missionpack/cgame/cg_draw.o \
1511
$(B)/missionpack/cgame/cg_drawtools.o \
1512
$(B)/missionpack/cgame/cg_effects.o \
1513
$(B)/missionpack/cgame/cg_ents.o \
1514
$(B)/missionpack/cgame/cg_event.o \
1515
$(B)/missionpack/cgame/cg_info.o \
1516
$(B)/missionpack/cgame/cg_localents.o \
1517
$(B)/missionpack/cgame/cg_marks.o \
1518
$(B)/missionpack/cgame/cg_players.o \
1519
$(B)/missionpack/cgame/cg_playerstate.o \
1520
$(B)/missionpack/cgame/cg_predict.o \
1521
$(B)/missionpack/cgame/cg_scoreboard.o \
1522
$(B)/missionpack/cgame/cg_servercmds.o \
1523
$(B)/missionpack/cgame/cg_snapshot.o \
1524
$(B)/missionpack/cgame/cg_view.o \
1525
$(B)/missionpack/cgame/cg_weapons.o \
1526
$(B)/missionpack/ui/ui_shared.o \
1528
$(B)/missionpack/qcommon/q_math.o \
1529
$(B)/missionpack/qcommon/q_shared.o
1531
MPCGOBJ = $(MPCGOBJ_) $(B)/missionpack/cgame/cg_syscalls.o
1532
MPCGVMOBJ = $(MPCGOBJ_:%.o=%.asm)
1534
$(B)/missionpack/cgame$(ARCH).$(SHLIBEXT): $(MPCGOBJ)
1536
$(Q)$(CC) $(SHLIBLDFLAGS) -o $@ $(MPCGOBJ)
1538
$(B)/missionpack/vm/cgame.qvm: $(MPCGVMOBJ) $(CGDIR)/cg_syscalls.asm $(Q3ASM)
1539
$(echo_cmd) "Q3ASM $@"
1540
$(Q)$(Q3ASM) -o $@ $(MPCGVMOBJ) $(CGDIR)/cg_syscalls.asm
1544
#############################################################################
1546
#############################################################################
1549
$(B)/baseq3/game/g_main.o \
1550
$(B)/baseq3/game/ai_chat.o \
1551
$(B)/baseq3/game/ai_cmd.o \
1552
$(B)/baseq3/game/ai_dmnet.o \
1553
$(B)/baseq3/game/ai_dmq3.o \
1554
$(B)/baseq3/game/ai_main.o \
1555
$(B)/baseq3/game/ai_team.o \
1556
$(B)/baseq3/game/ai_vcmd.o \
1557
$(B)/baseq3/game/bg_misc.o \
1558
$(B)/baseq3/game/bg_pmove.o \
1559
$(B)/baseq3/game/bg_slidemove.o \
1560
$(B)/baseq3/game/bg_lib.o \
1561
$(B)/baseq3/game/g_active.o \
1562
$(B)/baseq3/game/g_arenas.o \
1563
$(B)/baseq3/game/g_bot.o \
1564
$(B)/baseq3/game/g_client.o \
1565
$(B)/baseq3/game/g_cmds.o \
1566
$(B)/baseq3/game/g_combat.o \
1567
$(B)/baseq3/game/g_items.o \
1568
$(B)/baseq3/game/g_mem.o \
1569
$(B)/baseq3/game/g_misc.o \
1570
$(B)/baseq3/game/g_missile.o \
1571
$(B)/baseq3/game/g_mover.o \
1572
$(B)/baseq3/game/g_session.o \
1573
$(B)/baseq3/game/g_spawn.o \
1574
$(B)/baseq3/game/g_svcmds.o \
1575
$(B)/baseq3/game/g_target.o \
1576
$(B)/baseq3/game/g_team.o \
1577
$(B)/baseq3/game/g_trigger.o \
1578
$(B)/baseq3/game/g_utils.o \
1579
$(B)/baseq3/game/g_weapon.o \
1581
$(B)/baseq3/qcommon/q_math.o \
1582
$(B)/baseq3/qcommon/q_shared.o
1584
Q3GOBJ = $(Q3GOBJ_) $(B)/baseq3/game/g_syscalls.o
1585
Q3GVMOBJ = $(Q3GOBJ_:%.o=%.asm)
1587
$(B)/baseq3/qagame$(ARCH).$(SHLIBEXT): $(Q3GOBJ)
1589
$(Q)$(CC) $(SHLIBLDFLAGS) -o $@ $(Q3GOBJ)
1591
$(B)/baseq3/vm/qagame.qvm: $(Q3GVMOBJ) $(GDIR)/g_syscalls.asm $(Q3ASM)
1592
$(echo_cmd) "Q3ASM $@"
1593
$(Q)$(Q3ASM) -o $@ $(Q3GVMOBJ) $(GDIR)/g_syscalls.asm
1595
#############################################################################
1597
#############################################################################
1600
$(B)/missionpack/game/g_main.o \
1601
$(B)/missionpack/game/ai_chat.o \
1602
$(B)/missionpack/game/ai_cmd.o \
1603
$(B)/missionpack/game/ai_dmnet.o \
1604
$(B)/missionpack/game/ai_dmq3.o \
1605
$(B)/missionpack/game/ai_main.o \
1606
$(B)/missionpack/game/ai_team.o \
1607
$(B)/missionpack/game/ai_vcmd.o \
1608
$(B)/missionpack/game/bg_misc.o \
1609
$(B)/missionpack/game/bg_pmove.o \
1610
$(B)/missionpack/game/bg_slidemove.o \
1611
$(B)/missionpack/game/bg_lib.o \
1612
$(B)/missionpack/game/g_active.o \
1613
$(B)/missionpack/game/g_arenas.o \
1614
$(B)/missionpack/game/g_bot.o \
1615
$(B)/missionpack/game/g_client.o \
1616
$(B)/missionpack/game/g_cmds.o \
1617
$(B)/missionpack/game/g_combat.o \
1618
$(B)/missionpack/game/g_items.o \
1619
$(B)/missionpack/game/g_mem.o \
1620
$(B)/missionpack/game/g_misc.o \
1621
$(B)/missionpack/game/g_missile.o \
1622
$(B)/missionpack/game/g_mover.o \
1623
$(B)/missionpack/game/g_session.o \
1624
$(B)/missionpack/game/g_spawn.o \
1625
$(B)/missionpack/game/g_svcmds.o \
1626
$(B)/missionpack/game/g_target.o \
1627
$(B)/missionpack/game/g_team.o \
1628
$(B)/missionpack/game/g_trigger.o \
1629
$(B)/missionpack/game/g_utils.o \
1630
$(B)/missionpack/game/g_weapon.o \
1632
$(B)/missionpack/qcommon/q_math.o \
1633
$(B)/missionpack/qcommon/q_shared.o
1635
MPGOBJ = $(MPGOBJ_) $(B)/missionpack/game/g_syscalls.o
1636
MPGVMOBJ = $(MPGOBJ_:%.o=%.asm)
1638
$(B)/missionpack/qagame$(ARCH).$(SHLIBEXT): $(MPGOBJ)
1640
$(Q)$(CC) $(SHLIBLDFLAGS) -o $@ $(MPGOBJ)
1642
$(B)/missionpack/vm/qagame.qvm: $(MPGVMOBJ) $(GDIR)/g_syscalls.asm $(Q3ASM)
1643
$(echo_cmd) "Q3ASM $@"
1644
$(Q)$(Q3ASM) -o $@ $(MPGVMOBJ) $(GDIR)/g_syscalls.asm
1648
#############################################################################
1650
#############################################################################
1653
$(B)/baseq3/ui/ui_main.o \
1654
$(B)/baseq3/ui/bg_misc.o \
1655
$(B)/baseq3/ui/bg_lib.o \
1656
$(B)/baseq3/ui/ui_addbots.o \
1657
$(B)/baseq3/ui/ui_atoms.o \
1658
$(B)/baseq3/ui/ui_cdkey.o \
1659
$(B)/baseq3/ui/ui_cinematics.o \
1660
$(B)/baseq3/ui/ui_confirm.o \
1661
$(B)/baseq3/ui/ui_connect.o \
1662
$(B)/baseq3/ui/ui_controls2.o \
1663
$(B)/baseq3/ui/ui_credits.o \
1664
$(B)/baseq3/ui/ui_demo2.o \
1665
$(B)/baseq3/ui/ui_display.o \
1666
$(B)/baseq3/ui/ui_gameinfo.o \
1667
$(B)/baseq3/ui/ui_ingame.o \
1668
$(B)/baseq3/ui/ui_loadconfig.o \
1669
$(B)/baseq3/ui/ui_menu.o \
1670
$(B)/baseq3/ui/ui_mfield.o \
1671
$(B)/baseq3/ui/ui_mods.o \
1672
$(B)/baseq3/ui/ui_network.o \
1673
$(B)/baseq3/ui/ui_options.o \
1674
$(B)/baseq3/ui/ui_playermodel.o \
1675
$(B)/baseq3/ui/ui_players.o \
1676
$(B)/baseq3/ui/ui_playersettings.o \
1677
$(B)/baseq3/ui/ui_preferences.o \
1678
$(B)/baseq3/ui/ui_qmenu.o \
1679
$(B)/baseq3/ui/ui_removebots.o \
1680
$(B)/baseq3/ui/ui_saveconfig.o \
1681
$(B)/baseq3/ui/ui_serverinfo.o \
1682
$(B)/baseq3/ui/ui_servers2.o \
1683
$(B)/baseq3/ui/ui_setup.o \
1684
$(B)/baseq3/ui/ui_sound.o \
1685
$(B)/baseq3/ui/ui_sparena.o \
1686
$(B)/baseq3/ui/ui_specifyserver.o \
1687
$(B)/baseq3/ui/ui_splevel.o \
1688
$(B)/baseq3/ui/ui_sppostgame.o \
1689
$(B)/baseq3/ui/ui_spskill.o \
1690
$(B)/baseq3/ui/ui_startserver.o \
1691
$(B)/baseq3/ui/ui_team.o \
1692
$(B)/baseq3/ui/ui_teamorders.o \
1693
$(B)/baseq3/ui/ui_video.o \
1695
$(B)/baseq3/qcommon/q_math.o \
1696
$(B)/baseq3/qcommon/q_shared.o
1698
Q3UIOBJ = $(Q3UIOBJ_) $(B)/missionpack/ui/ui_syscalls.o
1699
Q3UIVMOBJ = $(Q3UIOBJ_:%.o=%.asm)
1701
$(B)/baseq3/ui$(ARCH).$(SHLIBEXT): $(Q3UIOBJ)
1703
$(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3UIOBJ)
1705
$(B)/baseq3/vm/ui.qvm: $(Q3UIVMOBJ) $(UIDIR)/ui_syscalls.asm $(Q3ASM)
1706
$(echo_cmd) "Q3ASM $@"
1707
$(Q)$(Q3ASM) -o $@ $(Q3UIVMOBJ) $(UIDIR)/ui_syscalls.asm
1709
#############################################################################
1711
#############################################################################
1714
$(B)/missionpack/ui/ui_main.o \
1715
$(B)/missionpack/ui/ui_atoms.o \
1716
$(B)/missionpack/ui/ui_gameinfo.o \
1717
$(B)/missionpack/ui/ui_players.o \
1718
$(B)/missionpack/ui/ui_shared.o \
1720
$(B)/missionpack/ui/bg_misc.o \
1721
$(B)/missionpack/ui/bg_lib.o \
1723
$(B)/missionpack/qcommon/q_math.o \
1724
$(B)/missionpack/qcommon/q_shared.o
1726
MPUIOBJ = $(MPUIOBJ_) $(B)/missionpack/ui/ui_syscalls.o
1727
MPUIVMOBJ = $(MPUIOBJ_:%.o=%.asm)
1729
$(B)/missionpack/ui$(ARCH).$(SHLIBEXT): $(MPUIOBJ)
1731
$(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(MPUIOBJ)
1733
$(B)/missionpack/vm/ui.qvm: $(MPUIVMOBJ) $(UIDIR)/ui_syscalls.asm $(Q3ASM)
1734
$(echo_cmd) "Q3ASM $@"
1735
$(Q)$(Q3ASM) -o $@ $(MPUIVMOBJ) $(UIDIR)/ui_syscalls.asm
1739
#############################################################################
1740
## CLIENT/SERVER RULES
1741
#############################################################################
1743
$(B)/client/%.o: $(ASMDIR)/%.s
1746
$(B)/client/%.o: $(CDIR)/%.c
1749
$(B)/client/%.o: $(SDIR)/%.c
1752
$(B)/client/%.o: $(CMDIR)/%.c
1755
$(B)/client/%.o: $(BLIBDIR)/%.c
1758
$(B)/client/%.o: $(JPDIR)/%.c
1761
$(B)/client/%.o: $(RDIR)/%.c
1764
$(B)/client/%.o: $(SDLDIR)/%.c
1767
$(B)/clientsmp/%.o: $(SDLDIR)/%.c
1770
$(B)/client/%.o: $(SYSDIR)/%.c
1773
$(B)/client/%.o: $(SYSDIR)/%.rc
1777
$(B)/ded/%.o: $(ASMDIR)/%.s
1780
$(B)/ded/%.o: $(SDIR)/%.c
1783
$(B)/ded/%.o: $(CMDIR)/%.c
1786
$(B)/ded/%.o: $(BLIBDIR)/%.c
1789
$(B)/ded/%.o: $(SYSDIR)/%.c
1792
$(B)/ded/%.o: $(SYSDIR)/%.rc
1795
$(B)/ded/%.o: $(NDIR)/%.c
1798
# Extra dependencies to ensure the SVN version is incorporated
1800
$(B)/client/cl_console.o : .svn/entries
1801
$(B)/client/common.o : .svn/entries
1802
$(B)/ded/common.o : .svn/entries
1806
#############################################################################
1807
## GAME MODULE RULES
1808
#############################################################################
1810
$(B)/baseq3/cgame/bg_%.o: $(GDIR)/bg_%.c
1813
$(B)/baseq3/cgame/%.o: $(CGDIR)/%.c
1816
$(B)/baseq3/cgame/bg_%.asm: $(GDIR)/bg_%.c $(Q3LCC)
1819
$(B)/baseq3/cgame/%.asm: $(CGDIR)/%.c $(Q3LCC)
1822
$(B)/missionpack/cgame/bg_%.o: $(GDIR)/bg_%.c
1823
$(DO_CGAME_CC_MISSIONPACK)
1825
$(B)/missionpack/cgame/%.o: $(CGDIR)/%.c
1826
$(DO_CGAME_CC_MISSIONPACK)
1828
$(B)/missionpack/cgame/bg_%.asm: $(GDIR)/bg_%.c $(Q3LCC)
1829
$(DO_CGAME_Q3LCC_MISSIONPACK)
1831
$(B)/missionpack/cgame/%.asm: $(CGDIR)/%.c $(Q3LCC)
1832
$(DO_CGAME_Q3LCC_MISSIONPACK)
1835
$(B)/baseq3/game/%.o: $(GDIR)/%.c
1838
$(B)/baseq3/game/%.asm: $(GDIR)/%.c $(Q3LCC)
1841
$(B)/missionpack/game/%.o: $(GDIR)/%.c
1842
$(DO_GAME_CC_MISSIONPACK)
1844
$(B)/missionpack/game/%.asm: $(GDIR)/%.c $(Q3LCC)
1845
$(DO_GAME_Q3LCC_MISSIONPACK)
1848
$(B)/baseq3/ui/bg_%.o: $(GDIR)/bg_%.c
1851
$(B)/baseq3/ui/%.o: $(Q3UIDIR)/%.c
1854
$(B)/baseq3/ui/bg_%.asm: $(GDIR)/bg_%.c $(Q3LCC)
1857
$(B)/baseq3/ui/%.asm: $(Q3UIDIR)/%.c $(Q3LCC)
1860
$(B)/missionpack/ui/bg_%.o: $(GDIR)/bg_%.c
1861
$(DO_UI_CC_MISSIONPACK)
1863
$(B)/missionpack/ui/%.o: $(UIDIR)/%.c
1864
$(DO_UI_CC_MISSIONPACK)
1866
$(B)/missionpack/ui/bg_%.asm: $(GDIR)/bg_%.c $(Q3LCC)
1867
$(DO_UI_Q3LCC_MISSIONPACK)
1869
$(B)/missionpack/ui/%.asm: $(UIDIR)/%.c $(Q3LCC)
1870
$(DO_UI_Q3LCC_MISSIONPACK)
1873
$(B)/baseq3/qcommon/%.o: $(CMDIR)/%.c
1876
$(B)/baseq3/qcommon/%.asm: $(CMDIR)/%.c $(Q3LCC)
1879
$(B)/missionpack/qcommon/%.o: $(CMDIR)/%.c
1880
$(DO_SHLIB_CC_MISSIONPACK)
1882
$(B)/missionpack/qcommon/%.asm: $(CMDIR)/%.c $(Q3LCC)
1883
$(DO_Q3LCC_MISSIONPACK)
1886
#############################################################################
1888
#############################################################################
1890
OBJ = $(Q3OBJ) $(Q3POBJ) $(Q3POBJ_SMP) $(Q3DOBJ) \
1891
$(MPGOBJ) $(Q3GOBJ) $(Q3CGOBJ) $(MPCGOBJ) $(Q3UIOBJ) $(MPUIOBJ) \
1892
$(MPGVMOBJ) $(Q3GVMOBJ) $(Q3CGVMOBJ) $(MPCGVMOBJ) $(Q3UIVMOBJ) $(MPUIVMOBJ)
1893
TOOLSOBJ = $(LBURGOBJ) $(Q3CPPOBJ) $(Q3RCCOBJ) $(Q3LCCOBJ) $(Q3ASMOBJ)
1897
@if [ ! -d $(COPYDIR)/baseq3 ]; then echo "You need to set COPYDIR to where your Quake3 data is!"; fi
1898
-$(MKDIR) -p -m 0755 $(COPYDIR)/baseq3
1899
-$(MKDIR) -p -m 0755 $(COPYDIR)/missionpack
1901
ifneq ($(BUILD_CLIENT),0)
1902
$(INSTALL) -s -m 0755 $(BR)/ioquake3.$(ARCH)$(BINEXT) $(COPYDIR)/ioquake3.$(ARCH)$(BINEXT)
1905
# Don't copy the SMP until it's working together with SDL.
1906
#ifneq ($(BUILD_CLIENT_SMP),0)
1907
# $(INSTALL) -s -m 0755 $(BR)/ioquake3-smp.$(ARCH)$(BINEXT) $(COPYDIR)/ioquake3-smp.$(ARCH)$(BINEXT)
1910
ifneq ($(BUILD_SERVER),0)
1911
@if [ -f $(BR)/ioq3ded.$(ARCH)$(BINEXT) ]; then \
1912
$(INSTALL) -s -m 0755 $(BR)/ioq3ded.$(ARCH)$(BINEXT) $(COPYDIR)/ioq3ded.$(ARCH)$(BINEXT); \
1916
ifneq ($(BUILD_GAME_SO),0)
1917
$(INSTALL) -s -m 0755 $(BR)/baseq3/cgame$(ARCH).$(SHLIBEXT) \
1919
$(INSTALL) -s -m 0755 $(BR)/baseq3/qagame$(ARCH).$(SHLIBEXT) \
1921
$(INSTALL) -s -m 0755 $(BR)/baseq3/ui$(ARCH).$(SHLIBEXT) \
1923
-$(MKDIR) -p -m 0755 $(COPYDIR)/missionpack
1924
$(INSTALL) -s -m 0755 $(BR)/missionpack/cgame$(ARCH).$(SHLIBEXT) \
1925
$(COPYDIR)/missionpack/.
1926
$(INSTALL) -s -m 0755 $(BR)/missionpack/qagame$(ARCH).$(SHLIBEXT) \
1927
$(COPYDIR)/missionpack/.
1928
$(INSTALL) -s -m 0755 $(BR)/missionpack/ui$(ARCH).$(SHLIBEXT) \
1929
$(COPYDIR)/missionpack/.
1932
clean: clean-debug clean-release
1933
@$(MAKE) -C $(LOKISETUPDIR) clean
1936
@$(MAKE) clean2 B=$(BD)
1939
@$(MAKE) clean2 B=$(BR)
1944
@rm -f $(OBJ_D_FILES)
1947
toolsclean: toolsclean-debug toolsclean-release
1950
@$(MAKE) toolsclean2 B=$(BD)
1953
@$(MAKE) toolsclean2 B=$(BR)
1956
@echo "TOOLS_CLEAN $(B)"
1958
@rm -f $(TOOLSOBJ_D_FILES)
1959
@rm -f $(LBURG) $(DAGCHECK_C) $(Q3RCC) $(Q3CPP) $(Q3LCC) $(Q3ASM)
1961
distclean: clean toolsclean
1962
@rm -rf $(BUILD_DIR)
1965
@$(MAKE) VERSION=$(VERSION) -C $(LOKISETUPDIR) V=$(V)
1968
rm -rf ioquake3-$(SVN_VERSION)
1969
svn export . ioquake3-$(SVN_VERSION)
1970
tar --owner=root --group=root --force-local -cjf ioquake3-$(SVN_VERSION).tar.bz2 ioquake3-$(SVN_VERSION)
1971
rm -rf ioquake3-$(SVN_VERSION)
1973
#############################################################################
1975
#############################################################################
1977
OBJ_D_FILES=$(filter %.d,$(OBJ:%.o=%.d))
1978
TOOLSOBJ_D_FILES=$(filter %.d,$(TOOLSOBJ:%.o=%.d))
1979
-include $(OBJ_D_FILES) $(TOOLSOBJ_D_FILES)
1981
.PHONY: all clean clean2 clean-debug clean-release copyfiles \
1982
debug default dist distclean installer makedirs \
1984
toolsclean toolsclean2 toolsclean-debug toolsclean-release