1# 2# Tremulous Makefile 3# 4# Nov '98 by Zoid <zoid@idsoftware.com> 5# 6# Loki Hacking by Bernd Kreimeier 7# and a little more by Ryan C. Gordon. 8# and a little more by Rafael Barrero 9# and a little more by the ioq3 cr3w 10# and a little more by Tim Angus 11# 12# GNU Make required 13# 14 15COMPILE_PLATFORM=$(shell uname|sed -e s/_.*//|tr A-Z a-z) 16 17ifeq ($(COMPILE_PLATFORM),darwin) 18 # Apple does some things a little differently... 19 COMPILE_ARCH=$(shell uname -p | sed -e s/i.86/x86/) 20else 21 COMPILE_ARCH=$(shell uname -m | sed -e s/i.86/x86/) 22endif 23 24ifeq ($(COMPILE_PLATFORM),mingw32) 25 ifeq ($(COMPILE_ARCH),i386) 26 COMPILE_ARCH=x86 27 endif 28endif 29 30BUILD_CLIENT?=0 31BUILD_CLIENT_SMP?=0 32BUILD_GAME_QVM?=0 33BUILD_GAME_SO?=0 34BUILD_MASTER_SERVER?=0 35BUILD_SERVER?=0 36HAVE_VM_COMPILED?=false 37USE_CODEC_VORBIS?=0 38USE_LOCAL_HEADERS?=0 39USE_OPENAL?=0 40USE_OPENAL_DLOPEN?=0 41USE_OPTIMIZED_CFLAGS?=0 42USE_SDL_AUDIO?=0 43USE_SDL_VIDEO?=0 44 45############################################################################# 46# 47# If you require a different configuration from the defaults below, create a 48# new file named "Makefile.local" in the same directory as this file and define 49# your parameters there. This allows you to change configuration without 50# causing problems with keeping up to date with the repository. 51# 52############################################################################# 53-include Makefile.local 54 55ifndef PLATFORM 56PLATFORM=$(COMPILE_PLATFORM) 57endif 58export PLATFORM 59 60ifndef ARCH 61ARCH=$(COMPILE_ARCH) 62endif 63 64ifeq ($(ARCH),powerpc) 65 ARCH=ppc 66endif 67export ARCH 68 69ifneq ($(PLATFORM),$(COMPILE_PLATFORM)) 70 CROSS_COMPILING=1 71else 72 CROSS_COMPILING=0 73 74 ifneq ($(ARCH),$(COMPILE_ARCH)) 75 CROSS_COMPILING=1 76 endif 77endif 78export CROSS_COMPILING 79 80ifndef COPYDIR 81COPYDIR="/usr/local/games/tremulous" 82endif 83 84ifndef MOUNT_DIR 85MOUNT_DIR=src 86endif 87 88ifndef BUILD_DIR 89BUILD_DIR=build 90endif 91 92ifndef GENERATE_DEPENDENCIES 93GENERATE_DEPENDENCIES=1 94endif 95 96ifndef USE_CCACHE 97USE_CCACHE=0 98endif 99export USE_CCACHE 100 101############################################################################# 102 103BD=$(BUILD_DIR)/debug-$(PLATFORM)-$(ARCH) 104BR=$(BUILD_DIR)/release 105CDIR=$(MOUNT_DIR)/client 106SDIR=$(MOUNT_DIR)/server 107RDIR=$(MOUNT_DIR)/renderer 108CMDIR=$(MOUNT_DIR)/qcommon 109UDIR=$(MOUNT_DIR)/unix 110W32DIR=$(MOUNT_DIR)/win32 111GDIR=$(MOUNT_DIR)/game 112CGDIR=$(MOUNT_DIR)/cgame 113BLIBDIR=$(MOUNT_DIR)/botlib 114NDIR=$(MOUNT_DIR)/null 115UIDIR=$(MOUNT_DIR)/ui 116JPDIR=$(MOUNT_DIR)/jpeg-6 117TOOLSDIR=$(MOUNT_DIR)/tools 118LOKISETUPDIR=$(UDIR)/setup 119SDLHDIR=$(MOUNT_DIR)/SDL12 120LIBSDIR=$(MOUNT_DIR)/libs 121MASTERDIR=$(MOUNT_DIR)/master 122 123# extract version info 124VERSION=$(shell grep Q3_VERSION $(CMDIR)/q_shared.h | \ 125 sed -e 's/.*tremulous\ \(.*\)"/\1/') 126 127ifeq ($(wildcard .svn),.svn) 128 SVN_VERSION=$(VERSION)_SVN$(shell LANG=C svnversion .) 129else 130 SVN_VERSION=$(VERSION) 131endif 132 133 134############################################################################# 135# SETUP AND BUILD -- LINUX 136############################################################################# 137 138## Defaults 139VM_PPC= 140 141LIB=lib 142 143INSTALL=install 144MKDIR=mkdir 145 146ifeq ($(PLATFORM),linux) 147 148 CC=gcc 149 150 ifeq ($(ARCH),alpha) 151 ARCH=axp 152 else 153 ifeq ($(ARCH),x86_64) 154 LIB=lib64 155 else 156 ifeq ($(ARCH),ppc64) 157 LIB=lib64 158 else 159 ifeq ($(ARCH),s390x) 160 LIB=lib64 161 endif 162 endif 163 endif 164 endif 165 166 BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes -pipe 167 168 ifeq ($(USE_OPENAL),1) 169 BASE_CFLAGS += -DUSE_OPENAL=1 170 ifeq ($(USE_OPENAL_DLOPEN),1) 171 BASE_CFLAGS += -DUSE_OPENAL_DLOPEN=1 172 endif 173 endif 174 175 ifeq ($(USE_CODEC_VORBIS),1) 176 BASE_CFLAGS += -DUSE_CODEC_VORBIS=1 177 endif 178 179 ifeq ($(USE_SDL),1) 180 BASE_CFLAGS += -DUSE_SDL_VIDEO=1 -DUSE_SDL_SOUND=1 $(shell sdl-config --cflags) 181 GL_CFLAGS = 182 else 183 GL_CFLAGS = -I/usr/X11R6/include 184 endif 185 186 OPTIMIZE = -O3 -ffast-math -funroll-loops -fomit-frame-pointer 187 188 ifeq ($(ARCH),x86_64) 189 OPTIMIZE = -O3 -fomit-frame-pointer -ffast-math -funroll-loops \ 190 -falign-functions=2 -fstrength-reduce 191 # experimental x86_64 jit compiler! you need GNU as 192 HAVE_VM_COMPILED = true 193 else 194 ifeq ($(ARCH),x86) 195 OPTIMIZE = -O3 -march=i586 -fomit-frame-pointer -ffast-math \ 196 -funroll-loops -falign-functions=2 -fstrength-reduce 197 HAVE_VM_COMPILED=true 198 else 199 ifeq ($(ARCH),ppc) 200 BASE_CFLAGS += -maltivec 201 ifneq ($(VM_PPC),) 202 HAVE_VM_COMPILED=true 203 endif 204 endif 205 endif 206 endif 207 208 ifneq ($(HAVE_VM_COMPILED),true) 209 BASE_CFLAGS += -DNO_VM_COMPILED 210 endif 211 212 DEBUG_CFLAGS = $(BASE_CFLAGS) -g -O0 213 214 RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG $(OPTIMIZE) 215 216 SHLIBEXT=so 217 SHLIBCFLAGS=-fPIC 218 SHLIBLDFLAGS=-shared $(LDFLAGS) 219 220 THREAD_LDFLAGS=-lpthread 221 LDFLAGS=-ldl -lm 222 223 ifeq ($(USE_SDL),1) 224 CLIENT_LDFLAGS=$(shell sdl-config --libs) 225 else 226 CLIENT_LDFLAGS=-L/usr/X11R6/$(LIB) -lX11 -lXext -lXxf86dga -lXxf86vm 227 endif 228 229 ifeq ($(USE_OPENAL),1) 230 ifneq ($(USE_OPENAL_DLOPEN),1) 231 CLIENT_LDFLAGS += -lopenal 232 endif 233 endif 234 235 ifeq ($(USE_CODEC_VORBIS),1) 236 CLIENT_LDFLAGS += -lvorbisfile -lvorbis -logg 237 endif 238 239 ifeq ($(ARCH),x86) 240 # linux32 make ... 241 BASE_CFLAGS += -m32 242 LDFLAGS+=-m32 243 endif 244 245else # ifeq Linux 246 247############################################################################# 248# SETUP AND BUILD -- MAC OS X 249############################################################################# 250 251ifeq ($(PLATFORM),darwin) 252 CC=gcc 253 254 # !!! FIXME: calling conventions are still broken! See Bugzilla #2519 255 #VM_PPC=vm_ppc_new 256 257 BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes 258 BASE_CFLAGS += -DMACOS_X -fno-common -pipe 259 260 # Always include debug symbols...you can strip the binary later... 261 BASE_CFLAGS += -gfull 262 263 ifeq ($(USE_OPENAL),1) 264 BASE_CFLAGS += -DUSE_OPENAL=1 265 ifeq ($(USE_OPENAL_DLOPEN),1) 266 BASE_CFLAGS += -DUSE_OPENAL_DLOPEN=1 267 endif 268 endif 269 270 ifeq ($(USE_CODEC_VORBIS),1) 271 BASE_CFLAGS += -DUSE_CODEC_VORBIS=1 272 endif 273 274 ifeq ($(USE_SDL),1) 275 BASE_CFLAGS += -DUSE_SDL_VIDEO=1 -DUSE_SDL_SOUND=1 -D_THREAD_SAFE=1 -I$(SDLHDIR)/include 276 GL_CFLAGS = 277 endif 278 279 OPTIMIZE = -O3 -ffast-math 280 281 ifeq ($(ARCH),ppc) 282 BASE_CFLAGS += -faltivec 283 ifneq ($(VM_PPC),) 284 HAVE_VM_COMPILED=true 285 endif 286 endif 287 288 ifeq ($(ARCH),x86) 289 # !!! FIXME: x86-specific flags here... 290 endif 291 292 ifneq ($(HAVE_VM_COMPILED),true) 293 BASE_CFLAGS += -DNO_VM_COMPILED 294 endif 295 296 DEBUG_CFLAGS = $(BASE_CFLAGS) -g -O0 297 298 RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG $(OPTIMIZE) 299 300 SHLIBEXT=dylib 301 SHLIBCFLAGS=-fPIC -fno-common 302 SHLIBLDFLAGS=-dynamiclib $(LDFLAGS) 303 304 NOTSHLIBCFLAGS=-mdynamic-no-pic 305 306 #THREAD_LDFLAGS=-lpthread 307 #LDFLAGS=-ldl -lm 308 LDFLAGS += -framework Carbon 309 310 ifeq ($(USE_SDL),1) 311 # We copy sdlmain before ranlib'ing it so that subversion doesn't think 312 # the file has been modified by each build. 313 LIBSDLMAIN=$(B)/libSDLmain.a 314 LIBSDLMAINSRC=$(LIBSDIR)/macosx/libSDLmain.a 315 CLIENT_LDFLAGS=-framework Cocoa -framework OpenGL $(LIBSDIR)/macosx/libSDL-1.2.0.dylib 316 else 317 # !!! FIXME: frameworks: OpenGL, Carbon, etc... 318 #CLIENT_LDFLAGS=-L/usr/X11R6/$(LIB) -lX11 -lXext -lXxf86dga -lXxf86vm 319 endif 320 321 # -framework OpenAL requires 10.4 or later...for builds shipping to the 322 # public, you'll want to use USE_OPENAL_DLOPEN and ship your own OpenAL 323 # library (http://openal.org/ or http://icculus.org/al_osx/) 324 ifeq ($(USE_OPENAL),1) 325 ifneq ($(USE_OPENAL_DLOPEN),1) 326 CLIENT_LDFLAGS += -framework OpenAL 327 endif 328 endif 329 330 ifeq ($(USE_CODEC_VORBIS),1) 331 CLIENT_LDFLAGS += -lvorbisfile -lvorbis -logg 332 endif 333 334else # ifeq darwin 335 336 337############################################################################# 338# SETUP AND BUILD -- MINGW32 339############################################################################# 340 341ifeq ($(PLATFORM),mingw32) 342 343 CC=gcc 344 WINDRES=windres 345 346 ARCH=x86 347 348 BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes 349 350 ifeq ($(USE_OPENAL),1) 351 BASE_CFLAGS += -DUSE_OPENAL=1 -DUSE_OPENAL_DLOPEN=1 352 endif 353 354 ifeq ($(USE_CODEC_VORBIS),1) 355 BASE_CFLAGS += -DUSE_CODEC_VORBIS=1 356 endif 357 358 GL_CFLAGS = 359 MINGW_CFLAGS = -DDONT_TYPEDEF_INT32 360 361 OPTIMIZE = -O3 -march=i586 -fomit-frame-pointer -ffast-math \ 362 -funroll-loops -falign-functions=2 -fstrength-reduce 363 364 DEBUG_CFLAGS=$(BASE_CFLAGS) -g -O0 365 366 RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG $(OPTIMIZE) 367 368 SHLIBEXT=dll 369 SHLIBCFLAGS= 370 SHLIBLDFLAGS=-shared $(LDFLAGS) 371 372 BINEXT=.exe 373 374 LDFLAGS= -mwindows -lwsock32 -lgdi32 -lwinmm -lole32 375 CLIENT_LDFLAGS= 376 377 ifeq ($(USE_CODEC_VORBIS),1) 378 CLIENT_LDFLAGS += -lvorbisfile -lvorbis -logg 379 endif 380 381 ifeq ($(ARCH),x86) 382 # build 32bit 383 BASE_CFLAGS += -m32 384 LDFLAGS+=-m32 385 endif 386 387 BUILD_SERVER = 0 388 BUILD_CLIENT_SMP = 0 389 390else # ifeq mingw32 391 392############################################################################# 393# SETUP AND BUILD -- FREEBSD 394############################################################################# 395 396ifeq ($(PLATFORM),dragonfly) 397 398 BASE_CFLAGS = -I$(LOCALBASE)/include -DARCH='\"$(ARCH)\"' -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes 399 400 GL_CFLAGS = -I$(LOCALBASE)/include 401 402 DEBUG_CFLAGS=$(BASE_CFLAGS) -g 403 RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG -pipe 404 405 ifeq ($(USE_OPENAL),1) 406 BASE_CFLAGS += -DUSE_OPENAL=1 407 ifeq ($(USE_OPENAL_DLOPEN),1) 408 BASE_CFLAGS += -DUSE_OPENAL_DLOPEN=1 409 endif 410 endif 411 412 ifeq ($(USE_CODEC_VORBIS),1) 413 BASE_CFLAGS += -DUSE_CODEC_VORBIS=1 414 endif 415 416 ifeq ($(USE_SDL_AUDIO),1) 417 BASE_CFLAGS += $(shell $(SDL_CONFIG) --cflags) 418 else 419 ifeq ($(USE_SDL_VIDEO),1) 420 BASE_CFLAGS += $(shell $(SDL_CONFIG) --cflags) 421 endif 422 endif 423 424 ifeq ($(USE_SDL_AUDIO),1) 425 BASE_CFLAGS += -DUSE_SDL_SOUND=1 426 endif 427 428 ifeq ($(USE_SDL_VIDEO),1) 429 BASE_CFLAGS += -DUSE_SDL_VIDEO=1 430 endif 431 432 ifeq ($(USE_OPTIMIZED_CFLAGS),1) 433 RELEASE_CFLAGS+=-O3 -ffast-math -funroll-loops -fomit-frame-pointer \ 434 -fexpensive-optimizations 435 ifeq ($(ARCH),i386) 436 RELEASE_CFLAGS+=-falign-functions=2 -fstrength-reduce 437 endif 438 endif 439 440 HAVE_VM_COMPILED?=false 441 ifneq ($(HAVE_VM_COMPILED),true) 442 BASE_CFLAGS += -DNO_VM_COMPILED 443 endif 444 445 SHLIBEXT=so 446 SHLIBCFLAGS=-fPIC 447 SHLIBLDFLAGS=-shared $(LDFLAGS) 448 449 THREAD_LDFLAGS=$(PTHREAD_LIBS) 450 # don't need -ldl (FreeBSD) 451 LDFLAGS+=-lm 452 453 CLIENT_LDFLAGS = -L$(LOCALBASE)/lib 454 455 ifeq ($(USE_SDL_AUDIO),1) 456 CLIENT_LDFLAGS += $(shell $(SDL_CONFIG) --libs) 457 else 458 ifeq ($(USE_SDL_VIDEO),1) 459 CLIENT_LDFLAGS += $(shell $(SDL_CONFIG) --libs) 460 endif 461 endif 462 463 ifneq ($(USE_SDL_VIDEO),1) 464 CLIENT_LDFLAGS += -L$(LOCALBASE)/lib -lGL -lX11 -lXext -lXxf86dga -lXxf86vm 465 endif 466 467 ifeq ($(USE_OPENAL),1) 468 CLIENT_LDFLAGS += $(THREAD_LDFLAGS) 469 ifneq ($(USE_OPENAL_DLOPEN),1) 470 CLIENT_LDFLAGS += -lopenal 471 endif 472 endif 473 474 ifeq ($(USE_CODEC_VORBIS),1) 475 CLIENT_LDFLAGS += -lvorbisfile -lvorbis -logg 476 endif 477 478 479else # ifeq dragonfly 480 481############################################################################# 482# SETUP AND BUILD -- NETBSD 483############################################################################# 484 485ifeq ($(PLATFORM),netbsd) 486 487 ifeq ($(shell uname -m),i386) 488 ARCH=x86 489 endif 490 491 CC=gcc 492 LDFLAGS=-lm 493 SHLIBEXT=so 494 SHLIBCFLAGS=-fPIC 495 SHLIBLDFLAGS=-shared $(LDFLAGS) 496 THREAD_LDFLAGS=-lpthread 497 498 BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes 499 DEBUG_CFLAGS=$(BASE_CFLAGS) -g 500 501 ifneq ($(ARCH),x86) 502 BASE_CFLAGS += -DNO_VM_COMPILED 503 endif 504 505 BUILD_CLIENT = 0 506 BUILD_GAME_QVM = 0 507 508else # ifeq netbsd 509 510############################################################################# 511# SETUP AND BUILD -- IRIX 512############################################################################# 513 514ifeq ($(PLATFORM),irix) 515 516 ARCH=mips #default to MIPS 517 518 CC=cc 519 BASE_CFLAGS=-Dstricmp=strcasecmp -Xcpluscomm -woff 1185 -mips3 \ 520 -nostdinc -I. -I$(ROOT)/usr/include -DNO_VM_COMPILED 521 RELEASE_CFLAGS=$(BASE_CFLAGS) -O3 522 DEBUG_CFLAGS=$(BASE_CFLAGS) -g 523 524 SHLIBEXT=so 525 SHLIBCFLAGS= 526 SHLIBLDFLAGS=-shared 527 528 LDFLAGS=-ldl -lm 529 CLIENT_LDFLAGS=-L/usr/X11/$(LIB) -lGL -lX11 -lXext -lm 530 531else # ifeq IRIX 532 533############################################################################# 534# SETUP AND BUILD -- SunOS 535############################################################################# 536 537ifeq ($(PLATFORM),SunOS) 538 539 CC=gcc 540 INSTALL=ginstall 541 MKDIR=gmkdir 542 COPYDIR="/usr/local/share/games/tremulous" 543 544 ifneq (,$(findstring i86pc,$(shell uname -m))) 545 ARCH=x86 546 else #default to sparc 547 ARCH=sparc 548 endif 549 550 ifneq ($(ARCH),x86) 551 ifneq ($(ARCH),sparc) 552 $(error arch $(ARCH) is currently not supported) 553 endif 554 endif 555 556 557 BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes -pipe 558 559 ifeq ($(USE_SDL),1) 560 BASE_CFLAGS += -DUSE_SDL_SOUND=1 $(shell sdl-config --cflags) 561 GL_CFLAGS = 562 else 563 GL_CFLAGS = -I/usr/openwin/include 564 endif 565 566 OPTIMIZE = -O3 -ffast-math -funroll-loops 567 568 ifeq ($(ARCH),sparc) 569 OPTIMIZE = -O3 -ffast-math \ 570 -falign-functions=2 -fstrength-reduce \ 571 -mtune=ultrasparc -mv8plus -mno-faster-structs \ 572 -funroll-loops 573 BASE_CFLAGS += -DNO_VM_COMPILED 574 else 575 ifeq ($(ARCH),x86) 576 OPTIMIZE = -O3 -march=i586 -ffast-math \ 577 -falign-functions=2 -funroll-loops -fstrength-reduce 578 endif 579 endif 580 581 DEBUG_CFLAGS = $(BASE_CFLAGS) -ggdb -O0 582 583 RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG $(OPTIMIZE) 584 585 SHLIBEXT=so 586 SHLIBCFLAGS=-fPIC 587 SHLIBLDFLAGS=-shared $(LDFLAGS) 588 589 THREAD_LDFLAGS=-lpthread 590 LDFLAGS=-lsocket -lnsl -ldl -lm 591 592 BOTCFLAGS=-O0 593 594 ifeq ($(USE_SDL),1) 595 CLIENT_LDFLAGS=$(shell sdl-config --libs) -L/usr/X11/lib -lGLU -lX11 -lXext 596 else 597 CLIENT_LDFLAGS=-L/usr/openwin/$(LIB) -L/usr/X11/lib -lGLU -lX11 -lXext 598 endif 599 600 ifeq ($(ARCH),x86) 601 # Solarix x86 make ... 602 BASE_CFLAGS += -m32 603 LDFLAGS+=-m32 604 endif 605 606else # ifeq SunOS 607 608############################################################################# 609# SETUP AND BUILD -- GENERIC 610############################################################################# 611 CC=cc 612 BASE_CFLAGS=-DNO_VM_COMPILED 613 DEBUG_CFLAGS=$(BASE_CFLAGS) -g 614 RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG -O3 615 616 SHLIBEXT=so 617 SHLIBCFLAGS=-fPIC 618 SHLIBLDFLAGS=-shared 619 620endif #Linux 621endif #darwin 622endif #mingw32 623endif #FreeBSD 624endif #NetBSD 625endif #IRIX 626endif #SunOS 627 628TARGETS = 629 630ifneq ($(BUILD_SERVER),0) 631 TARGETS += $(B)/tremded$(BINEXT) 632endif 633 634ifneq ($(BUILD_CLIENT),0) 635 TARGETS += $(B)/tremulous$(BINEXT) 636endif 637 638ifneq ($(BUILD_CLIENT_SMP),0) 639 TARGETS += $(B)/tremulous-smp$(BINEXT) 640endif 641 642ifneq ($(BUILD_GAME_SO),0) 643 TARGETS += \ 644 $(B)/base/cgame.$(SHLIBEXT) \ 645 $(B)/base/game.$(SHLIBEXT) \ 646 $(B)/base/ui.$(SHLIBEXT) 647endif 648 649ifneq ($(BUILD_GAME_QVM),0) 650 ifneq ($(CROSS_COMPILING),1) 651 TARGETS += \ 652 $(B)/base/vm/cgame.qvm \ 653 $(B)/base/vm/game.qvm \ 654 $(B)/base/vm/ui.qvm \ 655 qvmdeps 656 endif 657endif 658 659ifeq ($(USE_CCACHE),1) 660 CC := ccache $(CC) 661endif 662 663ifdef DEFAULT_BASEDIR 664 BASE_CFLAGS += -DDEFAULT_BASEDIR=\\\"$(DEFAULT_BASEDIR)\\\" 665endif 666 667ifeq ($(USE_LOCAL_HEADERS),1) 668 BASE_CFLAGS += -DUSE_LOCAL_HEADERS=1 669endif 670 671ifeq ($(GENERATE_DEPENDENCIES),1) 672 ifeq ($(CC),gcc) 673 DEPEND_CFLAGS=-MMD 674 endif 675endif 676 677DO_CC=$(CC) $(NOTSHLIBCFLAGS) $(CFLAGS) -o $@ -c $< 678DO_SMP_CC=$(CC) $(NOTSHLIBCFLAGS) $(CFLAGS) -DSMP -o $@ -c $< 679DO_BOT_CC=$(CC) $(NOTSHLIBCFLAGS) $(CFLAGS) $(BOTCFLAGS) -DBOTLIB -o $@ -c $< # $(SHLIBCFLAGS) # bk001212 680DO_DEBUG_CC=$(CC) $(NOTSHLIBCFLAGS) $(DEBUG_CFLAGS) -o $@ -c $< 681DO_SHLIB_CC=$(CC) $(CFLAGS) $(SHLIBCFLAGS) -o $@ -c $< 682DO_SHLIB_DEBUG_CC=$(CC) $(DEBUG_CFLAGS) $(SHLIBCFLAGS) -o $@ -c $< 683DO_AS=$(CC) $(CFLAGS) -DELF -x assembler-with-cpp -o $@ -c $< 684DO_DED_CC=$(CC) $(NOTSHLIBCFLAGS) -DDEDICATED $(CFLAGS) -o $@ -c $< 685DO_WINDRES=$(WINDRES) -i $< -o $@ 686 687############################################################################# 688# MAIN TARGETS 689############################################################################# 690 691default:build_release 692 693debug: build_debug 694release: build_release 695 696build_debug: B=$(BD) 697build_debug: makedirs tools 698 $(MAKE) targets B=$(BD) CFLAGS="$(CFLAGS) $(DEBUG_CFLAGS) $(DEPEND_CFLAGS)" 699ifeq ($(BUILD_MASTER_SERVER),1) 700 $(MAKE) -C $(MASTERDIR) debug 701endif 702 703build_release: B=$(BR) 704build_release: makedirs 705 $(MAKE) targets B=$(BR) CFLAGS="$(CFLAGS) $(RELEASE_CFLAGS) $(DEPEND_CFLAGS)" 706ifeq ($(BUILD_MASTER_SERVER),1) 707 $(MAKE) -C $(MASTERDIR) release 708endif 709 710#Build both debug and release builds 711all:build_release 712 713targets: $(TARGETS) 714 715makedirs: 716 @if [ ! -d $(BUILD_DIR) ];then $(MKDIR) $(BUILD_DIR);fi 717 @if [ ! -d $(B) ];then $(MKDIR) $(B);fi 718 @if [ ! -d $(B)/client ];then $(MKDIR) $(B)/client;fi 719 @if [ ! -d $(B)/ded ];then $(MKDIR) $(B)/ded;fi 720 @if [ ! -d $(B)/base ];then $(MKDIR) $(B)/base;fi 721 @if [ ! -d $(B)/base/cgame ];then $(MKDIR) $(B)/base/cgame;fi 722 @if [ ! -d $(B)/base/game ];then $(MKDIR) $(B)/base/game;fi 723 @if [ ! -d $(B)/base/ui ];then $(MKDIR) $(B)/base/ui;fi 724 @if [ ! -d $(B)/base/qcommon ];then $(MKDIR) $(B)/base/qcommon;fi 725 @if [ ! -d $(B)/base/vm ];then $(MKDIR) $(B)/base/vm;fi 726 727############################################################################# 728# QVM BUILD TOOLS 729############################################################################# 730 731Q3LCC=$(TOOLSDIR)/q3lcc$(BINEXT) 732Q3ASM=$(TOOLSDIR)/q3asm$(BINEXT) 733 734ifeq ($(CROSS_COMPILING),1) 735tools: 736 echo QVM tools not built when cross-compiling 737else 738tools: 739 $(MAKE) -C $(TOOLSDIR)/lcc install 740 $(MAKE) -C $(TOOLSDIR)/asm install 741endif 742 743DO_Q3LCC=$(Q3LCC) -o $@ $< 744 745############################################################################# 746# CLIENT/SERVER 747############################################################################# 748 749Q3OBJ = \ 750 $(B)/client/cl_cgame.o \ 751 $(B)/client/cl_cin.o \ 752 $(B)/client/cl_console.o \ 753 $(B)/client/cl_input.o \ 754 $(B)/client/cl_keys.o \ 755 $(B)/client/cl_main.o \ 756 $(B)/client/cl_net_chan.o \ 757 $(B)/client/cl_parse.o \ 758 $(B)/client/cl_scrn.o \ 759 $(B)/client/cl_ui.o \ 760 $(B)/client/cl_avi.o \ 761 \ 762 $(B)/client/cm_load.o \ 763 $(B)/client/cm_patch.o \ 764 $(B)/client/cm_polylib.o \ 765 $(B)/client/cm_test.o \ 766 $(B)/client/cm_trace.o \ 767 \ 768 $(B)/client/cmd.o \ 769 $(B)/client/common.o \ 770 $(B)/client/cvar.o \ 771 $(B)/client/files.o \ 772 $(B)/client/md4.o \ 773 $(B)/client/msg.o \ 774 $(B)/client/net_chan.o \ 775 $(B)/client/huffman.o \ 776 \ 777 $(B)/client/snd_adpcm.o \ 778 $(B)/client/snd_dma.o \ 779 $(B)/client/snd_mem.o \ 780 $(B)/client/snd_mix.o \ 781 $(B)/client/snd_wavelet.o \ 782 \ 783 $(B)/client/snd_main.o \ 784 $(B)/client/snd_codec.o \ 785 $(B)/client/snd_codec_wav.o \ 786 $(B)/client/snd_codec_ogg.o \ 787 \ 788 $(B)/client/qal.o \ 789 $(B)/client/snd_openal.o \ 790 \ 791 $(B)/client/sv_bot.o \ 792 $(B)/client/sv_ccmds.o \ 793 $(B)/client/sv_client.o \ 794 $(B)/client/sv_game.o \ 795 $(B)/client/sv_init.o \ 796 $(B)/client/sv_main.o \ 797 $(B)/client/sv_net_chan.o \ 798 $(B)/client/sv_snapshot.o \ 799 $(B)/client/sv_world.o \ 800 \ 801 $(B)/client/q_math.o \ 802 $(B)/client/q_shared.o \ 803 \ 804 $(B)/client/unzip.o \ 805 $(B)/client/vm.o \ 806 $(B)/client/vm_interpreted.o \ 807 \ 808 $(B)/client/be_aas_bspq3.o \ 809 $(B)/client/be_aas_cluster.o \ 810 $(B)/client/be_aas_debug.o \ 811 $(B)/client/be_aas_entity.o \ 812 $(B)/client/be_aas_file.o \ 813 $(B)/client/be_aas_main.o \ 814 $(B)/client/be_aas_move.o \ 815 $(B)/client/be_aas_optimize.o \ 816 $(B)/client/be_aas_reach.o \ 817 $(B)/client/be_aas_route.o \ 818 $(B)/client/be_aas_routealt.o \ 819 $(B)/client/be_aas_sample.o \ 820 $(B)/client/be_ai_char.o \ 821 $(B)/client/be_ai_chat.o \ 822 $(B)/client/be_ai_gen.o \ 823 $(B)/client/be_ai_goal.o \ 824 $(B)/client/be_ai_move.o \ 825 $(B)/client/be_ai_weap.o \ 826 $(B)/client/be_ai_weight.o \ 827 $(B)/client/be_ea.o \ 828 $(B)/client/be_interface.o \ 829 $(B)/client/l_crc.o \ 830 $(B)/client/l_libvar.o \ 831 $(B)/client/l_log.o \ 832 $(B)/client/l_memory.o \ 833 $(B)/client/l_precomp.o \ 834 $(B)/client/l_script.o \ 835 $(B)/client/l_struct.o \ 836 \ 837 $(B)/client/jcapimin.o \ 838 $(B)/client/jchuff.o \ 839 $(B)/client/jcinit.o \ 840 $(B)/client/jccoefct.o \ 841 $(B)/client/jccolor.o \ 842 $(B)/client/jfdctflt.o \ 843 $(B)/client/jcdctmgr.o \ 844 $(B)/client/jcphuff.o \ 845 $(B)/client/jcmainct.o \ 846 $(B)/client/jcmarker.o \ 847 $(B)/client/jcmaster.o \ 848 $(B)/client/jcomapi.o \ 849 $(B)/client/jcparam.o \ 850 $(B)/client/jcprepct.o \ 851 $(B)/client/jcsample.o \ 852 $(B)/client/jdapimin.o \ 853 $(B)/client/jdapistd.o \ 854 $(B)/client/jdatasrc.o \ 855 $(B)/client/jdcoefct.o \ 856 $(B)/client/jdcolor.o \ 857 $(B)/client/jddctmgr.o \ 858 $(B)/client/jdhuff.o \ 859 $(B)/client/jdinput.o \ 860 $(B)/client/jdmainct.o \ 861 $(B)/client/jdmarker.o \ 862 $(B)/client/jdmaster.o \ 863 $(B)/client/jdpostct.o \ 864 $(B)/client/jdsample.o \ 865 $(B)/client/jdtrans.o \ 866 $(B)/client/jerror.o \ 867 $(B)/client/jidctflt.o \ 868 $(B)/client/jmemmgr.o \ 869 $(B)/client/jmemnobs.o \ 870 $(B)/client/jutils.o \ 871 \ 872 $(B)/client/tr_animation.o \ 873 $(B)/client/tr_backend.o \ 874 $(B)/client/tr_bsp.o \ 875 $(B)/client/tr_cmds.o \ 876 $(B)/client/tr_curve.o \ 877 $(B)/client/tr_flares.o \ 878 $(B)/client/tr_font.o \ 879 $(B)/client/tr_image.o \ 880 $(B)/client/tr_init.o \ 881 $(B)/client/tr_light.o \ 882 $(B)/client/tr_main.o \ 883 $(B)/client/tr_marks.o \ 884 $(B)/client/tr_mesh.o \ 885 $(B)/client/tr_model.o \ 886 $(B)/client/tr_noise.o \ 887 $(B)/client/tr_scene.o \ 888 $(B)/client/tr_shade.o \ 889 $(B)/client/tr_shade_calc.o \ 890 $(B)/client/tr_shader.o \ 891 $(B)/client/tr_shadows.o \ 892 $(B)/client/tr_sky.o \ 893 $(B)/client/tr_surface.o \ 894 $(B)/client/tr_world.o \ 895 896ifeq ($(ARCH),i386) 897 Q3OBJ += $(B)/client/vm_x86.o 898 Q3OBJ += \ 899 $(B)/client/snd_mixa.o \ 900 $(B)/client/matha.o \ 901 $(B)/client/ftola.o \ 902 $(B)/client/snapvectora.o 903endif 904 905ifeq ($(ARCH),amd64) 906 Q3OBJ += $(B)/client/vm_x86_64.o 907endif 908 909ifeq ($(ARCH),ppc) 910 ifneq ($(VM_PPC),) 911 Q3OBJ += $(B)/client/$(VM_PPC).o 912 endif 913endif 914 915ifeq ($(PLATFORM),mingw32) 916 Q3OBJ += \ 917 $(B)/client/win_gamma.o \ 918 $(B)/client/win_glimp.o \ 919 $(B)/client/win_input.o \ 920 $(B)/client/win_main.o \ 921 $(B)/client/win_net.o \ 922 $(B)/client/win_qgl.o \ 923 $(B)/client/win_shared.o \ 924 $(B)/client/win_snd.o \ 925 $(B)/client/win_syscon.o \ 926 $(B)/client/win_wndproc.o \ 927 $(B)/client/win_resource.o 928else 929 Q3OBJ += \ 930 $(B)/client/unix_main.o \ 931 $(B)/client/unix_net.o \ 932 $(B)/client/unix_shared.o \ 933 $(B)/client/linux_signals.o \ 934 $(B)/client/linux_qgl.o \ 935 $(B)/client/linux_snd.o \ 936 $(B)/client/sdl_snd.o 937 938 ifeq ($(PLATFORM),linux) 939 Q3OBJ += $(B)/client/linux_joystick.o 940 endif 941 942 ifeq ($(USE_SDL),1) 943 ifneq ($(PLATFORM),darwin) 944 BUILD_CLIENT_SMP = 0 945 endif 946 endif 947 948 Q3POBJ = \ 949 $(B)/client/linux_glimp.o \ 950 $(B)/client/sdl_glimp.o 951 952 Q3POBJ_SMP = \ 953 $(B)/client/linux_glimp_smp.o \ 954 $(B)/client/sdl_glimp_smp.o 955endif 956 957$(B)/tremulous$(BINEXT): $(Q3OBJ) $(Q3POBJ) $(LIBSDLMAIN) 958 $(CC) -o $@ $(Q3OBJ) $(Q3POBJ) $(CLIENT_LDFLAGS) $(LDFLAGS) $(LIBSDLMAIN) 959 960$(B)/tremulous-smp$(BINEXT): $(Q3OBJ) $(Q3POBJ_SMP) $(LIBSDLMAIN) 961 $(CC) -o $@ $(Q3OBJ) $(Q3POBJ_SMP) $(CLIENT_LDFLAGS) \ 962 $(THREAD_LDFLAGS) $(LDFLAGS) $(LIBSDLMAIN) 963 964ifneq ($(strip $(LIBSDLMAIN)),) 965ifneq ($(strip $(LIBSDLMAINSRC)),) 966$(LIBSDLMAIN) : $(LIBSDLMAINSRC) 967 cp $< $@ 968 ranlib $@ 969endif 970endif 971 972$(B)/client/cl_cgame.o : $(CDIR)/cl_cgame.c; $(DO_CC) 973$(B)/client/cl_cin.o : $(CDIR)/cl_cin.c; $(DO_CC) 974$(B)/client/cl_console.o : $(CDIR)/cl_console.c; $(DO_CC) 975$(B)/client/cl_input.o : $(CDIR)/cl_input.c; $(DO_CC) 976$(B)/client/cl_keys.o : $(CDIR)/cl_keys.c; $(DO_CC) 977$(B)/client/cl_main.o : $(CDIR)/cl_main.c; $(DO_CC) 978$(B)/client/cl_net_chan.o : $(CDIR)/cl_net_chan.c; $(DO_CC) 979$(B)/client/cl_parse.o : $(CDIR)/cl_parse.c; $(DO_CC) 980$(B)/client/cl_scrn.o : $(CDIR)/cl_scrn.c; $(DO_CC) 981$(B)/client/cl_ui.o : $(CDIR)/cl_ui.c; $(DO_CC) 982$(B)/client/cl_avi.o : $(CDIR)/cl_avi.c; $(DO_CC) 983$(B)/client/snd_adpcm.o : $(CDIR)/snd_adpcm.c; $(DO_CC) 984$(B)/client/snd_dma.o : $(CDIR)/snd_dma.c; $(DO_CC) 985$(B)/client/snd_mem.o : $(CDIR)/snd_mem.c; $(DO_CC) 986$(B)/client/snd_mix.o : $(CDIR)/snd_mix.c; $(DO_CC) 987$(B)/client/snd_wavelet.o : $(CDIR)/snd_wavelet.c; $(DO_CC) 988 989$(B)/client/snd_main.o : $(CDIR)/snd_main.c; $(DO_CC) 990$(B)/client/snd_codec.o : $(CDIR)/snd_codec.c; $(DO_CC) 991$(B)/client/snd_codec_wav.o : $(CDIR)/snd_codec_wav.c; $(DO_CC) 992$(B)/client/snd_codec_ogg.o : $(CDIR)/snd_codec_ogg.c; $(DO_CC) 993 994$(B)/client/qal.o : $(CDIR)/qal.c; $(DO_CC) 995$(B)/client/snd_openal.o : $(CDIR)/snd_openal.c; $(DO_CC) 996 997$(B)/client/sv_bot.o : $(SDIR)/sv_bot.c; $(DO_CC) 998$(B)/client/sv_client.o : $(SDIR)/sv_client.c; $(DO_CC) 999$(B)/client/sv_ccmds.o : $(SDIR)/sv_ccmds.c; $(DO_CC) 1000$(B)/client/sv_game.o : $(SDIR)/sv_game.c; $(DO_CC) 1001$(B)/client/sv_init.o : $(SDIR)/sv_init.c; $(DO_CC) 1002$(B)/client/sv_main.o : $(SDIR)/sv_main.c; $(DO_CC) 1003$(B)/client/sv_net_chan.o : $(SDIR)/sv_net_chan.c; $(DO_CC) 1004$(B)/client/sv_snapshot.o : $(SDIR)/sv_snapshot.c; $(DO_CC) 1005$(B)/client/sv_world.o : $(SDIR)/sv_world.c; $(DO_CC) 1006$(B)/client/cm_trace.o : $(CMDIR)/cm_trace.c; $(DO_CC) 1007$(B)/client/cm_load.o : $(CMDIR)/cm_load.c; $(DO_CC) 1008$(B)/client/cm_test.o : $(CMDIR)/cm_test.c; $(DO_CC) 1009$(B)/client/cm_patch.o : $(CMDIR)/cm_patch.c; $(DO_CC) 1010$(B)/client/cm_polylib.o : $(CMDIR)/cm_polylib.c; $(DO_CC) 1011$(B)/client/cmd.o : $(CMDIR)/cmd.c; $(DO_CC) 1012$(B)/client/common.o : $(CMDIR)/common.c; $(DO_CC) 1013$(B)/client/cvar.o : $(CMDIR)/cvar.c; $(DO_CC) 1014$(B)/client/files.o : $(CMDIR)/files.c; $(DO_CC) 1015$(B)/client/md4.o : $(CMDIR)/md4.c; $(DO_CC) 1016$(B)/client/msg.o : $(CMDIR)/msg.c; $(DO_CC) 1017$(B)/client/net_chan.o : $(CMDIR)/net_chan.c; $(DO_CC) 1018$(B)/client/huffman.o : $(CMDIR)/huffman.c; $(DO_CC) 1019$(B)/client/q_shared.o : $(CMDIR)/q_shared.c; $(DO_CC) 1020$(B)/client/q_math.o : $(CMDIR)/q_math.c; $(DO_CC) 1021 1022$(B)/client/be_aas_bspq3.o : $(BLIBDIR)/be_aas_bspq3.c; $(DO_BOT_CC) 1023$(B)/client/be_aas_cluster.o : $(BLIBDIR)/be_aas_cluster.c; $(DO_BOT_CC) 1024$(B)/client/be_aas_debug.o : $(BLIBDIR)/be_aas_debug.c; $(DO_BOT_CC) 1025$(B)/client/be_aas_entity.o : $(BLIBDIR)/be_aas_entity.c; $(DO_BOT_CC) 1026$(B)/client/be_aas_file.o : $(BLIBDIR)/be_aas_file.c; $(DO_BOT_CC) 1027$(B)/client/be_aas_main.o : $(BLIBDIR)/be_aas_main.c; $(DO_BOT_CC) 1028$(B)/client/be_aas_move.o : $(BLIBDIR)/be_aas_move.c; $(DO_BOT_CC) 1029$(B)/client/be_aas_optimize.o : $(BLIBDIR)/be_aas_optimize.c; $(DO_BOT_CC) 1030$(B)/client/be_aas_reach.o : $(BLIBDIR)/be_aas_reach.c; $(DO_BOT_CC) 1031$(B)/client/be_aas_route.o : $(BLIBDIR)/be_aas_route.c; $(DO_BOT_CC) 1032$(B)/client/be_aas_routealt.o : $(BLIBDIR)/be_aas_routealt.c; $(DO_BOT_CC) 1033$(B)/client/be_aas_sample.o : $(BLIBDIR)/be_aas_sample.c; $(DO_BOT_CC) 1034$(B)/client/be_ai_char.o : $(BLIBDIR)/be_ai_char.c; $(DO_BOT_CC) 1035$(B)/client/be_ai_chat.o : $(BLIBDIR)/be_ai_chat.c; $(DO_BOT_CC) 1036$(B)/client/be_ai_gen.o : $(BLIBDIR)/be_ai_gen.c; $(DO_BOT_CC) 1037$(B)/client/be_ai_goal.o : $(BLIBDIR)/be_ai_goal.c; $(DO_BOT_CC) 1038$(B)/client/be_ai_move.o : $(BLIBDIR)/be_ai_move.c; $(DO_BOT_CC) 1039$(B)/client/be_ai_weap.o : $(BLIBDIR)/be_ai_weap.c; $(DO_BOT_CC) 1040$(B)/client/be_ai_weight.o : $(BLIBDIR)/be_ai_weight.c; $(DO_BOT_CC) 1041$(B)/client/be_ea.o : $(BLIBDIR)/be_ea.c; $(DO_BOT_CC) 1042$(B)/client/be_interface.o : $(BLIBDIR)/be_interface.c; $(DO_BOT_CC) 1043$(B)/client/l_crc.o : $(BLIBDIR)/l_crc.c; $(DO_BOT_CC) 1044$(B)/client/l_libvar.o : $(BLIBDIR)/l_libvar.c; $(DO_BOT_CC) 1045$(B)/client/l_log.o : $(BLIBDIR)/l_log.c; $(DO_BOT_CC) 1046$(B)/client/l_memory.o : $(BLIBDIR)/l_memory.c; $(DO_BOT_CC) 1047$(B)/client/l_precomp.o : $(BLIBDIR)/l_precomp.c; $(DO_BOT_CC) 1048$(B)/client/l_script.o : $(BLIBDIR)/l_script.c; $(DO_BOT_CC) 1049$(B)/client/l_struct.o : $(BLIBDIR)/l_struct.c; $(DO_BOT_CC) 1050 1051$(B)/client/jcapimin.o : $(JPDIR)/jcapimin.c; $(DO_CC) 1052$(B)/client/jchuff.o : $(JPDIR)/jchuff.c; $(DO_CC) 1053$(B)/client/jcinit.o : $(JPDIR)/jcinit.c; $(DO_CC) 1054$(B)/client/jccoefct.o : $(JPDIR)/jccoefct.c; $(DO_CC) 1055$(B)/client/jccolor.o : $(JPDIR)/jccolor.c; $(DO_CC) 1056$(B)/client/jfdctflt.o : $(JPDIR)/jfdctflt.c; $(DO_CC) 1057$(B)/client/jcdctmgr.o : $(JPDIR)/jcdctmgr.c; $(DO_CC) 1058$(B)/client/jcmainct.o : $(JPDIR)/jcmainct.c; $(DO_CC) 1059$(B)/client/jcmarker.o : $(JPDIR)/jcmarker.c; $(DO_CC) 1060$(B)/client/jcmaster.o : $(JPDIR)/jcmaster.c; $(DO_CC) 1061$(B)/client/jcomapi.o : $(JPDIR)/jcomapi.c; $(DO_CC) 1062$(B)/client/jcparam.o : $(JPDIR)/jcparam.c; $(DO_CC) 1063$(B)/client/jcprepct.o : $(JPDIR)/jcprepct.c; $(DO_CC) 1064$(B)/client/jcsample.o : $(JPDIR)/jcsample.c; $(DO_CC) 1065 1066$(B)/client/jdapimin.o : $(JPDIR)/jdapimin.c; $(DO_CC) 1067$(B)/client/jdapistd.o : $(JPDIR)/jdapistd.c; $(DO_CC) 1068$(B)/client/jdatasrc.o : $(JPDIR)/jdatasrc.c; $(DO_CC) 1069$(B)/client/jdcoefct.o : $(JPDIR)/jdcoefct.c; $(DO_CC) 1070$(B)/client/jdcolor.o : $(JPDIR)/jdcolor.c; $(DO_CC) 1071$(B)/client/jcphuff.o : $(JPDIR)/jcphuff.c; $(DO_CC) 1072$(B)/client/jddctmgr.o : $(JPDIR)/jddctmgr.c; $(DO_CC) 1073$(B)/client/jdhuff.o : $(JPDIR)/jdhuff.c; $(DO_CC) 1074$(B)/client/jdinput.o : $(JPDIR)/jdinput.c; $(DO_CC) 1075$(B)/client/jdmainct.o : $(JPDIR)/jdmainct.c; $(DO_CC) 1076$(B)/client/jdmarker.o : $(JPDIR)/jdmarker.c; $(DO_CC) 1077$(B)/client/jdmaster.o : $(JPDIR)/jdmaster.c; $(DO_CC) 1078$(B)/client/jdpostct.o : $(JPDIR)/jdpostct.c; $(DO_CC) 1079$(B)/client/jdsample.o : $(JPDIR)/jdsample.c; $(DO_CC) 1080$(B)/client/jdtrans.o : $(JPDIR)/jdtrans.c; $(DO_CC) 1081$(B)/client/jerror.o : $(JPDIR)/jerror.c; $(DO_CC) $(GL_CFLAGS) $(MINGW_CFLAGS) 1082$(B)/client/jidctflt.o : $(JPDIR)/jidctflt.c; $(DO_CC) 1083$(B)/client/jmemmgr.o : $(JPDIR)/jmemmgr.c; $(DO_CC) 1084$(B)/client/jmemnobs.o : $(JPDIR)/jmemnobs.c; $(DO_CC) $(GL_CFLAGS) $(MINGW_CFLAGS) 1085$(B)/client/jutils.o : $(JPDIR)/jutils.c; $(DO_CC) 1086 1087$(B)/client/tr_bsp.o : $(RDIR)/tr_bsp.c; $(DO_CC) $(GL_CFLAGS) 1088$(B)/client/tr_animation.o : $(RDIR)/tr_animation.c; $(DO_CC) $(GL_CFLAGS) 1089$(B)/client/tr_backend.o : $(RDIR)/tr_backend.c; $(DO_CC) $(GL_CFLAGS) 1090$(B)/client/tr_cmds.o : $(RDIR)/tr_cmds.c; $(DO_CC) $(GL_CFLAGS) 1091$(B)/client/tr_curve.o : $(RDIR)/tr_curve.c; $(DO_CC) $(GL_CFLAGS) 1092$(B)/client/tr_flares.o : $(RDIR)/tr_flares.c; $(DO_CC) $(GL_CFLAGS) 1093$(B)/client/tr_font.o : $(RDIR)/tr_font.c; $(DO_CC) $(GL_CFLAGS) 1094$(B)/client/tr_image.o : $(RDIR)/tr_image.c; $(DO_CC) $(GL_CFLAGS) $(MINGW_CFLAGS) 1095$(B)/client/tr_init.o : $(RDIR)/tr_init.c; $(DO_CC) $(GL_CFLAGS) 1096$(B)/client/tr_light.o : $(RDIR)/tr_light.c; $(DO_CC) $(GL_CFLAGS) 1097$(B)/client/tr_main.o : $(RDIR)/tr_main.c; $(DO_CC) $(GL_CFLAGS) 1098$(B)/client/tr_marks.o : $(RDIR)/tr_marks.c; $(DO_CC) $(GL_CFLAGS) 1099$(B)/client/tr_mesh.o : $(RDIR)/tr_mesh.c; $(DO_CC) $(GL_CFLAGS) 1100$(B)/client/tr_model.o : $(RDIR)/tr_model.c; $(DO_CC) $(GL_CFLAGS) 1101$(B)/client/tr_noise.o : $(RDIR)/tr_noise.c; $(DO_CC) $(GL_CFLAGS) 1102$(B)/client/tr_scene.o : $(RDIR)/tr_scene.c; $(DO_CC) $(GL_CFLAGS) 1103$(B)/client/tr_shade.o : $(RDIR)/tr_shade.c; $(DO_CC) $(GL_CFLAGS) 1104$(B)/client/tr_shader.o : $(RDIR)/tr_shader.c; $(DO_CC) $(GL_CFLAGS) 1105$(B)/client/tr_shade_calc.o : $(RDIR)/tr_shade_calc.c; $(DO_CC) $(GL_CFLAGS) 1106$(B)/client/tr_shadows.o : $(RDIR)/tr_shadows.c; $(DO_CC) $(GL_CFLAGS) 1107$(B)/client/tr_sky.o : $(RDIR)/tr_sky.c; $(DO_CC) $(GL_CFLAGS) 1108$(B)/client/tr_smp.o : $(RDIR)/tr_smp.c; $(DO_CC) $(GL_CFLAGS) 1109$(B)/client/tr_stripify.o : $(RDIR)/tr_stripify.c; $(DO_CC) $(GL_CFLAGS) 1110$(B)/client/tr_subdivide.o : $(RDIR)/tr_subdivide.c; $(DO_CC) $(GL_CFLAGS) 1111$(B)/client/tr_surface.o : $(RDIR)/tr_surface.c; $(DO_CC) $(GL_CFLAGS) 1112$(B)/client/tr_world.o : $(RDIR)/tr_world.c; $(DO_CC) $(GL_CFLAGS) 1113 1114$(B)/client/unix_qgl.o : $(UDIR)/unix_qgl.c; $(DO_CC) $(GL_CFLAGS) 1115$(B)/client/unix_main.o : $(UDIR)/unix_main.c; $(DO_CC) 1116$(B)/client/unix_net.o : $(UDIR)/unix_net.c; $(DO_CC) 1117$(B)/client/unix_shared.o : $(UDIR)/unix_shared.c; $(DO_CC) 1118$(B)/client/irix_glimp.o : $(UDIR)/irix_glimp.c; $(DO_CC) 1119$(B)/client/irix_glimp_smp.o : $(UDIR)/irix_glimp.c; $(DO_SMP_CC) 1120$(B)/client/irix_snd.o : $(UDIR)/irix_snd.c; $(DO_CC) 1121$(B)/client/irix_input.o : $(UDIR)/irix_input.c; $(DO_CC) 1122$(B)/client/linux_signals.o : $(UDIR)/linux_signals.c; $(DO_CC) $(GL_CFLAGS) 1123$(B)/client/linux_glimp.o : $(UDIR)/linux_glimp.c; $(DO_CC) $(GL_CFLAGS) 1124$(B)/client/sdl_glimp.o : $(UDIR)/sdl_glimp.c; $(DO_CC) $(GL_CFLAGS) 1125$(B)/client/linux_glimp_smp.o : $(UDIR)/linux_glimp.c; $(DO_SMP_CC) $(GL_CFLAGS) 1126$(B)/client/sdl_glimp_smp.o : $(UDIR)/sdl_glimp.c; $(DO_SMP_CC) $(GL_CFLAGS) 1127$(B)/client/linux_joystick.o : $(UDIR)/linux_joystick.c; $(DO_CC) 1128$(B)/client/linux_qgl.o : $(UDIR)/linux_qgl.c; $(DO_CC) $(GL_CFLAGS) 1129$(B)/client/linux_input.o : $(UDIR)/linux_input.c; $(DO_CC) 1130$(B)/client/linux_snd.o : $(UDIR)/linux_snd.c; $(DO_CC) 1131$(B)/client/sdl_snd.o : $(UDIR)/sdl_snd.c; $(DO_CC) 1132$(B)/client/snd_mixa.o : $(UDIR)/snd_mixa.s; $(DO_AS) 1133$(B)/client/matha.o : $(UDIR)/matha.s; $(DO_AS) 1134$(B)/client/ftola.o : $(UDIR)/ftola.s; $(DO_AS) 1135$(B)/client/snapvectora.o : $(UDIR)/snapvectora.s; $(DO_AS) 1136 1137$(B)/client/win_gamma.o : $(W32DIR)/win_gamma.c; $(DO_CC) 1138$(B)/client/win_glimp.o : $(W32DIR)/win_glimp.c; $(DO_CC) 1139$(B)/client/win_input.o : $(W32DIR)/win_input.c; $(DO_CC) 1140$(B)/client/win_main.o : $(W32DIR)/win_main.c; $(DO_CC) 1141$(B)/client/win_net.o : $(W32DIR)/win_net.c; $(DO_CC) 1142$(B)/client/win_qgl.o : $(W32DIR)/win_qgl.c; $(DO_CC) 1143$(B)/client/win_shared.o : $(W32DIR)/win_shared.c; $(DO_CC) 1144$(B)/client/win_snd.o : $(W32DIR)/win_snd.c; $(DO_CC) 1145$(B)/client/win_syscon.o : $(W32DIR)/win_syscon.c; $(DO_CC) 1146$(B)/client/win_wndproc.o : $(W32DIR)/win_wndproc.c; $(DO_CC) 1147$(B)/client/win_resource.o : $(W32DIR)/win_resource.rc; $(DO_WINDRES) 1148 1149$(B)/client/vm_x86.o : $(CMDIR)/vm_x86.c; $(DO_CC) 1150$(B)/client/vm_x86_64.o : $(CMDIR)/vm_x86_64.c; $(DO_CC) 1151ifneq ($(VM_PPC),) 1152$(B)/client/$(VM_PPC).o : $(CMDIR)/$(VM_PPC).c; $(DO_CC) 1153endif 1154 1155$(B)/client/unzip.o : $(CMDIR)/unzip.c; $(DO_CC) 1156$(B)/client/vm.o : $(CMDIR)/vm.c; $(DO_CC) 1157$(B)/client/vm_interpreted.o : $(CMDIR)/vm_interpreted.c; $(DO_CC) 1158 1159############################################################################# 1160# DEDICATED SERVER 1161############################################################################# 1162 1163Q3DOBJ = \ 1164 $(B)/ded/sv_bot.o \ 1165 $(B)/ded/sv_client.o \ 1166 $(B)/ded/sv_ccmds.o \ 1167 $(B)/ded/sv_game.o \ 1168 $(B)/ded/sv_init.o \ 1169 $(B)/ded/sv_main.o \ 1170 $(B)/ded/sv_net_chan.o \ 1171 $(B)/ded/sv_snapshot.o \ 1172 $(B)/ded/sv_world.o \ 1173 \ 1174 $(B)/ded/cm_load.o \ 1175 $(B)/ded/cm_patch.o \ 1176 $(B)/ded/cm_polylib.o \ 1177 $(B)/ded/cm_test.o \ 1178 $(B)/ded/cm_trace.o \ 1179 $(B)/ded/cmd.o \ 1180 $(B)/ded/common.o \ 1181 $(B)/ded/cvar.o \ 1182 $(B)/ded/files.o \ 1183 $(B)/ded/md4.o \ 1184 $(B)/ded/msg.o \ 1185 $(B)/ded/net_chan.o \ 1186 $(B)/ded/huffman.o \ 1187 \ 1188 $(B)/ded/q_math.o \ 1189 $(B)/ded/q_shared.o \ 1190 \ 1191 $(B)/ded/unzip.o \ 1192 $(B)/ded/vm.o \ 1193 $(B)/ded/vm_interpreted.o \ 1194 \ 1195 $(B)/ded/be_aas_bspq3.o \ 1196 $(B)/ded/be_aas_cluster.o \ 1197 $(B)/ded/be_aas_debug.o \ 1198 $(B)/ded/be_aas_entity.o \ 1199 $(B)/ded/be_aas_file.o \ 1200 $(B)/ded/be_aas_main.o \ 1201 $(B)/ded/be_aas_move.o \ 1202 $(B)/ded/be_aas_optimize.o \ 1203 $(B)/ded/be_aas_reach.o \ 1204 $(B)/ded/be_aas_route.o \ 1205 $(B)/ded/be_aas_routealt.o \ 1206 $(B)/ded/be_aas_sample.o \ 1207 $(B)/ded/be_ai_char.o \ 1208 $(B)/ded/be_ai_chat.o \ 1209 $(B)/ded/be_ai_gen.o \ 1210 $(B)/ded/be_ai_goal.o \ 1211 $(B)/ded/be_ai_move.o \ 1212 $(B)/ded/be_ai_weap.o \ 1213 $(B)/ded/be_ai_weight.o \ 1214 $(B)/ded/be_ea.o \ 1215 $(B)/ded/be_interface.o \ 1216 $(B)/ded/l_crc.o \ 1217 $(B)/ded/l_libvar.o \ 1218 $(B)/ded/l_log.o \ 1219 $(B)/ded/l_memory.o \ 1220 $(B)/ded/l_precomp.o \ 1221 $(B)/ded/l_script.o \ 1222 $(B)/ded/l_struct.o \ 1223 \ 1224 $(B)/ded/linux_signals.o \ 1225 $(B)/ded/unix_main.o \ 1226 $(B)/ded/unix_net.o \ 1227 $(B)/ded/unix_shared.o \ 1228 \ 1229 $(B)/ded/null_client.o \ 1230 $(B)/ded/null_input.o \ 1231 $(B)/ded/null_snddma.o 1232 1233ifeq ($(ARCH),i386) 1234 Q3DOBJ += $(B)/ded/vm_x86.o $(B)/ded/ftola.o \ 1235 $(B)/ded/snapvectora.o $(B)/ded/matha.o 1236endif 1237 1238ifeq ($(ARCH),amd64) 1239 Q3DOBJ += $(B)/ded/vm_x86_64.o 1240endif 1241 1242ifeq ($(ARCH),ppc) 1243 ifneq ($(VM_PPC),) 1244 Q3DOBJ += $(B)/ded/$(VM_PPC).o 1245 endif 1246endif 1247 1248$(B)/tremded$(BINEXT): $(Q3DOBJ) 1249 $(CC) -o $@ $(Q3DOBJ) $(LDFLAGS) 1250 1251$(B)/ded/sv_bot.o : $(SDIR)/sv_bot.c; $(DO_DED_CC) 1252$(B)/ded/sv_client.o : $(SDIR)/sv_client.c; $(DO_DED_CC) 1253$(B)/ded/sv_ccmds.o : $(SDIR)/sv_ccmds.c; $(DO_DED_CC) 1254$(B)/ded/sv_game.o : $(SDIR)/sv_game.c; $(DO_DED_CC) 1255$(B)/ded/sv_init.o : $(SDIR)/sv_init.c; $(DO_DED_CC) 1256$(B)/ded/sv_main.o : $(SDIR)/sv_main.c; $(DO_DED_CC) 1257$(B)/ded/sv_net_chan.o : $(SDIR)/sv_net_chan.c; $(DO_DED_CC) 1258$(B)/ded/sv_snapshot.o : $(SDIR)/sv_snapshot.c; $(DO_DED_CC) 1259$(B)/ded/sv_world.o : $(SDIR)/sv_world.c; $(DO_DED_CC) 1260$(B)/ded/cm_load.o : $(CMDIR)/cm_load.c; $(DO_DED_CC) 1261$(B)/ded/cm_polylib.o : $(CMDIR)/cm_polylib.c; $(DO_DED_CC) 1262$(B)/ded/cm_test.o : $(CMDIR)/cm_test.c; $(DO_DED_CC) 1263$(B)/ded/cm_trace.o : $(CMDIR)/cm_trace.c; $(DO_DED_CC) 1264$(B)/ded/cm_patch.o : $(CMDIR)/cm_patch.c; $(DO_DED_CC) 1265$(B)/ded/cmd.o : $(CMDIR)/cmd.c; $(DO_DED_CC) 1266$(B)/ded/common.o : $(CMDIR)/common.c; $(DO_DED_CC) 1267$(B)/ded/cvar.o : $(CMDIR)/cvar.c; $(DO_DED_CC) 1268$(B)/ded/files.o : $(CMDIR)/files.c; $(DO_DED_CC) 1269$(B)/ded/md4.o : $(CMDIR)/md4.c; $(DO_DED_CC) 1270$(B)/ded/msg.o : $(CMDIR)/msg.c; $(DO_DED_CC) 1271$(B)/ded/net_chan.o : $(CMDIR)/net_chan.c; $(DO_DED_CC) 1272$(B)/ded/huffman.o : $(CMDIR)/huffman.c; $(DO_DED_CC) 1273$(B)/ded/q_shared.o : $(CMDIR)/q_shared.c; $(DO_DED_CC) 1274$(B)/ded/q_math.o : $(CMDIR)/q_math.c; $(DO_DED_CC) 1275 1276$(B)/ded/be_aas_bspq3.o : $(BLIBDIR)/be_aas_bspq3.c; $(DO_BOT_CC) 1277$(B)/ded/be_aas_cluster.o : $(BLIBDIR)/be_aas_cluster.c; $(DO_BOT_CC) 1278$(B)/ded/be_aas_debug.o : $(BLIBDIR)/be_aas_debug.c; $(DO_BOT_CC) 1279$(B)/ded/be_aas_entity.o : $(BLIBDIR)/be_aas_entity.c; $(DO_BOT_CC) 1280$(B)/ded/be_aas_file.o : $(BLIBDIR)/be_aas_file.c; $(DO_BOT_CC) 1281$(B)/ded/be_aas_main.o : $(BLIBDIR)/be_aas_main.c; $(DO_BOT_CC) 1282$(B)/ded/be_aas_move.o : $(BLIBDIR)/be_aas_move.c; $(DO_BOT_CC) 1283$(B)/ded/be_aas_optimize.o : $(BLIBDIR)/be_aas_optimize.c; $(DO_BOT_CC) 1284$(B)/ded/be_aas_reach.o : $(BLIBDIR)/be_aas_reach.c; $(DO_BOT_CC) 1285$(B)/ded/be_aas_route.o : $(BLIBDIR)/be_aas_route.c; $(DO_BOT_CC) 1286$(B)/ded/be_aas_routealt.o : $(BLIBDIR)/be_aas_routealt.c; $(DO_BOT_CC) 1287$(B)/ded/be_aas_sample.o : $(BLIBDIR)/be_aas_sample.c; $(DO_BOT_CC) 1288$(B)/ded/be_ai_char.o : $(BLIBDIR)/be_ai_char.c; $(DO_BOT_CC) 1289$(B)/ded/be_ai_chat.o : $(BLIBDIR)/be_ai_chat.c; $(DO_BOT_CC) 1290$(B)/ded/be_ai_gen.o : $(BLIBDIR)/be_ai_gen.c; $(DO_BOT_CC) 1291$(B)/ded/be_ai_goal.o : $(BLIBDIR)/be_ai_goal.c; $(DO_BOT_CC) 1292$(B)/ded/be_ai_move.o : $(BLIBDIR)/be_ai_move.c; $(DO_BOT_CC) 1293$(B)/ded/be_ai_weap.o : $(BLIBDIR)/be_ai_weap.c; $(DO_BOT_CC) 1294$(B)/ded/be_ai_weight.o : $(BLIBDIR)/be_ai_weight.c; $(DO_BOT_CC) 1295$(B)/ded/be_ea.o : $(BLIBDIR)/be_ea.c; $(DO_BOT_CC) 1296$(B)/ded/be_interface.o : $(BLIBDIR)/be_interface.c; $(DO_BOT_CC) 1297$(B)/ded/l_crc.o : $(BLIBDIR)/l_crc.c; $(DO_BOT_CC) 1298$(B)/ded/l_libvar.o : $(BLIBDIR)/l_libvar.c; $(DO_BOT_CC) 1299$(B)/ded/l_log.o : $(BLIBDIR)/l_log.c; $(DO_BOT_CC) 1300$(B)/ded/l_memory.o : $(BLIBDIR)/l_memory.c; $(DO_BOT_CC) 1301$(B)/ded/l_precomp.o : $(BLIBDIR)/l_precomp.c; $(DO_BOT_CC) 1302$(B)/ded/l_script.o : $(BLIBDIR)/l_script.c; $(DO_BOT_CC) 1303$(B)/ded/l_struct.o : $(BLIBDIR)/l_struct.c; $(DO_BOT_CC) 1304 1305$(B)/ded/linux_signals.o : $(UDIR)/linux_signals.c; $(DO_DED_CC) 1306$(B)/ded/unix_main.o : $(UDIR)/unix_main.c; $(DO_DED_CC) 1307$(B)/ded/unix_net.o : $(UDIR)/unix_net.c; $(DO_DED_CC) 1308$(B)/ded/unix_shared.o : $(UDIR)/unix_shared.c; $(DO_DED_CC) 1309 1310$(B)/ded/null_client.o : $(NDIR)/null_client.c; $(DO_DED_CC) 1311$(B)/ded/null_input.o : $(NDIR)/null_input.c; $(DO_DED_CC) 1312$(B)/ded/null_snddma.o : $(NDIR)/null_snddma.c; $(DO_DED_CC) 1313$(B)/ded/unzip.o : $(CMDIR)/unzip.c; $(DO_DED_CC) 1314$(B)/ded/vm.o : $(CMDIR)/vm.c; $(DO_DED_CC) 1315$(B)/ded/vm_interpreted.o : $(CMDIR)/vm_interpreted.c; $(DO_DED_CC) 1316 1317$(B)/ded/ftola.o : $(UDIR)/ftola.s; $(DO_AS) 1318$(B)/ded/snapvectora.o : $(UDIR)/snapvectora.s; $(DO_AS) 1319$(B)/ded/matha.o : $(UDIR)/matha.s; $(DO_AS) 1320 1321$(B)/ded/vm_x86.o : $(CMDIR)/vm_x86.c; $(DO_DED_CC) 1322$(B)/ded/vm_x86_64.o : $(CMDIR)/vm_x86_64.c; $(DO_DED_CC) 1323ifneq ($(VM_PPC),) 1324$(B)/ded/$(VM_PPC).o : $(CMDIR)/$(VM_PPC).c; $(DO_DED_CC) 1325endif 1326 1327 1328 1329############################################################################# 1330## TREMULOUS CGAME 1331############################################################################# 1332 1333CGOBJ_ = \ 1334 $(B)/base/cgame/cg_main.o \ 1335 $(B)/base/game/bg_misc.o \ 1336 $(B)/base/game/bg_pmove.o \ 1337 $(B)/base/game/bg_slidemove.o \ 1338 $(B)/base/cgame/cg_consolecmds.o \ 1339 $(B)/base/cgame/cg_buildable.o \ 1340 $(B)/base/cgame/cg_animation.o \ 1341 $(B)/base/cgame/cg_animmapobj.o \ 1342 $(B)/base/cgame/cg_draw.o \ 1343 $(B)/base/cgame/cg_drawtools.o \ 1344 $(B)/base/cgame/cg_ents.o \ 1345 $(B)/base/cgame/cg_event.o \ 1346 $(B)/base/cgame/cg_marks.o \ 1347 $(B)/base/cgame/cg_players.o \ 1348 $(B)/base/cgame/cg_playerstate.o \ 1349 $(B)/base/cgame/cg_predict.o \ 1350 $(B)/base/cgame/cg_servercmds.o \ 1351 $(B)/base/cgame/cg_snapshot.o \ 1352 $(B)/base/cgame/cg_view.o \ 1353 $(B)/base/cgame/cg_weapons.o \ 1354 $(B)/base/cgame/cg_mem.o \ 1355 $(B)/base/cgame/cg_scanner.o \ 1356 $(B)/base/cgame/cg_attachment.o \ 1357 $(B)/base/cgame/cg_trails.o \ 1358 $(B)/base/cgame/cg_particles.o \ 1359 $(B)/base/cgame/cg_ptr.o \ 1360 $(B)/base/cgame/cg_tutorial.o \ 1361 $(B)/base/ui/ui_shared.o \ 1362 \ 1363 $(B)/base/qcommon/q_math.o \ 1364 $(B)/base/qcommon/q_shared.o 1365 1366CGOBJ = $(CGOBJ_) $(B)/base/cgame/cg_syscalls.o 1367CGVMOBJ = $(CGOBJ_:%.o=%.asm) $(B)/base/game/bg_lib.asm 1368 1369$(B)/base/cgame.$(SHLIBEXT) : $(CGOBJ) 1370 $(CC) $(SHLIBLDFLAGS) -o $@ $(CGOBJ) 1371 1372$(B)/base/vm/cgame.qvm: $(CGVMOBJ) $(CGDIR)/cg_syscalls.asm 1373 $(Q3ASM) -o $@ $(CGVMOBJ) $(CGDIR)/cg_syscalls.asm 1374 1375 1376 1377############################################################################# 1378## TREMULOUS GAME 1379############################################################################# 1380 1381GOBJ_ = \ 1382 $(B)/base/game/g_main.o \ 1383 $(B)/base/game/bg_misc.o \ 1384 $(B)/base/game/bg_pmove.o \ 1385 $(B)/base/game/bg_slidemove.o \ 1386 $(B)/base/game/g_mem.o \ 1387 $(B)/base/game/g_active.o \ 1388 $(B)/base/game/g_client.o \ 1389 $(B)/base/game/g_cmds.o \ 1390 $(B)/base/game/g_combat.o \ 1391 $(B)/base/game/g_physics.o \ 1392 $(B)/base/game/g_buildable.o \ 1393 $(B)/base/game/g_misc.o \ 1394 $(B)/base/game/g_missile.o \ 1395 $(B)/base/game/g_mover.o \ 1396 $(B)/base/game/g_session.o \ 1397 $(B)/base/game/g_spawn.o \ 1398 $(B)/base/game/g_svcmds.o \ 1399 $(B)/base/game/g_target.o \ 1400 $(B)/base/game/g_team.o \ 1401 $(B)/base/game/g_trigger.o \ 1402 $(B)/base/game/g_utils.o \ 1403 $(B)/base/game/g_maprotation.o \ 1404 $(B)/base/game/g_ptr.o \ 1405 $(B)/base/game/g_weapon.o \ 1406 \ 1407 $(B)/base/qcommon/q_math.o \ 1408 $(B)/base/qcommon/q_shared.o 1409 1410GOBJ = $(GOBJ_) $(B)/base/game/g_syscalls.o 1411GVMOBJ = $(GOBJ_:%.o=%.asm) $(B)/base/game/bg_lib.asm 1412 1413$(B)/base/game.$(SHLIBEXT) : $(GOBJ) 1414 $(CC) $(SHLIBLDFLAGS) -o $@ $(GOBJ) 1415 1416$(B)/base/vm/game.qvm: $(GVMOBJ) $(GDIR)/g_syscalls.asm 1417 $(Q3ASM) -o $@ $(GVMOBJ) $(GDIR)/g_syscalls.asm 1418 1419 1420 1421############################################################################# 1422## TREMULOUS UI 1423############################################################################# 1424 1425UIOBJ_ = \ 1426 $(B)/base/ui/ui_main.o \ 1427 $(B)/base/ui/ui_atoms.o \ 1428 $(B)/base/ui/ui_players.o \ 1429 $(B)/base/ui/ui_shared.o \ 1430 $(B)/base/ui/ui_gameinfo.o \ 1431 \ 1432 $(B)/base/game/bg_misc.o \ 1433 $(B)/base/qcommon/q_math.o \ 1434 $(B)/base/qcommon/q_shared.o 1435 1436UIOBJ = $(UIOBJ_) $(B)/base/ui/ui_syscalls.o 1437UIVMOBJ = $(UIOBJ_:%.o=%.asm) $(B)/base/game/bg_lib.asm 1438 1439$(B)/base/ui.$(SHLIBEXT) : $(UIOBJ) 1440 $(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(UIOBJ) 1441 1442$(B)/base/vm/ui.qvm: $(UIVMOBJ) $(UIDIR)/ui_syscalls.asm 1443 $(Q3ASM) -o $@ $(UIVMOBJ) $(UIDIR)/ui_syscalls.asm 1444 1445 1446############################################################################# 1447## GAME MODULE RULES 1448############################################################################# 1449 1450$(B)/base/cgame/%.o: $(CGDIR)/%.c 1451 $(DO_SHLIB_CC) 1452 1453$(B)/base/cgame/%.asm: $(CGDIR)/%.c 1454 $(DO_Q3LCC) 1455 1456 1457$(B)/base/game/%.o: $(GDIR)/%.c 1458 $(DO_SHLIB_CC) 1459 1460$(B)/base/game/%.asm: $(GDIR)/%.c 1461 $(DO_Q3LCC) 1462 1463 1464$(B)/base/ui/%.o: $(UIDIR)/%.c 1465 $(DO_SHLIB_CC) 1466 1467$(B)/base/ui/%.asm: $(UIDIR)/%.c 1468 $(DO_Q3LCC) 1469 1470 1471$(B)/base/qcommon/%.o: $(CMDIR)/%.c 1472 $(DO_SHLIB_CC) 1473 1474$(B)/base/qcommon/%.asm: $(CMDIR)/%.c 1475 $(DO_Q3LCC) 1476 1477 1478############################################################################# 1479# MISC 1480############################################################################# 1481 1482clean:clean-debug clean-release 1483 $(MAKE) -C $(MASTERDIR) clean 1484 1485clean2: 1486 if [ -d $(B) ];then (find $(B) -name '*.d' -exec rm {} \;)fi 1487 rm -f $(Q3OBJ) $(Q3POBJ) $(Q3POBJ_SMP) $(Q3DOBJ) \ 1488 $(GOBJ) $(CGOBJ) $(UIOBJ) \ 1489 $(GVMOBJ) $(CGVMOBJ) $(UIVMOBJ) 1490 rm -f $(TARGETS) 1491 1492clean-debug: 1493 $(MAKE) clean2 B=$(BD) CFLAGS="$(DEBUG_CFLAGS)" 1494 1495clean-release: 1496 $(MAKE) clean2 B=$(BR) CFLAGS="$(RELEASE_CFLAGS)" 1497 1498toolsclean: 1499 $(MAKE) -C $(TOOLSDIR)/asm clean uninstall 1500 $(MAKE) -C $(TOOLSDIR)/lcc clean uninstall 1501 1502distclean: clean toolsclean 1503 rm -rf $(BUILD_DIR) 1504 1505installer: build_release 1506 $(MAKE) VERSION=$(VERSION) -C $(LOKISETUPDIR) 1507 1508dist: 1509 rm -rf tremulous-$(SVN_VERSION) 1510 svn export . tremulous-$(SVN_VERSION) 1511 tar --force-local -cjf tremulous-$(SVN_VERSION).tar.bz2 tremulous-$(SVN_VERSION) 1512 rm -rf tremulous-$(SVN_VERSION) 1513 1514############################################################################# 1515# DEPENDENCIES 1516############################################################################# 1517 1518D_FILES=$(shell find . -name '*.d') 1519 1520$(B)/base/vm/vm.d: $(GOBJ) $(CGOBJ) $(UIOBJ) 1521 cat $(^:%.o=%.d) | sed -e 's/\.o/\.asm/g' > $@ 1522 1523qvmdeps: $(B)/base/vm/vm.d 1524 1525ifneq ($(strip $(D_FILES)),) 1526 include $(D_FILES) 1527endif 1528 1529.PHONY: release debug clean distclean copyfiles installer dist 1530