1# 2# ioq3 Makefile (with Open Arena modifications) 3# 4# GNU Make required 5# 6 7COMPILE_PLATFORM=$(shell uname|sed -e s/_.*//|tr '[:upper:]' '[:lower:]'|sed -e 's/\//_/g') 8 9COMPILE_ARCH=$(shell uname -m | sed -e s/i.86/i386/) 10 11ifeq ($(COMPILE_PLATFORM),sunos) 12 # Solaris uname and GNU uname differ 13 COMPILE_ARCH=$(shell uname -p | sed -e s/i.86/i386/) 14endif 15ifeq ($(COMPILE_PLATFORM),darwin) 16 # Apple does some things a little differently... 17 COMPILE_ARCH=$(shell uname -p | sed -e s/i.86/i386/) 18endif 19ifeq ($(COMPILE_PLATFORM),freebsd) 20 # FreeBSD does some things a little differently... 21 COMPILE_ARCH=$(shell uname -p) 22endif 23 24ifeq ($(COMPILE_PLATFORM),mingw32) 25 ifeq ($(COMPILE_ARCH),i386) 26 COMPILE_ARCH=x86 27 endif 28endif 29 30ifndef BUILD_STANDALONE 31 BUILD_STANDALONE = 32endif 33ifndef BUILD_CLIENT 34 BUILD_CLIENT = 35endif 36ifndef BUILD_CLIENT_SMP 37 BUILD_CLIENT_SMP = 38endif 39ifndef BUILD_SERVER 40 BUILD_SERVER = 41endif 42ifndef BUILD_GAME_SO 43 BUILD_GAME_SO = 0 44endif 45ifndef BUILD_GAME_QVM 46 BUILD_GAME_QVM = 0 47endif 48ifndef BUILD_MISSIONPACK 49 BUILD_MISSIONPACK= 0 50endif 51 52ifneq ($(PLATFORM),darwin) 53 BUILD_CLIENT_SMP = 0 54endif 55 56############################################################################# 57# 58# If you require a different configuration from the defaults below, create a 59# new file named "Makefile.local" in the same directory as this file and define 60# your parameters there. This allows you to change configuration without 61# causing problems with keeping up to date with the repository. 62# 63############################################################################# 64-include Makefile.local 65 66ifndef PLATFORM 67PLATFORM=$(COMPILE_PLATFORM) 68endif 69export PLATFORM 70 71ifeq ($(COMPILE_ARCH),powerpc) 72 COMPILE_ARCH=ppc 73endif 74ifeq ($(COMPILE_ARCH),powerpc64) 75 COMPILE_ARCH=ppc64 76endif 77ifeq ($(COMPILE_ARCH),powerpc64le) 78 COMPILE_ARCH=ppc64le 79endif 80 81ifndef ARCH 82ARCH=$(COMPILE_ARCH) 83endif 84export ARCH 85 86ifneq ($(PLATFORM),$(COMPILE_PLATFORM)) 87 CROSS_COMPILING=1 88else 89 CROSS_COMPILING=0 90 91 ifneq ($(ARCH),$(COMPILE_ARCH)) 92 CROSS_COMPILING=1 93 endif 94endif 95export CROSS_COMPILING 96 97ifndef COPYDIR 98COPYDIR="/usr/local/games/openarena" 99endif 100 101ifndef COPYBINDIR 102COPYBINDIR=$(COPYDIR) 103endif 104 105ifndef MOUNT_DIR 106MOUNT_DIR=code 107endif 108 109ifndef BUILD_DIR 110BUILD_DIR=build 111endif 112 113ifndef TEMPDIR 114TEMPDIR=/tmp 115endif 116 117ifndef GENERATE_DEPENDENCIES 118GENERATE_DEPENDENCIES=1 119endif 120 121ifndef USE_OPENAL 122USE_OPENAL=1 123endif 124 125#Sago: Not a standard option in openarena anymore 126USE_OPENAL_DLOPEN=1 127 128ifndef USE_OPENAL_DLOPEN 129USE_OPENAL_DLOPEN=1 130endif 131 132ifndef USE_CURL 133USE_CURL=1 134endif 135 136ifndef USE_CURL_DLOPEN 137 ifeq ($(PLATFORM),mingw32) 138 USE_CURL_DLOPEN=0 139 else 140 USE_CURL_DLOPEN=1 141 endif 142endif 143 144ifndef USE_CODEC_VORBIS 145USE_CODEC_VORBIS=1 146endif 147 148ifndef USE_MUMBLE 149USE_MUMBLE=1 150endif 151 152ifndef USE_VOIP 153USE_VOIP=1 154endif 155 156ifndef USE_INTERNAL_SPEEX 157USE_INTERNAL_SPEEX=1 158endif 159 160ifndef USE_INTERNAL_ZLIB 161USE_INTERNAL_ZLIB=1 162endif 163 164ifndef USE_LOCAL_HEADERS 165USE_LOCAL_HEADERS=1 166endif 167 168ifndef DEBUG_CFLAGS 169DEBUG_CFLAGS=-g -O0 170endif 171 172############################################################################# 173 174BD=$(BUILD_DIR)/debug-$(PLATFORM)-$(ARCH) 175BR=$(BUILD_DIR)/release-$(PLATFORM)-$(ARCH) 176CDIR=$(MOUNT_DIR)/client 177SDIR=$(MOUNT_DIR)/server 178RDIR=$(MOUNT_DIR)/renderer 179CMDIR=$(MOUNT_DIR)/qcommon 180SDLDIR=$(MOUNT_DIR)/sdl 181ASMDIR=$(MOUNT_DIR)/asm 182SYSDIR=$(MOUNT_DIR)/sys 183GDIR=$(MOUNT_DIR)/game 184CGDIR=$(MOUNT_DIR)/cgame 185BLIBDIR=$(MOUNT_DIR)/botlib 186NDIR=$(MOUNT_DIR)/null 187UIDIR=$(MOUNT_DIR)/ui 188Q3UIDIR=$(MOUNT_DIR)/q3_ui 189JPDIR=$(MOUNT_DIR)/jpeg-6b 190SPEEXDIR=$(MOUNT_DIR)/libspeex 191ZDIR=$(MOUNT_DIR)/zlib 192Q3ASMDIR=$(MOUNT_DIR)/tools/asm 193LBURGDIR=$(MOUNT_DIR)/tools/lcc/lburg 194Q3CPPDIR=$(MOUNT_DIR)/tools/lcc/cpp 195Q3LCCETCDIR=$(MOUNT_DIR)/tools/lcc/etc 196Q3LCCSRCDIR=$(MOUNT_DIR)/tools/lcc/src 197LOKISETUPDIR=misc/setup 198NSISDIR=misc/nsis 199SDLHDIR=$(MOUNT_DIR)/SDL12 200LIBSDIR=$(MOUNT_DIR)/libs 201 202bin_path=$(shell which $(1) 2> /dev/null) 203 204# We won't need this if we only build the server 205ifneq ($(BUILD_CLIENT),0) 206 # set PKG_CONFIG_PATH to influence this, e.g. 207 # PKG_CONFIG_PATH=/opt/cross/i386-mingw32msvc/lib/pkgconfig 208 ifneq ($(call bin_path, pkg-config),) 209 CURL_CFLAGS=$(shell pkg-config --silence-errors --cflags libcurl) 210 CURL_LIBS=$(shell pkg-config --silence-errors --libs libcurl) 211 OPENAL_CFLAGS=$(shell pkg-config --silence-errors --cflags openal) 212 OPENAL_LIBS=$(shell pkg-config --silence-errors --libs openal) 213 SDL_CFLAGS=$(shell pkg-config --silence-errors --cflags sdl|sed 's/-Dmain=SDL_main//') 214 SDL_LIBS=$(shell pkg-config --silence-errors --libs sdl) 215 VORBIS_CFLAGS=$(shell pkg-config --silence-errors --cflags vorbis vorbisfile) 216 VORBIS_LIBS=$(shell pkg-config --silence-errors --libs vorbis vorbisfile) 217 endif 218 # Use sdl-config if all else fails 219 ifeq ($(SDL_CFLAGS),) 220 ifneq ($(call bin_path, sdl-config),) 221 SDL_CFLAGS=$(shell sdl-config --cflags) 222 SDL_LIBS=$(shell sdl-config --libs) 223 endif 224 endif 225endif 226 227# version info 228VERSION=1.36 229 230USE_SVN= 231ifeq ($(wildcard .svn),.svn) 232 SVN_REV=$(shell LANG=C svnversion .) 233 ifneq ($(SVN_REV),) 234 VERSION:=$(VERSION)_SVN$(SVN_REV) 235 USE_SVN=1 236 endif 237else 238ifeq ($(wildcard .git/svn/.metadata),.git/svn/.metadata) 239 SVN_REV=$(shell LANG=C git svn info | awk '$$1 == "Revision:" {print $$2; exit 0}') 240 ifneq ($(SVN_REV),) 241 VERSION:=$(VERSION)_SVN$(SVN_REV) 242 endif 243endif 244endif 245 246 247############################################################################# 248# SETUP AND BUILD -- LINUX 249############################################################################# 250 251## Defaults 252LIB=lib 253 254INSTALL=install 255MKDIR=mkdir 256 257ifneq (,$(findstring "$(PLATFORM)", "linux" "gnu_kfreebsd" "kfreebsd-gnu")) 258 259 ifeq ($(ARCH),axp) 260 ARCH=alpha 261 else 262 ifeq ($(ARCH),x86_64) 263 LIB=lib64 264 else 265 ifeq ($(ARCH),ppc64) 266 LIB=lib64 267 else 268 ifeq ($(ARCH),s390x) 269 LIB=lib64 270 endif 271 endif 272 endif 273 endif 274 275 BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \ 276 -pipe -DUSE_ICON 277 CLIENT_CFLAGS = $(SDL_CFLAGS) 278 SERVER_CFLAGS = 279 280 ifeq ($(USE_OPENAL),1) 281 CLIENT_CFLAGS += -DUSE_OPENAL 282 ifeq ($(USE_OPENAL_DLOPEN),1) 283 CLIENT_CFLAGS += -DUSE_OPENAL_DLOPEN 284 endif 285 endif 286 287 ifeq ($(USE_CURL),1) 288 CLIENT_CFLAGS += -DUSE_CURL 289 ifeq ($(USE_CURL_DLOPEN),1) 290 CLIENT_CFLAGS += -DUSE_CURL_DLOPEN 291 endif 292 endif 293 294 ifeq ($(USE_CODEC_VORBIS),1) 295 CLIENT_CFLAGS += -DUSE_CODEC_VORBIS 296 endif 297 298 OPTIMIZEVM = -O3 -funroll-loops -fomit-frame-pointer 299 OPTIMIZE = $(OPTIMIZEVM) -ffast-math 300 301 ifeq ($(ARCH),x86_64) 302 OPTIMIZEVM = -O3 -fomit-frame-pointer -funroll-loops \ 303 -falign-loops=2 -falign-jumps=2 -falign-functions=2 \ 304 -fstrength-reduce 305 OPTIMIZE = $(OPTIMIZEVM) -ffast-math 306 HAVE_VM_COMPILED = true 307 else 308 ifeq ($(ARCH),i386) 309 OPTIMIZEVM = -O3 -march=i586 -fomit-frame-pointer \ 310 -funroll-loops -falign-loops=2 -falign-jumps=2 \ 311 -falign-functions=2 -fstrength-reduce 312 OPTIMIZE = $(OPTIMIZEVM) -ffast-math 313 HAVE_VM_COMPILED=true 314 else 315 ifeq ($(ARCH),ppc) 316 BASE_CFLAGS += -maltivec 317 HAVE_VM_COMPILED=true 318 endif 319 ifeq ($(ARCH),ppc64) 320 BASE_CFLAGS += -maltivec 321 HAVE_VM_COMPILED=true 322 endif 323 ifeq ($(ARCH),sparc) 324 OPTIMIZE += -mtune=ultrasparc3 -mv8plus 325 OPTIMIZEVM += -mtune=ultrasparc3 -mv8plus 326 HAVE_VM_COMPILED=true 327 endif 328 ifeq ($(ARCH),alpha) 329 # According to http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=410555 330 # -ffast-math will cause the client to die with SIGFPE on Alpha 331 OPTIMIZE = $(OPTIMIZEVM) 332 endif 333 endif 334 endif 335 336 ifneq ($(HAVE_VM_COMPILED),true) 337 BASE_CFLAGS += -DNO_VM_COMPILED 338 endif 339 340 SHLIBEXT=so 341 SHLIBCFLAGS=-fPIC -fvisibility=hidden 342 SHLIBLDFLAGS=-shared $(LDFLAGS) 343 344 THREAD_LIBS=-lpthread 345 LIBS=-ldl -lm 346 347 CLIENT_LIBS=$(SDL_LIBS) -lGL 348 349 ifeq ($(USE_OPENAL),1) 350 ifneq ($(USE_OPENAL_DLOPEN),1) 351 CLIENT_LIBS += -lopenal 352 endif 353 endif 354 355 ifeq ($(USE_CURL),1) 356 ifneq ($(USE_CURL_DLOPEN),1) 357 CLIENT_LIBS += -lcurl 358 endif 359 endif 360 361 ifeq ($(USE_CODEC_VORBIS),1) 362#Sago: Here I get vorbis to compile in Windows: 363 ifeq ($(PLATFORM),mingw32) 364 CLIENT_LIBS += $(LIBSDIR)/win32/libvorbisfile.a $(LIBSDIR)/win32/libvorbis.a $(LIBSDIR)/win32/libogg.a 365 else 366 CLIENT_LIBS += -lvorbisfile -lvorbis -logg 367 endif 368 endif 369 370 ifeq ($(USE_MUMBLE),1) 371 CLIENT_LIBS += -lrt 372 endif 373 374 ifeq ($(USE_LOCAL_HEADERS),1) 375 CLIENT_CFLAGS += -I$(SDLHDIR)/include 376 endif 377 378 ifeq ($(ARCH),i386) 379 # linux32 make ... 380 BASE_CFLAGS += -m32 381 else 382 ifeq ($(ARCH),ppc64) 383 BASE_CFLAGS += -m64 384 endif 385 endif 386else # ifeq Linux 387 388############################################################################# 389# SETUP AND BUILD -- MAC OS X 390############################################################################# 391 392ifeq ($(PLATFORM),darwin) 393 HAVE_VM_COMPILED=true 394 LIBS = -framework Cocoa 395 CLIENT_LIBS= 396 OPTIMIZEVM= 397 398 BASE_CFLAGS = -Wall -Wimplicit -Wstrict-prototypes 399 CLIENT_CFLAGS = 400 SERVER_CFLAGS = 401 402 ifeq ($(ARCH),ppc) 403 BASE_CFLAGS += -faltivec 404 OPTIMIZEVM += -O3 405 endif 406 ifeq ($(ARCH),ppc64) 407 BASE_CFLAGS += -faltivec 408 endif 409 ifeq ($(ARCH),i386) 410 OPTIMIZEVM += -march=prescott -mfpmath=sse 411 # x86 vm will crash without -mstackrealign since MMX instructions will be 412 # used no matter what and they corrupt the frame pointer in VM calls 413 BASE_CFLAGS += -mstackrealign 414 endif 415 416 BASE_CFLAGS += -fno-strict-aliasing -DMACOS_X -fno-common -pipe 417 418 ifeq ($(USE_OPENAL),1) 419 BASE_CFLAGS += -DUSE_OPENAL 420 ifneq ($(USE_OPENAL_DLOPEN),1) 421 CLIENT_LIBS += -framework OpenAL 422 else 423 CLIENT_CFLAGS += -DUSE_OPENAL_DLOPEN 424 endif 425 endif 426 427 ifeq ($(USE_CURL),1) 428 CLIENT_CFLAGS += -DUSE_CURL 429 ifneq ($(USE_CURL_DLOPEN),1) 430 CLIENT_LIBS += -lcurl 431 else 432 CLIENT_CFLAGS += -DUSE_CURL_DLOPEN 433 endif 434 endif 435 436 ifeq ($(USE_CODEC_VORBIS),1) 437 CLIENT_CFLAGS += -DUSE_CODEC_VORBIS 438 ifeq ($(PLATFORM),mingw32) 439 CLIENT_LIBS += $(LIBSDIR)/win32/libvorbisfile.a $(LIBSDIR)/win32/libvorbis.a $(LIBSDIR)/win32/libogg.a 440 else 441 CLIENT_LIBS += -lvorbisfile -lvorbis -logg 442 endif 443 endif 444 445 BASE_CFLAGS += -D_THREAD_SAFE=1 446 447 ifeq ($(USE_LOCAL_HEADERS),1) 448 BASE_CFLAGS += -I$(SDLHDIR)/include 449 endif 450 451 # We copy sdlmain before ranlib'ing it so that subversion doesn't think 452 # the file has been modified by each build. 453 LIBSDLMAIN=$(B)/libSDLmain.a 454 LIBSDLMAINSRC=$(LIBSDIR)/macosx/libSDLmain.a 455 CLIENT_LIBS += -framework Cocoa -framework IOKit -framework OpenGL \ 456 $(LIBSDIR)/macosx/libSDL-1.2.0.dylib 457 RENDERER_LIBS += -framework OpenGL $(LIBSDIR)/macosx/libSDL-1.2.0.dylib 458 OPTIMIZEVM += -falign-loops=16 459 OPTIMIZE = $(OPTIMIZEVM) -ffast-math 460 461 ifneq ($(HAVE_VM_COMPILED),true) 462 BASE_CFLAGS += -DNO_VM_COMPILED 463 endif 464 465 SHLIBEXT=dylib 466 SHLIBCFLAGS=-fPIC -fno-common 467 SHLIBLDFLAGS=-dynamiclib $(LDFLAGS) 468 469 NOTSHLIBCFLAGS=-mdynamic-no-pic 470 471 TOOLS_CFLAGS += -DMACOS_X 472 473else # ifeq darwin 474 475 476############################################################################# 477# SETUP AND BUILD -- MINGW32 478############################################################################# 479 480ifeq ($(PLATFORM),mingw32) 481 482 # Some MinGW installations define CC to cc, but don't actually provide cc, 483 # so explicitly use gcc instead (which is the only option anyway) 484 ifeq ($(call bin_path, $(CC)),) 485 CC=gcc 486 endif 487 488 ifndef WINDRES 489 WINDRES=windres 490 endif 491 492 ARCH=x86 493 494 BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \ 495 -DUSE_ICON 496 CLIENT_CFLAGS = 497 SERVER_CFLAGS = 498 499 # In the absence of wspiapi.h, require Windows XP or later 500 ifeq ($(shell test -e $(CMDIR)/wspiapi.h; echo $$?),1) 501 BASE_CFLAGS += -DWINVER=0x501 502 endif 503 504 ifeq ($(USE_OPENAL),1) 505 CLIENT_CFLAGS += -DUSE_OPENAL 506 CLIENT_CFLAGS += $(OPENAL_CFLAGS) 507 ifeq ($(USE_OPENAL_DLOPEN),1) 508 CLIENT_CFLAGS += -DUSE_OPENAL_DLOPEN 509 else 510 CLIENT_LDFLAGS += $(OPENAL_LDFLAGS) 511 endif 512 endif 513 514 ifeq ($(USE_CODEC_VORBIS),1) 515 CLIENT_CFLAGS += -DUSE_CODEC_VORBIS 516 endif 517 518 OPTIMIZEVM = -O3 -march=i586 -fno-omit-frame-pointer \ 519 -falign-loops=2 -funroll-loops -falign-jumps=2 -falign-functions=2 \ 520 -fstrength-reduce 521 OPTIMIZE = $(OPTIMIZEVM) -ffast-math 522 523 HAVE_VM_COMPILED = true 524 525 SHLIBEXT=dll 526 SHLIBCFLAGS= 527 SHLIBLDFLAGS=-shared $(LDFLAGS) 528 529 BINEXT=.exe 530 531 LIBS= -lws2_32 -lwinmm -lpsapi 532 CLIENT_LDFLAGS = -mwindows 533 CLIENT_LIBS = -lgdi32 -lole32 -lopengl32 534 535 ifeq ($(USE_CURL),1) 536 CLIENT_CFLAGS += -DUSE_CURL 537 CLIENT_CFLAGS += $(CURL_CFLAGS) 538 ifneq ($(USE_CURL_DLOPEN),1) 539 ifeq ($(USE_LOCAL_HEADERS),1) 540 CLIENT_CFLAGS += -DCURL_STATICLIB 541 CLIENT_LIBS += $(LIBSDIR)/win32/libcurl.a 542 else 543 CLIENT_LIBS += $(CURL_LIBS) 544 endif 545 endif 546 endif 547 548 ifeq ($(USE_CODEC_VORBIS),1) 549 ifeq ($(PLATFORM),mingw32) 550 CLIENT_LIBS += $(LIBSDIR)/win32/libvorbisfile.a $(LIBSDIR)/win32/libvorbis.a $(LIBSDIR)/win32/libogg.a 551 else 552 CLIENT_LIBS += -lvorbisfile -lvorbis -logg 553 endif 554 endif 555 556 ifeq ($(ARCH),x86) 557 # build 32bit 558 BASE_CFLAGS += -m32 559 endif 560 561 # libmingw32 must be linked before libSDLmain 562 CLIENT_LIBS += -lmingw32 563 ifeq ($(USE_LOCAL_HEADERS),1) 564 CLIENT_CFLAGS += -I$(SDLHDIR)/include 565 CLIENT_LIBS += $(LIBSDIR)/win32/libSDLmain.a \ 566 $(LIBSDIR)/win32/libSDL.dll.a 567 else 568 CLIENT_CFLAGS += $(SDL_CFLAGS) 569 CLIENT_LIBS += $(SDL_LIBS) 570 endif 571 572 BUILD_CLIENT_SMP = 0 573 574else # ifeq mingw32 575 576############################################################################# 577# SETUP AND BUILD -- FREEBSD 578############################################################################# 579 580ifeq ($(PLATFORM),freebsd) 581 582 # system integration 583 ifndef DEFAULT_LIBDIR 584 DEFAULT_LIBDIR = /usr/local/lib/openarena 585 endif 586 587 # flags 588 BASE_CFLAGS = $(shell env MACHINE_ARCH=$(ARCH) make -f /dev/null -VCFLAGS) \ 589 -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \ 590 -DDEFAULT_LIBDIR=\\\"$(DEFAULT_LIBDIR)\\\" \ 591 -DUSE_ICON 592 CLIENT_CFLAGS = $(SDL_CFLAGS) 593 SERVER_CFLAGS = 594 HAVE_VM_COMPILED = true 595 596 OPTIMIZEVM = -O3 -funroll-loops -fomit-frame-pointer 597 OPTIMIZE = $(OPTIMIZEVM) -ffast-math 598 599 SHLIBEXT=so 600 SHLIBCFLAGS=-fPIC 601 SHLIBLDFLAGS=-shared $(LDFLAGS) 602 603 THREAD_LIBS=-lpthread 604 # don't need -ldl (FreeBSD) 605 LIBS=-lm 606 607 CLIENT_LIBS = 608 609 CLIENT_LIBS += $(SDL_LIBS) -lGL 610 611 # optional features/libraries 612 ifeq ($(USE_OPENAL),1) 613 CLIENT_CFLAGS += -DUSE_OPENAL $(OPENAL_CFLAGS) 614 CLIENT_LIBS += $(THREAD_LIBS) $(OPENAL_LIBS) 615 ifeq ($(USE_OPENAL_DLOPEN),1) 616 CLIENT_CFLAGS += -DUSE_OPENAL_DLOPEN 617 endif 618 endif 619 620 ifeq ($(USE_CURL),1) 621 CLIENT_CFLAGS += -DUSE_CURL $(CURL_CFLAGS) 622 CLIENT_LIBS += $(CURL_LIBS) 623 ifeq ($(USE_CURL_DLOPEN),1) 624 CLIENT_CFLAGS += -DUSE_CURL_DLOPEN 625 endif 626 endif 627 628 ifeq ($(USE_CODEC_VORBIS),1) 629 CLIENT_CFLAGS += -DUSE_CODEC_VORBIS $(VORBIS_CFLAGS) 630 CLIENT_LIBS += $(VORBIS_LIBS) 631 endif 632 633 # cross-compiling tweaks 634 ifeq ($(ARCH),i386) 635 ifeq ($(CROSS_COMPILING),1) 636 BASE_CFLAGS += -m32 637 endif 638 endif 639 ifeq ($(ARCH),amd64) 640 ifeq ($(CROSS_COMPILING),1) 641 BASE_CFLAGS += -m64 642 endif 643 endif 644 645else # ifeq freebsd 646 647############################################################################# 648# SETUP AND BUILD -- OPENBSD 649############################################################################# 650 651ifeq ($(PLATFORM),openbsd) 652 653 #default to i386, no tests done on anything else 654 ARCH=i386 655 656 BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \ 657 -DUSE_ICON 658 CLIENT_CFLAGS = $(SDL_CFLAGS) 659 SERVER_CFLAGS = 660 661 ifeq ($(USE_OPENAL),1) 662 CLIENT_CFLAGS += -DUSE_OPENAL 663 ifeq ($(USE_OPENAL_DLOPEN),1) 664 CLIENT_CFLAGS += -DUSE_OPENAL_DLOPEN 665 endif 666 endif 667 668 ifeq ($(USE_CODEC_VORBIS),1) 669 CLIENT_CFLAGS += -DUSE_CODEC_VORBIS 670 endif 671 672 ifeq ($(USE_CURL),1) 673 CLIENT_CFLAGS += -DUSE_CURL $(CURL_CFLAGS) 674 USE_CURL_DLOPEN=0 675 endif 676 677 BASE_CFLAGS += -DNO_VM_COMPILED 678 HAVE_VM_COMPILED=false 679 680 SHLIBEXT=so 681 SHLIBNAME=.$(SHLIBEXT) 682 SHLIBCFLAGS=-fPIC 683 SHLIBLDFLAGS=-shared $(LDFLAGS) 684 685 THREAD_LIBS=-pthread 686 LIBS=-lm 687 688 CLIENT_LIBS = 689 690 CLIENT_LIBS += $(SDL_LIBS) -lGL 691 692 ifeq ($(USE_OPENAL),1) 693 ifneq ($(USE_OPENAL_DLOPEN),1) 694 CLIENT_LIBS += $(THREAD_LIBS) -lossaudio -lopenal 695 endif 696 endif 697 698 ifeq ($(USE_CODEC_VORBIS),1) 699 ifeq ($(PLATFORM),mingw32) 700 CLIENT_LIBS += $(LIBSDIR)/win32/libvorbisfile.a $(LIBSDIR)/win32/libvorbis.a $(LIBSDIR)/win32/libogg.a 701 else 702 CLIENT_LIBS += -lvorbisfile -lvorbis -logg 703 endif 704 endif 705 706 ifeq ($(USE_CURL),1) 707 ifneq ($(USE_CURL_DLOPEN),1) 708 CLIENT_LIBS += -lcurl 709 endif 710 endif 711 712else # ifeq openbsd 713 714############################################################################# 715# SETUP AND BUILD -- NETBSD 716############################################################################# 717 718ifeq ($(PLATFORM),netbsd) 719 720 ifeq ($(shell uname -m),i386) 721 ARCH=i386 722 endif 723 724 LIBS=-lm 725 SHLIBEXT=so 726 SHLIBCFLAGS=-fPIC 727 SHLIBLDFLAGS=-shared $(LDFLAGS) 728 THREAD_LIBS=-lpthread 729 730 BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes 731 CLIENT_CFLAGS = 732 SERVER_CFLAGS = 733 734 ifneq ($(ARCH),i386) 735 BASE_CFLAGS += -DNO_VM_COMPILED 736 endif 737 738 BUILD_CLIENT = 0 739 BUILD_GAME_QVM = 0 740 741else # ifeq netbsd 742 743############################################################################# 744# SETUP AND BUILD -- IRIX 745############################################################################# 746 747ifeq ($(PLATFORM),irix64) 748 749 ARCH=mips #default to MIPS 750 751 CC = c99 752 MKDIR = mkdir -p 753 754 BASE_CFLAGS=-Dstricmp=strcasecmp -Xcpluscomm -woff 1185 \ 755 -I. -I$(ROOT)/usr/include -DNO_VM_COMPILED 756 CLIENT_CFLAGS = $(SDL_CFLAGS) 757 OPTIMIZE = -O3 758 759 SHLIBEXT=so 760 SHLIBCFLAGS= 761 SHLIBLDFLAGS=-shared 762 763 LIBS=-ldl -lm -lgen 764 # FIXME: The X libraries probably aren't necessary? 765 CLIENT_LIBS=-L/usr/X11/$(LIB) $(SDL_LIBS) -lGL \ 766 -lX11 -lXext -lm 767 768else # ifeq IRIX 769 770############################################################################# 771# SETUP AND BUILD -- SunOS 772############################################################################# 773 774ifeq ($(PLATFORM),sunos) 775 776 CC=gcc 777 INSTALL=ginstall 778 MKDIR=gmkdir 779 COPYDIR="/usr/local/share/games/quake3" 780 781 ifneq (,$(findstring i86pc,$(shell uname -m))) 782 ARCH=i386 783 else #default to sparc 784 ARCH=sparc 785 endif 786 787 ifneq ($(ARCH),i386) 788 ifneq ($(ARCH),sparc) 789 $(error arch $(ARCH) is currently not supported) 790 endif 791 endif 792 793 BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \ 794 -pipe -DUSE_ICON 795 CLIENT_CFLAGS = $(SDL_CFLAGS) 796 SERVER_CFLAGS = 797 798 OPTIMIZEVM = -O3 -funroll-loops 799 800 ifeq ($(ARCH),sparc) 801 OPTIMIZEVM += -O3 \ 802 -fstrength-reduce -falign-functions=2 \ 803 -mtune=ultrasparc3 -mv8plus -mno-faster-structs 804 HAVE_VM_COMPILED=true 805 else 806 ifeq ($(ARCH),i386) 807 OPTIMIZEVM += -march=i586 -fomit-frame-pointer \ 808 -falign-loops=2 -falign-jumps=2 \ 809 -falign-functions=2 -fstrength-reduce 810 HAVE_VM_COMPILED=true 811 BASE_CFLAGS += -m32 812 CLIENT_CFLAGS += -I/usr/X11/include/NVIDIA 813 CLIENT_LDFLAGS += -L/usr/X11/lib/NVIDIA -R/usr/X11/lib/NVIDIA 814 endif 815 endif 816 817 OPTIMIZE = $(OPTIMIZEVM) -ffast-math 818 819 ifneq ($(HAVE_VM_COMPILED),true) 820 BASE_CFLAGS += -DNO_VM_COMPILED 821 endif 822 823 SHLIBEXT=so 824 SHLIBCFLAGS=-fPIC 825 SHLIBLDFLAGS=-shared $(LDFLAGS) 826 827 THREAD_LIBS=-lpthread 828 LIBS=-lsocket -lnsl -ldl -lm 829 830 BOTCFLAGS=-O0 831 832 CLIENT_LIBS +=$(SDL_LIBS) -lGL -lX11 -lXext -liconv -lm 833 834else # ifeq sunos 835 836############################################################################# 837# SETUP AND BUILD -- GENERIC 838############################################################################# 839 BASE_CFLAGS=-DNO_VM_COMPILED 840 OPTIMIZE = -O3 841 842 SHLIBEXT=so 843 SHLIBCFLAGS=-fPIC 844 SHLIBLDFLAGS=-shared 845 846endif #Linux 847endif #darwin 848endif #mingw32 849endif #FreeBSD 850endif #OpenBSD 851endif #NetBSD 852endif #IRIX 853endif #SunOS 854 855TARGETS = 856 857ifndef FULLBINEXT 858 FULLBINEXT=.$(ARCH)$(BINEXT) 859endif 860 861ifndef SHLIBNAME 862 SHLIBNAME=$(ARCH).$(SHLIBEXT) 863endif 864 865ifneq ($(BUILD_SERVER),0) 866 TARGETS += $(B)/oa_ded$(FULLBINEXT) 867endif 868 869ifneq ($(BUILD_CLIENT),0) 870 TARGETS += $(B)/openarena$(FULLBINEXT) 871 ifneq ($(BUILD_CLIENT_SMP),0) 872 TARGETS += $(B)/openarena-smp$(FULLBINEXT) 873 endif 874endif 875 876ifneq ($(BUILD_GAME_SO),0) 877 TARGETS += \ 878 $(B)/baseoa/cgame$(SHLIBNAME) \ 879 $(B)/baseoa/qagame$(SHLIBNAME) \ 880 $(B)/baseoa/ui$(SHLIBNAME) 881 ifneq ($(BUILD_MISSIONPACK),0) 882 TARGETS += \ 883 $(B)/missionpack/cgame$(SHLIBNAME) \ 884 $(B)/missionpack/qagame$(SHLIBNAME) \ 885 $(B)/missionpack/ui$(SHLIBNAME) 886 endif 887endif 888 889ifneq ($(BUILD_GAME_QVM),0) 890 ifneq ($(CROSS_COMPILING),1) 891 TARGETS += \ 892 $(B)/baseoa/vm/cgame.qvm \ 893 $(B)/baseoa/vm/qagame.qvm \ 894 $(B)/baseoa/vm/ui.qvm 895 ifneq ($(BUILD_MISSIONPACK),0) 896 TARGETS += \ 897 $(B)/missionpack/vm/qagame.qvm \ 898 $(B)/missionpack/vm/cgame.qvm \ 899 $(B)/missionpack/vm/ui.qvm 900 endif 901 endif 902endif 903 904ifeq ($(USE_MUMBLE),1) 905 CLIENT_CFLAGS += -DUSE_MUMBLE 906endif 907 908ifeq ($(USE_VOIP),1) 909 CLIENT_CFLAGS += -DUSE_VOIP 910 SERVER_CFLAGS += -DUSE_VOIP 911 ifeq ($(USE_INTERNAL_SPEEX),1) 912 CLIENT_CFLAGS := -I$(SPEEXDIR)/include -DFLOATING_POINT -DUSE_ALLOCA $(CLIENT_CFLAGS) 913 else 914 CLIENT_LIBS += -lspeex -lspeexdsp 915 endif 916endif 917 918ifeq ($(USE_INTERNAL_ZLIB),1) 919 BASE_CFLAGS += -DNO_GZIP 920 ifneq ($(USE_LOCAL_HEADERS),1) 921 BASE_CFLAGS += -I$(ZDIR) 922 endif 923else 924 LIBS += -lz 925endif 926 927ifdef DEFAULT_BASEDIR 928 BASE_CFLAGS += -DDEFAULT_BASEDIR=\\\"$(DEFAULT_BASEDIR)\\\" 929endif 930 931ifeq ($(USE_LOCAL_HEADERS),1) 932 BASE_CFLAGS += -DUSE_LOCAL_HEADERS 933endif 934 935ifeq ($(BUILD_STANDALONE),1) 936 BASE_CFLAGS += -DSTANDALONE 937endif 938 939ifeq ($(GENERATE_DEPENDENCIES),1) 940 DEPEND_CFLAGS = -MMD 941else 942 DEPEND_CFLAGS = 943endif 944 945ifeq ($(NO_STRIP),1) 946 STRIP_FLAG = 947else 948 STRIP_FLAG = -s 949endif 950 951BASE_CFLAGS += -DPRODUCT_VERSION=\\\"$(VERSION)\\\" 952 953ifeq ($(V),1) 954echo_cmd=@: 955Q= 956else 957echo_cmd=@echo 958Q=@ 959endif 960 961define DO_CC 962$(echo_cmd) "CC $<" 963$(Q)$(CC) $(NOTSHLIBCFLAGS) $(CFLAGS) $(CLIENT_CFLAGS) $(OPTIMIZE) -o $@ -c $< 964endef 965 966define DO_SMP_CC 967$(echo_cmd) "SMP_CC $<" 968$(Q)$(CC) $(NOTSHLIBCFLAGS) $(CFLAGS) $(CLIENT_CFLAGS) $(OPTIMIZE) -DSMP -o $@ -c $< 969endef 970 971define DO_BOT_CC 972$(echo_cmd) "BOT_CC $<" 973$(Q)$(CC) $(NOTSHLIBCFLAGS) $(CFLAGS) $(BOTCFLAGS) $(OPTIMIZE) -DBOTLIB -o $@ -c $< 974endef 975 976ifeq ($(GENERATE_DEPENDENCIES),1) 977 DO_QVM_DEP=cat $(@:%.o=%.d) | sed -e 's/\.o/\.asm/g' >> $(@:%.o=%.d) 978endif 979 980define DO_SHLIB_CC 981$(echo_cmd) "SHLIB_CC $<" 982$(Q)$(CC) $(SHLIBCFLAGS) $(CFLAGS) $(OPTIMIZEVM) -o $@ -c $< 983$(Q)$(DO_QVM_DEP) 984endef 985 986define DO_GAME_CC 987$(echo_cmd) "GAME_CC $<" 988$(Q)$(CC) -DQAGAME $(SHLIBCFLAGS) $(CFLAGS) $(OPTIMIZEVM) -o $@ -c $< 989$(Q)$(DO_QVM_DEP) 990endef 991 992define DO_CGAME_CC 993$(echo_cmd) "CGAME_CC $<" 994$(Q)$(CC) -DCGAME $(SHLIBCFLAGS) $(CFLAGS) $(OPTIMIZEVM) -o $@ -c $< 995$(Q)$(DO_QVM_DEP) 996endef 997 998define DO_UI_CC 999$(echo_cmd) "UI_CC $<" 1000$(Q)$(CC) -DUI $(SHLIBCFLAGS) $(CFLAGS) $(OPTIMIZEVM) -o $@ -c $< 1001$(Q)$(DO_QVM_DEP) 1002endef 1003 1004define DO_SHLIB_CC_MISSIONPACK 1005$(echo_cmd) "SHLIB_CC_MISSIONPACK $<" 1006$(Q)$(CC) -DMISSIONPACK $(SHLIBCFLAGS) $(CFLAGS) $(OPTIMIZEVM) -o $@ -c $< 1007$(Q)$(DO_QVM_DEP) 1008endef 1009 1010define DO_GAME_CC_MISSIONPACK 1011$(echo_cmd) "GAME_CC_MISSIONPACK $<" 1012$(Q)$(CC) -DMISSIONPACK -DQAGAME $(SHLIBCFLAGS) $(CFLAGS) $(OPTIMIZEVM) -o $@ -c $< 1013$(Q)$(DO_QVM_DEP) 1014endef 1015 1016define DO_CGAME_CC_MISSIONPACK 1017$(echo_cmd) "CGAME_CC_MISSIONPACK $<" 1018$(Q)$(CC) -DMISSIONPACK -DCGAME $(SHLIBCFLAGS) $(CFLAGS) $(OPTIMIZEVM) -o $@ -c $< 1019$(Q)$(DO_QVM_DEP) 1020endef 1021 1022define DO_UI_CC_MISSIONPACK 1023$(echo_cmd) "UI_CC_MISSIONPACK $<" 1024$(Q)$(CC) -DMISSIONPACK -DUI $(SHLIBCFLAGS) $(CFLAGS) $(OPTIMIZEVM) -o $@ -c $< 1025$(Q)$(DO_QVM_DEP) 1026endef 1027 1028define DO_AS 1029$(echo_cmd) "AS $<" 1030$(Q)$(CC) $(CFLAGS) $(OPTIMIZE) -x assembler-with-cpp -o $@ -c $< 1031endef 1032 1033define DO_DED_CC 1034$(echo_cmd) "DED_CC $<" 1035$(Q)$(CC) $(NOTSHLIBCFLAGS) -DDEDICATED $(CFLAGS) $(SERVER_CFLAGS) $(OPTIMIZE) -o $@ -c $< 1036endef 1037 1038define DO_WINDRES 1039$(echo_cmd) "WINDRES $<" 1040$(Q)$(WINDRES) -i $< -o $@ 1041endef 1042 1043 1044############################################################################# 1045# MAIN TARGETS 1046############################################################################# 1047 1048default: release 1049all: debug release 1050 1051debug: 1052 @$(MAKE) targets B=$(BD) CFLAGS="$(CFLAGS) $(BASE_CFLAGS) $(DEPEND_CFLAGS)" \ 1053 OPTIMIZE="$(DEBUG_CFLAGS)" OPTIMIZEVM="$(DEBUG_CFLAGS)" \ 1054 CLIENT_CFLAGS="$(CLIENT_CFLAGS)" SERVER_CFLAGS="$(SERVER_CFLAGS)" V=$(V) 1055 1056release: 1057 @$(MAKE) targets B=$(BR) CFLAGS="$(CFLAGS) $(BASE_CFLAGS) $(DEPEND_CFLAGS)" \ 1058 OPTIMIZE="-DNDEBUG $(OPTIMIZE)" OPTIMIZEVM="-DNDEBUG $(OPTIMIZEVM)" \ 1059 CLIENT_CFLAGS="$(CLIENT_CFLAGS)" SERVER_CFLAGS="$(SERVER_CFLAGS)" V=$(V) 1060 1061# Create the build directories, check libraries and print out 1062# an informational message, then start building 1063targets: makedirs 1064 @echo "" 1065 @echo "Building openarena in $(B):" 1066 @echo " PLATFORM: $(PLATFORM)" 1067 @echo " ARCH: $(ARCH)" 1068 @echo " VERSION: $(VERSION)" 1069 @echo " COMPILE_PLATFORM: $(COMPILE_PLATFORM)" 1070 @echo " COMPILE_ARCH: $(COMPILE_ARCH)" 1071 @echo " CC: $(CC)" 1072 @echo "" 1073 @echo " CFLAGS:" 1074 -@for i in $(CFLAGS); \ 1075 do \ 1076 echo " $$i"; \ 1077 done 1078 -@for i in $(OPTIMIZE); \ 1079 do \ 1080 echo " $$i"; \ 1081 done 1082 @echo "" 1083 @echo " CLIENT_CFLAGS:" 1084 -@for i in $(CLIENT_CFLAGS); \ 1085 do \ 1086 echo " $$i"; \ 1087 done 1088 @echo "" 1089 @echo " SERVER_CFLAGS:" 1090 -@for i in $(SERVER_CFLAGS); \ 1091 do \ 1092 echo " $$i"; \ 1093 done 1094 @echo "" 1095 @echo " LDFLAGS:" 1096 -@for i in $(LDFLAGS); \ 1097 do \ 1098 echo " $$i"; \ 1099 done 1100 @echo "" 1101 @echo " LIBS:" 1102 -@for i in $(LIBS); \ 1103 do \ 1104 echo " $$i"; \ 1105 done 1106 @echo "" 1107 @echo " CLIENT_LIBS:" 1108 -@for i in $(CLIENT_LIBS); \ 1109 do \ 1110 echo " $$i"; \ 1111 done 1112 @echo "" 1113 @echo " Output:" 1114 -@for i in $(TARGETS); \ 1115 do \ 1116 echo " $$i"; \ 1117 done 1118 @echo "" 1119ifneq ($(TARGETS),) 1120 @$(MAKE) $(TARGETS) V=$(V) 1121endif 1122 1123makedirs: 1124 @if [ ! -d $(BUILD_DIR) ];then $(MKDIR) $(BUILD_DIR);fi 1125 @if [ ! -d $(B) ];then $(MKDIR) $(B);fi 1126 @if [ ! -d $(B)/client ];then $(MKDIR) $(B)/client;fi 1127 @if [ ! -d $(B)/clientsmp ];then $(MKDIR) $(B)/clientsmp;fi 1128 @if [ ! -d $(B)/ded ];then $(MKDIR) $(B)/ded;fi 1129 @if [ ! -d $(B)/baseoa ];then $(MKDIR) $(B)/baseoa;fi 1130 @if [ ! -d $(B)/baseoa/cgame ];then $(MKDIR) $(B)/baseoa/cgame;fi 1131 @if [ ! -d $(B)/baseoa/game ];then $(MKDIR) $(B)/baseoa/game;fi 1132 @if [ ! -d $(B)/baseoa/ui ];then $(MKDIR) $(B)/baseoa/ui;fi 1133 @if [ ! -d $(B)/baseoa/qcommon ];then $(MKDIR) $(B)/baseoa/qcommon;fi 1134 @if [ ! -d $(B)/baseoa/vm ];then $(MKDIR) $(B)/baseoa/vm;fi 1135 @if [ ! -d $(B)/missionpack ];then $(MKDIR) $(B)/missionpack;fi 1136 @if [ ! -d $(B)/missionpack/cgame ];then $(MKDIR) $(B)/missionpack/cgame;fi 1137 @if [ ! -d $(B)/missionpack/game ];then $(MKDIR) $(B)/missionpack/game;fi 1138 @if [ ! -d $(B)/missionpack/ui ];then $(MKDIR) $(B)/missionpack/ui;fi 1139 @if [ ! -d $(B)/missionpack/qcommon ];then $(MKDIR) $(B)/missionpack/qcommon;fi 1140 @if [ ! -d $(B)/missionpack/vm ];then $(MKDIR) $(B)/missionpack/vm;fi 1141 @if [ ! -d $(B)/tools ];then $(MKDIR) $(B)/tools;fi 1142 @if [ ! -d $(B)/tools/asm ];then $(MKDIR) $(B)/tools/asm;fi 1143 @if [ ! -d $(B)/tools/etc ];then $(MKDIR) $(B)/tools/etc;fi 1144 @if [ ! -d $(B)/tools/rcc ];then $(MKDIR) $(B)/tools/rcc;fi 1145 @if [ ! -d $(B)/tools/cpp ];then $(MKDIR) $(B)/tools/cpp;fi 1146 @if [ ! -d $(B)/tools/lburg ];then $(MKDIR) $(B)/tools/lburg;fi 1147 1148############################################################################# 1149# QVM BUILD TOOLS 1150############################################################################# 1151 1152TOOLS_OPTIMIZE = -g -O1 -Wall -fno-strict-aliasing 1153TOOLS_CFLAGS += $(TOOLS_OPTIMIZE) \ 1154 -DTEMPDIR=\"$(TEMPDIR)\" -DSYSTEM=\"\" \ 1155 -I$(Q3LCCSRCDIR) \ 1156 -I$(LBURGDIR) 1157TOOLS_LIBS = 1158TOOLS_LDFLAGS = 1159 1160ifeq ($(GENERATE_DEPENDENCIES),1) 1161 TOOLS_CFLAGS += -MMD 1162endif 1163 1164define DO_TOOLS_CC 1165$(echo_cmd) "TOOLS_CC $<" 1166$(Q)$(CC) $(TOOLS_CFLAGS) -o $@ -c $< 1167endef 1168 1169define DO_TOOLS_CC_DAGCHECK 1170$(echo_cmd) "TOOLS_CC_DAGCHECK $<" 1171$(Q)$(CC) $(TOOLS_CFLAGS) -Wno-unused -o $@ -c $< 1172endef 1173 1174LBURG = $(B)/tools/lburg/lburg$(BINEXT) 1175DAGCHECK_C = $(B)/tools/rcc/dagcheck.c 1176Q3RCC = $(B)/tools/q3rcc$(BINEXT) 1177Q3CPP = $(B)/tools/q3cpp$(BINEXT) 1178Q3LCC = $(B)/tools/q3lcc$(BINEXT) 1179Q3ASM = $(B)/tools/q3asm$(BINEXT) 1180 1181LBURGOBJ= \ 1182 $(B)/tools/lburg/lburg.o \ 1183 $(B)/tools/lburg/gram.o 1184 1185$(B)/tools/lburg/%.o: $(LBURGDIR)/%.c 1186 $(DO_TOOLS_CC) 1187 1188$(LBURG): $(LBURGOBJ) 1189 $(echo_cmd) "LD $@" 1190 $(Q)$(CC) $(TOOLS_CFLAGS) $(TOOLS_LDFLAGS) -o $@ $^ $(TOOLS_LIBS) 1191 1192Q3RCCOBJ = \ 1193 $(B)/tools/rcc/alloc.o \ 1194 $(B)/tools/rcc/bind.o \ 1195 $(B)/tools/rcc/bytecode.o \ 1196 $(B)/tools/rcc/dag.o \ 1197 $(B)/tools/rcc/dagcheck.o \ 1198 $(B)/tools/rcc/decl.o \ 1199 $(B)/tools/rcc/enode.o \ 1200 $(B)/tools/rcc/error.o \ 1201 $(B)/tools/rcc/event.o \ 1202 $(B)/tools/rcc/expr.o \ 1203 $(B)/tools/rcc/gen.o \ 1204 $(B)/tools/rcc/init.o \ 1205 $(B)/tools/rcc/inits.o \ 1206 $(B)/tools/rcc/input.o \ 1207 $(B)/tools/rcc/lex.o \ 1208 $(B)/tools/rcc/list.o \ 1209 $(B)/tools/rcc/main.o \ 1210 $(B)/tools/rcc/null.o \ 1211 $(B)/tools/rcc/output.o \ 1212 $(B)/tools/rcc/prof.o \ 1213 $(B)/tools/rcc/profio.o \ 1214 $(B)/tools/rcc/simp.o \ 1215 $(B)/tools/rcc/stmt.o \ 1216 $(B)/tools/rcc/string.o \ 1217 $(B)/tools/rcc/sym.o \ 1218 $(B)/tools/rcc/symbolic.o \ 1219 $(B)/tools/rcc/trace.o \ 1220 $(B)/tools/rcc/tree.o \ 1221 $(B)/tools/rcc/types.o 1222 1223$(DAGCHECK_C): $(LBURG) $(Q3LCCSRCDIR)/dagcheck.md 1224 $(echo_cmd) "LBURG $(Q3LCCSRCDIR)/dagcheck.md" 1225 $(Q)$(LBURG) $(Q3LCCSRCDIR)/dagcheck.md $@ 1226 1227$(B)/tools/rcc/dagcheck.o: $(DAGCHECK_C) 1228 $(DO_TOOLS_CC_DAGCHECK) 1229 1230$(B)/tools/rcc/%.o: $(Q3LCCSRCDIR)/%.c 1231 $(DO_TOOLS_CC) 1232 1233$(Q3RCC): $(Q3RCCOBJ) 1234 $(echo_cmd) "LD $@" 1235 $(Q)$(CC) $(TOOLS_CFLAGS) $(TOOLS_LDFLAGS) -o $@ $^ $(TOOLS_LIBS) 1236 1237Q3CPPOBJ = \ 1238 $(B)/tools/cpp/cpp.o \ 1239 $(B)/tools/cpp/lex.o \ 1240 $(B)/tools/cpp/nlist.o \ 1241 $(B)/tools/cpp/tokens.o \ 1242 $(B)/tools/cpp/macro.o \ 1243 $(B)/tools/cpp/eval.o \ 1244 $(B)/tools/cpp/include.o \ 1245 $(B)/tools/cpp/hideset.o \ 1246 $(B)/tools/cpp/getopt.o \ 1247 $(B)/tools/cpp/unix.o 1248 1249$(B)/tools/cpp/%.o: $(Q3CPPDIR)/%.c 1250 $(DO_TOOLS_CC) 1251 1252$(Q3CPP): $(Q3CPPOBJ) 1253 $(echo_cmd) "LD $@" 1254 $(Q)$(CC) $(TOOLS_CFLAGS) $(TOOLS_LDFLAGS) -o $@ $^ $(TOOLS_LIBS) 1255 1256Q3LCCOBJ = \ 1257 $(B)/tools/etc/lcc.o \ 1258 $(B)/tools/etc/bytecode.o 1259 1260$(B)/tools/etc/%.o: $(Q3LCCETCDIR)/%.c 1261 $(DO_TOOLS_CC) 1262 1263$(Q3LCC): $(Q3LCCOBJ) $(Q3RCC) $(Q3CPP) 1264 $(echo_cmd) "LD $@" 1265 $(Q)$(CC) $(TOOLS_CFLAGS) $(TOOLS_LDFLAGS) -o $@ $(Q3LCCOBJ) $(TOOLS_LIBS) 1266 1267define DO_Q3LCC 1268$(echo_cmd) "Q3LCC $<" 1269$(Q)$(Q3LCC) -o $@ $< 1270endef 1271 1272define DO_CGAME_Q3LCC 1273$(echo_cmd) "CGAME_Q3LCC $<" 1274$(Q)$(Q3LCC) -DCGAME -o $@ $< 1275endef 1276 1277define DO_GAME_Q3LCC 1278$(echo_cmd) "GAME_Q3LCC $<" 1279$(Q)$(Q3LCC) -DQAGAME -o $@ $< 1280endef 1281 1282define DO_UI_Q3LCC 1283$(echo_cmd) "UI_Q3LCC $<" 1284$(Q)$(Q3LCC) -DUI -o $@ $< 1285endef 1286 1287define DO_Q3LCC_MISSIONPACK 1288$(echo_cmd) "Q3LCC_MISSIONPACK $<" 1289$(Q)$(Q3LCC) -DMISSIONPACK -o $@ $< 1290endef 1291 1292define DO_CGAME_Q3LCC_MISSIONPACK 1293$(echo_cmd) "CGAME_Q3LCC_MISSIONPACK $<" 1294$(Q)$(Q3LCC) -DMISSIONPACK -DCGAME -o $@ $< 1295endef 1296 1297define DO_GAME_Q3LCC_MISSIONPACK 1298$(echo_cmd) "GAME_Q3LCC_MISSIONPACK $<" 1299$(Q)$(Q3LCC) -DMISSIONPACK -DQAGAME -o $@ $< 1300endef 1301 1302define DO_UI_Q3LCC_MISSIONPACK 1303$(echo_cmd) "UI_Q3LCC_MISSIONPACK $<" 1304$(Q)$(Q3LCC) -DMISSIONPACK -DUI -o $@ $< 1305endef 1306 1307 1308Q3ASMOBJ = \ 1309 $(B)/tools/asm/q3asm.o \ 1310 $(B)/tools/asm/cmdlib.o 1311 1312$(B)/tools/asm/%.o: $(Q3ASMDIR)/%.c 1313 $(DO_TOOLS_CC) 1314 1315$(Q3ASM): $(Q3ASMOBJ) 1316 $(echo_cmd) "LD $@" 1317 $(Q)$(CC) $(TOOLS_CFLAGS) $(TOOLS_LDFLAGS) -o $@ $^ $(TOOLS_LIBS) 1318 1319 1320############################################################################# 1321# CLIENT/SERVER 1322############################################################################# 1323 1324Q3OBJ = \ 1325 $(B)/client/cl_cgame.o \ 1326 $(B)/client/cl_cin.o \ 1327 $(B)/client/cl_console.o \ 1328 $(B)/client/cl_input.o \ 1329 $(B)/client/cl_keys.o \ 1330 $(B)/client/cl_main.o \ 1331 $(B)/client/cl_net_chan.o \ 1332 $(B)/client/cl_parse.o \ 1333 $(B)/client/cl_scrn.o \ 1334 $(B)/client/cl_ui.o \ 1335 $(B)/client/cl_avi.o \ 1336 \ 1337 $(B)/client/cm_load.o \ 1338 $(B)/client/cm_patch.o \ 1339 $(B)/client/cm_polylib.o \ 1340 $(B)/client/cm_test.o \ 1341 $(B)/client/cm_trace.o \ 1342 \ 1343 $(B)/client/cmd.o \ 1344 $(B)/client/common.o \ 1345 $(B)/client/cvar.o \ 1346 $(B)/client/files.o \ 1347 $(B)/client/md4.o \ 1348 $(B)/client/md5.o \ 1349 $(B)/client/msg.o \ 1350 $(B)/client/net_chan.o \ 1351 $(B)/client/net_ip.o \ 1352 $(B)/client/huffman.o \ 1353 \ 1354 $(B)/client/snd_adpcm.o \ 1355 $(B)/client/snd_dma.o \ 1356 $(B)/client/snd_mem.o \ 1357 $(B)/client/snd_mix.o \ 1358 $(B)/client/snd_wavelet.o \ 1359 \ 1360 $(B)/client/snd_main.o \ 1361 $(B)/client/snd_codec.o \ 1362 $(B)/client/snd_codec_wav.o \ 1363 $(B)/client/snd_codec_ogg.o \ 1364 \ 1365 $(B)/client/qal.o \ 1366 $(B)/client/snd_openal.o \ 1367 \ 1368 $(B)/client/cl_curl.o \ 1369 \ 1370 $(B)/client/sv_bot.o \ 1371 $(B)/client/sv_ccmds.o \ 1372 $(B)/client/sv_client.o \ 1373 $(B)/client/sv_game.o \ 1374 $(B)/client/sv_init.o \ 1375 $(B)/client/sv_main.o \ 1376 $(B)/client/sv_net_chan.o \ 1377 $(B)/client/sv_snapshot.o \ 1378 $(B)/client/sv_world.o \ 1379 \ 1380 $(B)/client/q_math.o \ 1381 $(B)/client/q_shared.o \ 1382 \ 1383 $(B)/client/unzip.o \ 1384 $(B)/client/ioapi.o \ 1385 $(B)/client/puff.o \ 1386 $(B)/client/vm.o \ 1387 $(B)/client/vm_interpreted.o \ 1388 \ 1389 $(B)/client/be_aas_bspq3.o \ 1390 $(B)/client/be_aas_cluster.o \ 1391 $(B)/client/be_aas_debug.o \ 1392 $(B)/client/be_aas_entity.o \ 1393 $(B)/client/be_aas_file.o \ 1394 $(B)/client/be_aas_main.o \ 1395 $(B)/client/be_aas_move.o \ 1396 $(B)/client/be_aas_optimize.o \ 1397 $(B)/client/be_aas_reach.o \ 1398 $(B)/client/be_aas_route.o \ 1399 $(B)/client/be_aas_routealt.o \ 1400 $(B)/client/be_aas_sample.o \ 1401 $(B)/client/be_ai_char.o \ 1402 $(B)/client/be_ai_chat.o \ 1403 $(B)/client/be_ai_gen.o \ 1404 $(B)/client/be_ai_goal.o \ 1405 $(B)/client/be_ai_move.o \ 1406 $(B)/client/be_ai_weap.o \ 1407 $(B)/client/be_ai_weight.o \ 1408 $(B)/client/be_ea.o \ 1409 $(B)/client/be_interface.o \ 1410 $(B)/client/l_crc.o \ 1411 $(B)/client/l_libvar.o \ 1412 $(B)/client/l_log.o \ 1413 $(B)/client/l_memory.o \ 1414 $(B)/client/l_precomp.o \ 1415 $(B)/client/l_script.o \ 1416 $(B)/client/l_struct.o \ 1417 \ 1418 $(B)/client/jcapimin.o \ 1419 $(B)/client/jcapistd.o \ 1420 $(B)/client/jccoefct.o \ 1421 $(B)/client/jccolor.o \ 1422 $(B)/client/jcdctmgr.o \ 1423 $(B)/client/jchuff.o \ 1424 $(B)/client/jcinit.o \ 1425 $(B)/client/jcmainct.o \ 1426 $(B)/client/jcmarker.o \ 1427 $(B)/client/jcmaster.o \ 1428 $(B)/client/jcomapi.o \ 1429 $(B)/client/jcparam.o \ 1430 $(B)/client/jcphuff.o \ 1431 $(B)/client/jcprepct.o \ 1432 $(B)/client/jcsample.o \ 1433 $(B)/client/jdapimin.o \ 1434 $(B)/client/jdapistd.o \ 1435 $(B)/client/jdatasrc.o \ 1436 $(B)/client/jdcoefct.o \ 1437 $(B)/client/jdcolor.o \ 1438 $(B)/client/jddctmgr.o \ 1439 $(B)/client/jdhuff.o \ 1440 $(B)/client/jdinput.o \ 1441 $(B)/client/jdmainct.o \ 1442 $(B)/client/jdmarker.o \ 1443 $(B)/client/jdmaster.o \ 1444 $(B)/client/jdpostct.o \ 1445 $(B)/client/jdsample.o \ 1446 $(B)/client/jdtrans.o \ 1447 $(B)/client/jerror.o \ 1448 $(B)/client/jfdctflt.o \ 1449 $(B)/client/jidctflt.o \ 1450 $(B)/client/jmemmgr.o \ 1451 $(B)/client/jmemnobs.o \ 1452 $(B)/client/jutils.o \ 1453 \ 1454 $(B)/client/tr_animation.o \ 1455 $(B)/client/tr_backend.o \ 1456 $(B)/client/tr_bloom.o \ 1457 $(B)/client/tr_bsp.o \ 1458 $(B)/client/tr_cmds.o \ 1459 $(B)/client/tr_curve.o \ 1460 $(B)/client/tr_flares.o \ 1461 $(B)/client/tr_font.o \ 1462 $(B)/client/tr_image.o \ 1463 $(B)/client/tr_image_png.o \ 1464 $(B)/client/tr_image_jpg.o \ 1465 $(B)/client/tr_image_bmp.o \ 1466 $(B)/client/tr_image_tga.o \ 1467 $(B)/client/tr_image_pcx.o \ 1468 $(B)/client/tr_init.o \ 1469 $(B)/client/tr_light.o \ 1470 $(B)/client/tr_main.o \ 1471 $(B)/client/tr_marks.o \ 1472 $(B)/client/tr_mesh.o \ 1473 $(B)/client/tr_model.o \ 1474 $(B)/client/tr_noise.o \ 1475 $(B)/client/tr_scene.o \ 1476 $(B)/client/tr_shade.o \ 1477 $(B)/client/tr_shade_calc.o \ 1478 $(B)/client/tr_shader.o \ 1479 $(B)/client/tr_shadows.o \ 1480 $(B)/client/tr_sky.o \ 1481 $(B)/client/tr_surface.o \ 1482 $(B)/client/tr_world.o \ 1483 \ 1484 $(B)/client/sdl_gamma.o \ 1485 $(B)/client/sdl_input.o \ 1486 $(B)/client/sdl_snd.o \ 1487 \ 1488 $(B)/client/con_passive.o \ 1489 $(B)/client/con_log.o \ 1490 $(B)/client/sys_main.o 1491 1492ifeq ($(ARCH),i386) 1493 Q3OBJ += \ 1494 $(B)/client/snd_mixa.o \ 1495 $(B)/client/matha.o \ 1496 $(B)/client/ftola.o \ 1497 $(B)/client/snapvectora.o 1498endif 1499ifeq ($(ARCH),x86) 1500 Q3OBJ += \ 1501 $(B)/client/snd_mixa.o \ 1502 $(B)/client/matha.o \ 1503 $(B)/client/ftola.o \ 1504 $(B)/client/snapvectora.o 1505endif 1506 1507ifeq ($(USE_VOIP),1) 1508ifeq ($(USE_INTERNAL_SPEEX),1) 1509Q3OBJ += \ 1510 $(B)/client/bits.o \ 1511 $(B)/client/buffer.o \ 1512 $(B)/client/cb_search.o \ 1513 $(B)/client/exc_10_16_table.o \ 1514 $(B)/client/exc_10_32_table.o \ 1515 $(B)/client/exc_20_32_table.o \ 1516 $(B)/client/exc_5_256_table.o \ 1517 $(B)/client/exc_5_64_table.o \ 1518 $(B)/client/exc_8_128_table.o \ 1519 $(B)/client/fftwrap.o \ 1520 $(B)/client/filterbank.o \ 1521 $(B)/client/filters.o \ 1522 $(B)/client/gain_table.o \ 1523 $(B)/client/gain_table_lbr.o \ 1524 $(B)/client/hexc_10_32_table.o \ 1525 $(B)/client/hexc_table.o \ 1526 $(B)/client/high_lsp_tables.o \ 1527 $(B)/client/jitter.o \ 1528 $(B)/client/kiss_fft.o \ 1529 $(B)/client/kiss_fftr.o \ 1530 $(B)/client/lpc.o \ 1531 $(B)/client/lsp.o \ 1532 $(B)/client/lsp_tables_nb.o \ 1533 $(B)/client/ltp.o \ 1534 $(B)/client/mdf.o \ 1535 $(B)/client/modes.o \ 1536 $(B)/client/modes_wb.o \ 1537 $(B)/client/nb_celp.o \ 1538 $(B)/client/preprocess.o \ 1539 $(B)/client/quant_lsp.o \ 1540 $(B)/client/resample.o \ 1541 $(B)/client/sb_celp.o \ 1542 $(B)/client/smallft.o \ 1543 $(B)/client/speex.o \ 1544 $(B)/client/speex_callbacks.o \ 1545 $(B)/client/speex_header.o \ 1546 $(B)/client/stereo.o \ 1547 $(B)/client/vbr.o \ 1548 $(B)/client/vq.o \ 1549 $(B)/client/window.o 1550endif 1551endif 1552 1553ifeq ($(USE_INTERNAL_ZLIB),1) 1554Q3OBJ += \ 1555 $(B)/client/adler32.o \ 1556 $(B)/client/crc32.o \ 1557 $(B)/client/inffast.o \ 1558 $(B)/client/inflate.o \ 1559 $(B)/client/inftrees.o \ 1560 $(B)/client/zutil.o 1561endif 1562 1563ifeq ($(HAVE_VM_COMPILED),true) 1564 ifeq ($(ARCH),i386) 1565 Q3OBJ += $(B)/client/vm_x86.o 1566 endif 1567 ifeq ($(ARCH),x86) 1568 Q3OBJ += $(B)/client/vm_x86.o 1569 endif 1570 ifeq ($(ARCH),x86_64) 1571 Q3OBJ += $(B)/client/vm_x86_64.o $(B)/client/vm_x86_64_assembler.o 1572 endif 1573 ifeq ($(ARCH),amd64) 1574 Q3OBJ += $(B)/client/vm_x86_64.o $(B)/client/vm_x86_64_assembler.o 1575 endif 1576 ifeq ($(COMPILE_ARCH),ppc) 1577 Q3OBJ += $(B)/client/vm_powerpc.o $(B)/client/vm_powerpc_asm.o 1578 endif 1579 ifeq ($(COMPILE_ARCH),ppc64) 1580 Q3OBJ += $(B)/client/vm_powerpc.o $(B)/client/vm_powerpc_asm.o 1581 endif 1582 ifeq ($(COMPILE_ARCH),ppc64le) 1583 Q3OBJ += $(B)/client/vm_powerpc.o $(B)/client/vm_powerpc_asm.o 1584 endif 1585 ifeq ($(ARCH),sparc) 1586 Q3OBJ += $(B)/client/vm_sparc.o 1587 endif 1588endif 1589 1590ifeq ($(PLATFORM),mingw32) 1591 Q3OBJ += \ 1592 $(B)/client/win_resource.o \ 1593 $(B)/client/sys_win32.o 1594else 1595 Q3OBJ += \ 1596 $(B)/client/sys_unix.o 1597endif 1598 1599ifeq ($(PLATFORM),darwin) 1600 Q3OBJ += \ 1601 $(B)/client/sys_osx.o 1602endif 1603 1604ifeq ($(USE_MUMBLE),1) 1605 Q3OBJ += \ 1606 $(B)/client/libmumblelink.o 1607endif 1608 1609Q3POBJ += \ 1610 $(B)/client/sdl_glimp.o 1611 1612Q3POBJ_SMP += \ 1613 $(B)/clientsmp/sdl_glimp.o 1614 1615$(B)/openarena$(FULLBINEXT): $(Q3OBJ) $(Q3POBJ) $(LIBSDLMAIN) 1616 $(echo_cmd) "LD $@" 1617 $(Q)$(CC) $(CLIENT_CFLAGS) $(CFLAGS) $(CLIENT_LDFLAGS) $(LDFLAGS) \ 1618 -o $@ $(Q3OBJ) $(Q3POBJ) \ 1619 $(LIBSDLMAIN) $(CLIENT_LIBS) $(LIBS) 1620 1621$(B)/openarena-smp$(FULLBINEXT): $(Q3OBJ) $(Q3POBJ_SMP) $(LIBSDLMAIN) 1622 $(echo_cmd) "LD $@" 1623 $(Q)$(CC) $(CLIENT_CFLAGS) $(CFLAGS) $(CLIENT_LDFLAGS) $(LDFLAGS) $(THREAD_LDFLAGS) \ 1624 -o $@ $(Q3OBJ) $(Q3POBJ_SMP) \ 1625 $(THREAD_LIBS) $(LIBSDLMAIN) $(CLIENT_LIBS) $(LIBS) 1626 1627ifneq ($(strip $(LIBSDLMAIN)),) 1628ifneq ($(strip $(LIBSDLMAINSRC)),) 1629$(LIBSDLMAIN) : $(LIBSDLMAINSRC) 1630 cp $< $@ 1631 ranlib $@ 1632endif 1633endif 1634 1635 1636 1637############################################################################# 1638# DEDICATED SERVER 1639############################################################################# 1640 1641Q3DOBJ = \ 1642 $(B)/ded/sv_bot.o \ 1643 $(B)/ded/sv_client.o \ 1644 $(B)/ded/sv_ccmds.o \ 1645 $(B)/ded/sv_game.o \ 1646 $(B)/ded/sv_init.o \ 1647 $(B)/ded/sv_main.o \ 1648 $(B)/ded/sv_net_chan.o \ 1649 $(B)/ded/sv_snapshot.o \ 1650 $(B)/ded/sv_world.o \ 1651 \ 1652 $(B)/ded/cm_load.o \ 1653 $(B)/ded/cm_patch.o \ 1654 $(B)/ded/cm_polylib.o \ 1655 $(B)/ded/cm_test.o \ 1656 $(B)/ded/cm_trace.o \ 1657 $(B)/ded/cmd.o \ 1658 $(B)/ded/common.o \ 1659 $(B)/ded/cvar.o \ 1660 $(B)/ded/files.o \ 1661 $(B)/ded/md4.o \ 1662 $(B)/ded/msg.o \ 1663 $(B)/ded/net_chan.o \ 1664 $(B)/ded/net_ip.o \ 1665 $(B)/ded/huffman.o \ 1666 \ 1667 $(B)/ded/q_math.o \ 1668 $(B)/ded/q_shared.o \ 1669 \ 1670 $(B)/ded/unzip.o \ 1671 $(B)/ded/ioapi.o \ 1672 $(B)/ded/vm.o \ 1673 $(B)/ded/vm_interpreted.o \ 1674 \ 1675 $(B)/ded/be_aas_bspq3.o \ 1676 $(B)/ded/be_aas_cluster.o \ 1677 $(B)/ded/be_aas_debug.o \ 1678 $(B)/ded/be_aas_entity.o \ 1679 $(B)/ded/be_aas_file.o \ 1680 $(B)/ded/be_aas_main.o \ 1681 $(B)/ded/be_aas_move.o \ 1682 $(B)/ded/be_aas_optimize.o \ 1683 $(B)/ded/be_aas_reach.o \ 1684 $(B)/ded/be_aas_route.o \ 1685 $(B)/ded/be_aas_routealt.o \ 1686 $(B)/ded/be_aas_sample.o \ 1687 $(B)/ded/be_ai_char.o \ 1688 $(B)/ded/be_ai_chat.o \ 1689 $(B)/ded/be_ai_gen.o \ 1690 $(B)/ded/be_ai_goal.o \ 1691 $(B)/ded/be_ai_move.o \ 1692 $(B)/ded/be_ai_weap.o \ 1693 $(B)/ded/be_ai_weight.o \ 1694 $(B)/ded/be_ea.o \ 1695 $(B)/ded/be_interface.o \ 1696 $(B)/ded/l_crc.o \ 1697 $(B)/ded/l_libvar.o \ 1698 $(B)/ded/l_log.o \ 1699 $(B)/ded/l_memory.o \ 1700 $(B)/ded/l_precomp.o \ 1701 $(B)/ded/l_script.o \ 1702 $(B)/ded/l_struct.o \ 1703 \ 1704 $(B)/ded/null_client.o \ 1705 $(B)/ded/null_input.o \ 1706 $(B)/ded/null_snddma.o \ 1707 \ 1708 $(B)/ded/con_log.o \ 1709 $(B)/ded/sys_main.o 1710 1711ifeq ($(ARCH),i386) 1712 Q3DOBJ += \ 1713 $(B)/ded/ftola.o \ 1714 $(B)/ded/snapvectora.o \ 1715 $(B)/ded/matha.o 1716endif 1717ifeq ($(ARCH),x86) 1718 Q3DOBJ += \ 1719 $(B)/ded/ftola.o \ 1720 $(B)/ded/snapvectora.o \ 1721 $(B)/ded/matha.o 1722endif 1723 1724ifeq ($(USE_INTERNAL_ZLIB),1) 1725Q3DOBJ += \ 1726 $(B)/ded/adler32.o \ 1727 $(B)/ded/crc32.o \ 1728 $(B)/ded/inffast.o \ 1729 $(B)/ded/inflate.o \ 1730 $(B)/ded/inftrees.o \ 1731 $(B)/ded/zutil.o 1732endif 1733 1734ifeq ($(HAVE_VM_COMPILED),true) 1735 ifeq ($(ARCH),i386) 1736 Q3DOBJ += $(B)/ded/vm_x86.o 1737 endif 1738 ifeq ($(ARCH),x86) 1739 Q3DOBJ += $(B)/ded/vm_x86.o 1740 endif 1741 ifeq ($(ARCH),x86_64) 1742 Q3DOBJ += $(B)/ded/vm_x86_64.o $(B)/ded/vm_x86_64_assembler.o 1743 endif 1744 ifeq ($(ARCH),amd64) 1745 Q3DOBJ += $(B)/ded/vm_x86_64.o $(B)/ded/vm_x86_64_assembler.o 1746 endif 1747 ifeq ($(COMPILE_ARCH),ppc) 1748 Q3DOBJ += $(B)/ded/vm_powerpc.o $(B)/ded/vm_powerpc_asm.o 1749 endif 1750 ifeq ($(COMPILE_ARCH),ppc64) 1751 Q3DOBJ += $(B)/ded/vm_powerpc.o $(B)/ded/vm_powerpc_asm.o 1752 endif 1753 ifeq ($(COMPILE_ARCH),ppc64le) 1754 Q3DOBJ += $(B)/ded/vm_powerpc.o $(B)/ded/vm_powerpc_asm.o 1755 endif 1756 ifeq ($(ARCH),sparc) 1757 Q3DOBJ += $(B)/ded/vm_sparc.o 1758 endif 1759endif 1760 1761ifeq ($(PLATFORM),mingw32) 1762 Q3DOBJ += \ 1763 $(B)/ded/win_resource.o \ 1764 $(B)/ded/sys_win32.o \ 1765 $(B)/ded/con_win32.o 1766else 1767 Q3DOBJ += \ 1768 $(B)/ded/sys_unix.o \ 1769 $(B)/ded/con_tty.o 1770endif 1771 1772ifeq ($(PLATFORM),darwin) 1773 Q3DOBJ += \ 1774 $(B)/ded/sys_osx.o 1775endif 1776 1777$(B)/oa_ded$(FULLBINEXT): $(Q3DOBJ) 1778 $(echo_cmd) "LD $@" 1779 $(Q)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(Q3DOBJ) $(LIBS) 1780 1781 1782 1783############################################################################# 1784## baseoa CGAME 1785############################################################################# 1786 1787Q3CGOBJ_ = \ 1788 $(B)/baseoa/cgame/cg_main.o \ 1789 $(B)/baseoa/cgame/bg_misc.o \ 1790 $(B)/baseoa/cgame/bg_pmove.o \ 1791 $(B)/baseoa/cgame/bg_slidemove.o \ 1792 $(B)/baseoa/cgame/bg_lib.o \ 1793 $(B)/baseoa/cgame/cg_consolecmds.o \ 1794 $(B)/baseoa/cgame/cg_draw.o \ 1795 $(B)/baseoa/cgame/cg_drawtools.o \ 1796 $(B)/baseoa/cgame/cg_effects.o \ 1797 $(B)/baseoa/cgame/cg_ents.o \ 1798 $(B)/baseoa/cgame/cg_event.o \ 1799 $(B)/baseoa/cgame/cg_info.o \ 1800 $(B)/baseoa/cgame/cg_localents.o \ 1801 $(B)/baseoa/cgame/cg_marks.o \ 1802 $(B)/baseoa/cgame/cg_players.o \ 1803 $(B)/baseoa/cgame/cg_playerstate.o \ 1804 $(B)/baseoa/cgame/cg_predict.o \ 1805 $(B)/baseoa/cgame/cg_scoreboard.o \ 1806 $(B)/baseoa/cgame/cg_servercmds.o \ 1807 $(B)/baseoa/cgame/cg_snapshot.o \ 1808 $(B)/baseoa/cgame/cg_view.o \ 1809 $(B)/baseoa/cgame/cg_weapons.o \ 1810 \ 1811 $(B)/baseoa/qcommon/q_math.o \ 1812 $(B)/baseoa/qcommon/q_shared.o 1813 1814Q3CGOBJ = $(Q3CGOBJ_) $(B)/baseoa/cgame/cg_syscalls.o 1815Q3CGVMOBJ = $(Q3CGOBJ_:%.o=%.asm) 1816 1817$(B)/baseoa/cgame$(SHLIBNAME): $(Q3CGOBJ) 1818 $(echo_cmd) "LD $@" 1819 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3CGOBJ) 1820 1821$(B)/baseoa/vm/cgame.qvm: $(Q3CGVMOBJ) $(CGDIR)/cg_syscalls.asm $(Q3ASM) 1822 $(echo_cmd) "Q3ASM $@" 1823 $(Q)$(Q3ASM) -o $@ $(Q3CGVMOBJ) $(CGDIR)/cg_syscalls.asm 1824 1825############################################################################# 1826## MISSIONPACK CGAME 1827############################################################################# 1828 1829MPCGOBJ_ = \ 1830 $(B)/missionpack/cgame/cg_main.o \ 1831 $(B)/missionpack/cgame/bg_misc.o \ 1832 $(B)/missionpack/cgame/bg_pmove.o \ 1833 $(B)/missionpack/cgame/bg_slidemove.o \ 1834 $(B)/missionpack/cgame/bg_lib.o \ 1835 $(B)/missionpack/cgame/cg_consolecmds.o \ 1836 $(B)/missionpack/cgame/cg_newdraw.o \ 1837 $(B)/missionpack/cgame/cg_draw.o \ 1838 $(B)/missionpack/cgame/cg_drawtools.o \ 1839 $(B)/missionpack/cgame/cg_effects.o \ 1840 $(B)/missionpack/cgame/cg_ents.o \ 1841 $(B)/missionpack/cgame/cg_event.o \ 1842 $(B)/missionpack/cgame/cg_info.o \ 1843 $(B)/missionpack/cgame/cg_localents.o \ 1844 $(B)/missionpack/cgame/cg_marks.o \ 1845 $(B)/missionpack/cgame/cg_players.o \ 1846 $(B)/missionpack/cgame/cg_playerstate.o \ 1847 $(B)/missionpack/cgame/cg_predict.o \ 1848 $(B)/missionpack/cgame/cg_scoreboard.o \ 1849 $(B)/missionpack/cgame/cg_servercmds.o \ 1850 $(B)/missionpack/cgame/cg_snapshot.o \ 1851 $(B)/missionpack/cgame/cg_view.o \ 1852 $(B)/missionpack/cgame/cg_weapons.o \ 1853 $(B)/missionpack/ui/ui_shared.o \ 1854 \ 1855 $(B)/missionpack/qcommon/q_math.o \ 1856 $(B)/missionpack/qcommon/q_shared.o 1857 1858MPCGOBJ = $(MPCGOBJ_) $(B)/missionpack/cgame/cg_syscalls.o 1859MPCGVMOBJ = $(MPCGOBJ_:%.o=%.asm) 1860 1861$(B)/missionpack/cgame$(SHLIBNAME): $(MPCGOBJ) 1862 $(echo_cmd) "LD $@" 1863 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(MPCGOBJ) 1864 1865$(B)/missionpack/vm/cgame.qvm: $(MPCGVMOBJ) $(CGDIR)/cg_syscalls.asm $(Q3ASM) 1866 $(echo_cmd) "Q3ASM $@" 1867 $(Q)$(Q3ASM) -o $@ $(MPCGVMOBJ) $(CGDIR)/cg_syscalls.asm 1868 1869 1870 1871############################################################################# 1872## baseoa GAME 1873############################################################################# 1874 1875Q3GOBJ_ = \ 1876 $(B)/baseoa/game/g_main.o \ 1877 $(B)/baseoa/game/ai_chat.o \ 1878 $(B)/baseoa/game/ai_cmd.o \ 1879 $(B)/baseoa/game/ai_dmnet.o \ 1880 $(B)/baseoa/game/ai_dmq3.o \ 1881 $(B)/baseoa/game/ai_main.o \ 1882 $(B)/baseoa/game/ai_team.o \ 1883 $(B)/baseoa/game/ai_vcmd.o \ 1884 $(B)/baseoa/game/bg_misc.o \ 1885 $(B)/baseoa/game/bg_pmove.o \ 1886 $(B)/baseoa/game/bg_slidemove.o \ 1887 $(B)/baseoa/game/bg_lib.o \ 1888 $(B)/baseoa/game/g_active.o \ 1889 $(B)/baseoa/game/g_arenas.o \ 1890 $(B)/baseoa/game/g_bot.o \ 1891 $(B)/baseoa/game/g_client.o \ 1892 $(B)/baseoa/game/g_cmds.o \ 1893 $(B)/baseoa/game/g_combat.o \ 1894 $(B)/baseoa/game/g_items.o \ 1895 $(B)/baseoa/game/g_mem.o \ 1896 $(B)/baseoa/game/g_misc.o \ 1897 $(B)/baseoa/game/g_missile.o \ 1898 $(B)/baseoa/game/g_mover.o \ 1899 $(B)/baseoa/game/g_session.o \ 1900 $(B)/baseoa/game/g_spawn.o \ 1901 $(B)/baseoa/game/g_svcmds.o \ 1902 $(B)/baseoa/game/g_target.o \ 1903 $(B)/baseoa/game/g_team.o \ 1904 $(B)/baseoa/game/g_trigger.o \ 1905 $(B)/baseoa/game/g_utils.o \ 1906 $(B)/baseoa/game/g_weapon.o \ 1907 \ 1908 $(B)/baseoa/qcommon/q_math.o \ 1909 $(B)/baseoa/qcommon/q_shared.o 1910 1911Q3GOBJ = $(Q3GOBJ_) $(B)/baseoa/game/g_syscalls.o 1912Q3GVMOBJ = $(Q3GOBJ_:%.o=%.asm) 1913 1914$(B)/baseoa/qagame$(SHLIBNAME): $(Q3GOBJ) 1915 $(echo_cmd) "LD $@" 1916 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3GOBJ) 1917 1918$(B)/baseoa/vm/qagame.qvm: $(Q3GVMOBJ) $(GDIR)/g_syscalls.asm $(Q3ASM) 1919 $(echo_cmd) "Q3ASM $@" 1920 $(Q)$(Q3ASM) -o $@ $(Q3GVMOBJ) $(GDIR)/g_syscalls.asm 1921 1922############################################################################# 1923## MISSIONPACK GAME 1924############################################################################# 1925 1926MPGOBJ_ = \ 1927 $(B)/missionpack/game/g_main.o \ 1928 $(B)/missionpack/game/ai_chat.o \ 1929 $(B)/missionpack/game/ai_cmd.o \ 1930 $(B)/missionpack/game/ai_dmnet.o \ 1931 $(B)/missionpack/game/ai_dmq3.o \ 1932 $(B)/missionpack/game/ai_main.o \ 1933 $(B)/missionpack/game/ai_team.o \ 1934 $(B)/missionpack/game/ai_vcmd.o \ 1935 $(B)/missionpack/game/bg_misc.o \ 1936 $(B)/missionpack/game/bg_pmove.o \ 1937 $(B)/missionpack/game/bg_slidemove.o \ 1938 $(B)/missionpack/game/bg_lib.o \ 1939 $(B)/missionpack/game/g_active.o \ 1940 $(B)/missionpack/game/g_arenas.o \ 1941 $(B)/missionpack/game/g_bot.o \ 1942 $(B)/missionpack/game/g_client.o \ 1943 $(B)/missionpack/game/g_cmds.o \ 1944 $(B)/missionpack/game/g_combat.o \ 1945 $(B)/missionpack/game/g_items.o \ 1946 $(B)/missionpack/game/g_mem.o \ 1947 $(B)/missionpack/game/g_misc.o \ 1948 $(B)/missionpack/game/g_missile.o \ 1949 $(B)/missionpack/game/g_mover.o \ 1950 $(B)/missionpack/game/g_session.o \ 1951 $(B)/missionpack/game/g_spawn.o \ 1952 $(B)/missionpack/game/g_svcmds.o \ 1953 $(B)/missionpack/game/g_target.o \ 1954 $(B)/missionpack/game/g_team.o \ 1955 $(B)/missionpack/game/g_trigger.o \ 1956 $(B)/missionpack/game/g_utils.o \ 1957 $(B)/missionpack/game/g_weapon.o \ 1958 \ 1959 $(B)/missionpack/qcommon/q_math.o \ 1960 $(B)/missionpack/qcommon/q_shared.o 1961 1962MPGOBJ = $(MPGOBJ_) $(B)/missionpack/game/g_syscalls.o 1963MPGVMOBJ = $(MPGOBJ_:%.o=%.asm) 1964 1965$(B)/missionpack/qagame$(SHLIBNAME): $(MPGOBJ) 1966 $(echo_cmd) "LD $@" 1967 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(MPGOBJ) 1968 1969$(B)/missionpack/vm/qagame.qvm: $(MPGVMOBJ) $(GDIR)/g_syscalls.asm $(Q3ASM) 1970 $(echo_cmd) "Q3ASM $@" 1971 $(Q)$(Q3ASM) -o $@ $(MPGVMOBJ) $(GDIR)/g_syscalls.asm 1972 1973 1974 1975############################################################################# 1976## baseoa UI 1977############################################################################# 1978 1979Q3UIOBJ_ = \ 1980 $(B)/baseoa/ui/ui_main.o \ 1981 $(B)/baseoa/ui/bg_misc.o \ 1982 $(B)/baseoa/ui/bg_lib.o \ 1983 $(B)/baseoa/ui/ui_addbots.o \ 1984 $(B)/baseoa/ui/ui_atoms.o \ 1985 $(B)/baseoa/ui/ui_cdkey.o \ 1986 $(B)/baseoa/ui/ui_cinematics.o \ 1987 $(B)/baseoa/ui/ui_confirm.o \ 1988 $(B)/baseoa/ui/ui_connect.o \ 1989 $(B)/baseoa/ui/ui_controls2.o \ 1990 $(B)/baseoa/ui/ui_credits.o \ 1991 $(B)/baseoa/ui/ui_demo2.o \ 1992 $(B)/baseoa/ui/ui_display.o \ 1993 $(B)/baseoa/ui/ui_gameinfo.o \ 1994 $(B)/baseoa/ui/ui_ingame.o \ 1995 $(B)/baseoa/ui/ui_loadconfig.o \ 1996 $(B)/baseoa/ui/ui_menu.o \ 1997 $(B)/baseoa/ui/ui_mfield.o \ 1998 $(B)/baseoa/ui/ui_mods.o \ 1999 $(B)/baseoa/ui/ui_network.o \ 2000 $(B)/baseoa/ui/ui_options.o \ 2001 $(B)/baseoa/ui/ui_playermodel.o \ 2002 $(B)/baseoa/ui/ui_players.o \ 2003 $(B)/baseoa/ui/ui_playersettings.o \ 2004 $(B)/baseoa/ui/ui_preferences.o \ 2005 $(B)/baseoa/ui/ui_qmenu.o \ 2006 $(B)/baseoa/ui/ui_removebots.o \ 2007 $(B)/baseoa/ui/ui_saveconfig.o \ 2008 $(B)/baseoa/ui/ui_serverinfo.o \ 2009 $(B)/baseoa/ui/ui_servers2.o \ 2010 $(B)/baseoa/ui/ui_setup.o \ 2011 $(B)/baseoa/ui/ui_sound.o \ 2012 $(B)/baseoa/ui/ui_sparena.o \ 2013 $(B)/baseoa/ui/ui_specifyserver.o \ 2014 $(B)/baseoa/ui/ui_splevel.o \ 2015 $(B)/baseoa/ui/ui_sppostgame.o \ 2016 $(B)/baseoa/ui/ui_spskill.o \ 2017 $(B)/baseoa/ui/ui_startserver.o \ 2018 $(B)/baseoa/ui/ui_team.o \ 2019 $(B)/baseoa/ui/ui_teamorders.o \ 2020 $(B)/baseoa/ui/ui_video.o \ 2021 \ 2022 $(B)/baseoa/qcommon/q_math.o \ 2023 $(B)/baseoa/qcommon/q_shared.o 2024 2025Q3UIOBJ = $(Q3UIOBJ_) $(B)/missionpack/ui/ui_syscalls.o 2026Q3UIVMOBJ = $(Q3UIOBJ_:%.o=%.asm) 2027 2028$(B)/baseoa/ui$(SHLIBNAME): $(Q3UIOBJ) 2029 $(echo_cmd) "LD $@" 2030 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3UIOBJ) 2031 2032$(B)/baseoa/vm/ui.qvm: $(Q3UIVMOBJ) $(UIDIR)/ui_syscalls.asm $(Q3ASM) 2033 $(echo_cmd) "Q3ASM $@" 2034 $(Q)$(Q3ASM) -o $@ $(Q3UIVMOBJ) $(UIDIR)/ui_syscalls.asm 2035 2036############################################################################# 2037## MISSIONPACK UI 2038############################################################################# 2039 2040MPUIOBJ_ = \ 2041 $(B)/missionpack/ui/ui_main.o \ 2042 $(B)/missionpack/ui/ui_atoms.o \ 2043 $(B)/missionpack/ui/ui_gameinfo.o \ 2044 $(B)/missionpack/ui/ui_players.o \ 2045 $(B)/missionpack/ui/ui_shared.o \ 2046 \ 2047 $(B)/missionpack/ui/bg_misc.o \ 2048 $(B)/missionpack/ui/bg_lib.o \ 2049 \ 2050 $(B)/missionpack/qcommon/q_math.o \ 2051 $(B)/missionpack/qcommon/q_shared.o 2052 2053MPUIOBJ = $(MPUIOBJ_) $(B)/missionpack/ui/ui_syscalls.o 2054MPUIVMOBJ = $(MPUIOBJ_:%.o=%.asm) 2055 2056$(B)/missionpack/ui$(SHLIBNAME): $(MPUIOBJ) 2057 $(echo_cmd) "LD $@" 2058 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(MPUIOBJ) 2059 2060$(B)/missionpack/vm/ui.qvm: $(MPUIVMOBJ) $(UIDIR)/ui_syscalls.asm $(Q3ASM) 2061 $(echo_cmd) "Q3ASM $@" 2062 $(Q)$(Q3ASM) -o $@ $(MPUIVMOBJ) $(UIDIR)/ui_syscalls.asm 2063 2064 2065 2066############################################################################# 2067## CLIENT/SERVER RULES 2068############################################################################# 2069 2070$(B)/client/%.o: $(ASMDIR)/%.s 2071 $(DO_AS) 2072 2073$(B)/client/%.o: $(CDIR)/%.c 2074 $(DO_CC) 2075 2076$(B)/client/%.o: $(SDIR)/%.c 2077 $(DO_CC) 2078 2079$(B)/client/%.o: $(CMDIR)/%.c 2080 $(DO_CC) 2081 2082$(B)/client/%.o: $(BLIBDIR)/%.c 2083 $(DO_BOT_CC) 2084 2085$(B)/client/%.o: $(JPDIR)/%.c 2086 $(DO_CC) 2087 2088$(B)/client/%.o: $(SPEEXDIR)/%.c 2089 $(DO_CC) 2090 2091$(B)/client/%.o: $(ZDIR)/%.c 2092 $(DO_CC) 2093 2094$(B)/client/%.o: $(RDIR)/%.c 2095 $(DO_CC) 2096 2097$(B)/client/%.o: $(SDLDIR)/%.c 2098 $(DO_CC) 2099 2100$(B)/clientsmp/%.o: $(SDLDIR)/%.c 2101 $(DO_SMP_CC) 2102 2103$(B)/client/%.o: $(SYSDIR)/%.c 2104 $(DO_CC) 2105 2106$(B)/client/%.o: $(SYSDIR)/%.m 2107 $(DO_CC) 2108 2109$(B)/client/%.o: $(SYSDIR)/%.rc 2110 $(DO_WINDRES) 2111 2112 2113$(B)/ded/%.o: $(ASMDIR)/%.s 2114 $(DO_AS) 2115 2116$(B)/ded/%.o: $(SDIR)/%.c 2117 $(DO_DED_CC) 2118 2119$(B)/ded/%.o: $(CMDIR)/%.c 2120 $(DO_DED_CC) 2121 2122$(B)/ded/%.o: $(ZDIR)/%.c 2123 $(DO_DED_CC) 2124 2125$(B)/ded/%.o: $(BLIBDIR)/%.c 2126 $(DO_BOT_CC) 2127 2128$(B)/ded/%.o: $(SYSDIR)/%.c 2129 $(DO_DED_CC) 2130 2131$(B)/ded/%.o: $(SYSDIR)/%.m 2132 $(DO_DED_CC) 2133 2134$(B)/ded/%.o: $(SYSDIR)/%.rc 2135 $(DO_WINDRES) 2136 2137$(B)/ded/%.o: $(NDIR)/%.c 2138 $(DO_DED_CC) 2139 2140# Extra dependencies to ensure the SVN version is incorporated 2141ifeq ($(USE_SVN),1) 2142 $(B)/client/cl_console.o : .svn/entries 2143 $(B)/client/common.o : .svn/entries 2144 $(B)/ded/common.o : .svn/entries 2145endif 2146 2147 2148############################################################################# 2149## GAME MODULE RULES 2150############################################################################# 2151 2152$(B)/baseoa/cgame/bg_%.o: $(GDIR)/bg_%.c 2153 $(DO_CGAME_CC) 2154 2155$(B)/baseoa/cgame/%.o: $(CGDIR)/%.c 2156 $(DO_CGAME_CC) 2157 2158$(B)/baseoa/cgame/bg_%.asm: $(GDIR)/bg_%.c $(Q3LCC) 2159 $(DO_CGAME_Q3LCC) 2160 2161$(B)/baseoa/cgame/%.asm: $(CGDIR)/%.c $(Q3LCC) 2162 $(DO_CGAME_Q3LCC) 2163 2164$(B)/missionpack/cgame/bg_%.o: $(GDIR)/bg_%.c 2165 $(DO_CGAME_CC_MISSIONPACK) 2166 2167$(B)/missionpack/cgame/%.o: $(CGDIR)/%.c 2168 $(DO_CGAME_CC_MISSIONPACK) 2169 2170$(B)/missionpack/cgame/bg_%.asm: $(GDIR)/bg_%.c $(Q3LCC) 2171 $(DO_CGAME_Q3LCC_MISSIONPACK) 2172 2173$(B)/missionpack/cgame/%.asm: $(CGDIR)/%.c $(Q3LCC) 2174 $(DO_CGAME_Q3LCC_MISSIONPACK) 2175 2176 2177$(B)/baseoa/game/%.o: $(GDIR)/%.c 2178 $(DO_GAME_CC) 2179 2180$(B)/baseoa/game/%.asm: $(GDIR)/%.c $(Q3LCC) 2181 $(DO_GAME_Q3LCC) 2182 2183$(B)/missionpack/game/%.o: $(GDIR)/%.c 2184 $(DO_GAME_CC_MISSIONPACK) 2185 2186$(B)/missionpack/game/%.asm: $(GDIR)/%.c $(Q3LCC) 2187 $(DO_GAME_Q3LCC_MISSIONPACK) 2188 2189 2190$(B)/baseoa/ui/bg_%.o: $(GDIR)/bg_%.c 2191 $(DO_UI_CC) 2192 2193$(B)/baseoa/ui/%.o: $(Q3UIDIR)/%.c 2194 $(DO_UI_CC) 2195 2196$(B)/baseoa/ui/bg_%.asm: $(GDIR)/bg_%.c $(Q3LCC) 2197 $(DO_UI_Q3LCC) 2198 2199$(B)/baseoa/ui/%.asm: $(Q3UIDIR)/%.c $(Q3LCC) 2200 $(DO_UI_Q3LCC) 2201 2202$(B)/missionpack/ui/bg_%.o: $(GDIR)/bg_%.c 2203 $(DO_UI_CC_MISSIONPACK) 2204 2205$(B)/missionpack/ui/%.o: $(UIDIR)/%.c 2206 $(DO_UI_CC_MISSIONPACK) 2207 2208$(B)/missionpack/ui/bg_%.asm: $(GDIR)/bg_%.c $(Q3LCC) 2209 $(DO_UI_Q3LCC_MISSIONPACK) 2210 2211$(B)/missionpack/ui/%.asm: $(UIDIR)/%.c $(Q3LCC) 2212 $(DO_UI_Q3LCC_MISSIONPACK) 2213 2214 2215$(B)/baseoa/qcommon/%.o: $(CMDIR)/%.c 2216 $(DO_SHLIB_CC) 2217 2218$(B)/baseoa/qcommon/%.asm: $(CMDIR)/%.c $(Q3LCC) 2219 $(DO_Q3LCC) 2220 2221$(B)/missionpack/qcommon/%.o: $(CMDIR)/%.c 2222 $(DO_SHLIB_CC_MISSIONPACK) 2223 2224$(B)/missionpack/qcommon/%.asm: $(CMDIR)/%.c $(Q3LCC) 2225 $(DO_Q3LCC_MISSIONPACK) 2226 2227 2228############################################################################# 2229# MISC 2230############################################################################# 2231 2232OBJ = $(Q3OBJ) $(Q3POBJ) $(Q3POBJ_SMP) $(Q3DOBJ) \ 2233 $(MPGOBJ) $(Q3GOBJ) $(Q3CGOBJ) $(MPCGOBJ) $(Q3UIOBJ) $(MPUIOBJ) \ 2234 $(MPGVMOBJ) $(Q3GVMOBJ) $(Q3CGVMOBJ) $(MPCGVMOBJ) $(Q3UIVMOBJ) $(MPUIVMOBJ) 2235TOOLSOBJ = $(LBURGOBJ) $(Q3CPPOBJ) $(Q3RCCOBJ) $(Q3LCCOBJ) $(Q3ASMOBJ) 2236 2237 2238copyfiles: release 2239 @if [ ! -d $(COPYDIR)/baseoa ]; then echo "You need to set COPYDIR to where your Quake3 data is!"; fi 2240 -$(MKDIR) -p -m 0755 $(COPYDIR)/baseoa 2241 -$(MKDIR) -p -m 0755 $(COPYDIR)/missionpack 2242 2243ifneq ($(BUILD_CLIENT),0) 2244 $(INSTALL) $(STRIP_FLAG) -m 0755 $(BR)/openarena$(FULLBINEXT) $(COPYBINDIR)/openarena$(FULLBINEXT) 2245endif 2246 2247# Don't copy the SMP until it's working together with SDL. 2248#ifneq ($(BUILD_CLIENT_SMP),0) 2249# $(INSTALL) $(STRIP_FLAG) -m 0755 $(BR)/openarena-smp$(FULLBINEXT) $(COPYBINDIR)/openarena-smp$(FULLBINEXT) 2250#endif 2251 2252ifneq ($(BUILD_SERVER),0) 2253 @if [ -f $(BR)/oa_ded$(FULLBINEXT) ]; then \ 2254 $(INSTALL) $(STRIP_FLAG) -m 0755 $(BR)/oa_ded$(FULLBINEXT) $(COPYBINDIR)/oa_ded$(FULLBINEXT); \ 2255 fi 2256endif 2257 2258ifneq ($(BUILD_GAME_SO),0) 2259 $(INSTALL) $(STRIP_FLAG) -m 0755 $(BR)/baseoa/cgame$(SHLIBNAME) \ 2260 $(COPYDIR)/baseoa/. 2261 $(INSTALL) $(STRIP_FLAG) -m 0755 $(BR)/baseoa/qagame$(SHLIBNAME) \ 2262 $(COPYDIR)/baseoa/. 2263 $(INSTALL) $(STRIP_FLAG) -m 0755 $(BR)/baseoa/ui$(SHLIBNAME) \ 2264 $(COPYDIR)/baseoa/. 2265 ifneq ($(BUILD_MISSIONPACK),0) 2266 -$(MKDIR) -p -m 0755 $(COPYDIR)/missionpack 2267 $(INSTALL) $(STRIP_FLAG) -m 0755 $(BR)/missionpack/cgame$(SHLIBNAME) \ 2268 $(COPYDIR)/missionpack/. 2269 $(INSTALL) $(STRIP_FLAG) -m 0755 $(BR)/missionpack/qagame$(SHLIBNAME) \ 2270 $(COPYDIR)/missionpack/. 2271 $(INSTALL) $(STRIP_FLAG) -m 0755 $(BR)/missionpack/ui$(SHLIBNAME) \ 2272 $(COPYDIR)/missionpack/. 2273 endif 2274endif 2275 2276clean: clean-debug clean-release 2277ifeq ($(PLATFORM),mingw32) 2278 @$(MAKE) -C $(NSISDIR) clean 2279else 2280 @$(MAKE) -C $(LOKISETUPDIR) clean 2281endif 2282 2283clean-debug: 2284 @$(MAKE) clean2 B=$(BD) 2285 2286clean-release: 2287 @$(MAKE) clean2 B=$(BR) 2288 2289clean2: 2290 @echo "CLEAN $(B)" 2291 @rm -f $(OBJ) 2292 @rm -f $(OBJ_D_FILES) 2293 @rm -f $(TARGETS) 2294 2295toolsclean: toolsclean-debug toolsclean-release 2296 2297toolsclean-debug: 2298 @$(MAKE) toolsclean2 B=$(BD) 2299 2300toolsclean-release: 2301 @$(MAKE) toolsclean2 B=$(BR) 2302 2303toolsclean2: 2304 @echo "TOOLS_CLEAN $(B)" 2305 @rm -f $(TOOLSOBJ) 2306 @rm -f $(TOOLSOBJ_D_FILES) 2307 @rm -f $(LBURG) $(DAGCHECK_C) $(Q3RCC) $(Q3CPP) $(Q3LCC) $(Q3ASM) 2308 2309distclean: clean toolsclean 2310 @rm -rf $(BUILD_DIR) 2311 2312installer: release 2313ifeq ($(PLATFORM),mingw32) 2314 @$(MAKE) VERSION=$(VERSION) -C $(NSISDIR) V=$(V) 2315else 2316 @$(MAKE) VERSION=$(VERSION) -C $(LOKISETUPDIR) V=$(V) 2317endif 2318 2319dist: 2320 rm -rf openarena-$(VERSION) 2321 svn export . openarena-$(VERSION) 2322 tar --owner=root --group=root --force-local -cjf openarena-$(VERSION).tar.bz2 openarena-$(VERSION) 2323 rm -rf openarena-$(VERSION) 2324 2325############################################################################# 2326# DEPENDENCIES 2327############################################################################# 2328 2329ifneq ($(B),) 2330 OBJ_D_FILES=$(filter %.d,$(OBJ:%.o=%.d)) 2331 TOOLSOBJ_D_FILES=$(filter %.d,$(TOOLSOBJ:%.o=%.d)) 2332 -include $(OBJ_D_FILES) $(TOOLSOBJ_D_FILES) 2333endif 2334 2335.PHONY: all clean clean2 clean-debug clean-release copyfiles \ 2336 debug default dist distclean installer makedirs \ 2337 release targets \ 2338 toolsclean toolsclean2 toolsclean-debug toolsclean-release \ 2339 $(OBJ_D_FILES) $(TOOLSOBJ_D_FILES) 2340