1# 2# iowolfsp Makefile 3# 4# GNU Make required 5# 6 7COMPILE_PLATFORM=$(shell uname | sed -e 's/_.*//' | tr '[:upper:]' '[:lower:]' | sed -e 's/\//_/g') 8COMPILE_ARCH=$(shell uname -m | sed -e 's/i.86/x86/' | sed -e 's/^arm.*/arm/') 9ARM_VER_CHECK=$(shell uname -m) 10 11ifeq ($(COMPILE_PLATFORM),sunos) 12 # Solaris uname and GNU uname differ 13 COMPILE_ARCH=$(shell uname -p | sed -e 's/i.86/x86/') 14endif 15 16ifndef BUILD_STANDALONE 17 BUILD_STANDALONE = 18endif 19ifndef BUILD_CLIENT 20 BUILD_CLIENT = 21endif 22ifndef BUILD_SERVER 23 BUILD_SERVER = 0 24endif 25ifndef BUILD_GAME_SO 26 BUILD_GAME_SO = 27endif 28ifndef BUILD_GAME_QVM 29 BUILD_GAME_QVM = 0 30endif 31ifndef BUILD_BASEGAME 32 BUILD_BASEGAME = 33endif 34ifndef BUILD_RENDERER_REND2 35 BUILD_RENDERER_REND2 = 36endif 37ifndef BUILD_ARCHIVE 38 BUILD_ARCHIVE = 0 39endif 40 41############################################################################# 42# 43# If you require a different configuration from the defaults below, create a 44# new file named "Makefile.local" in the same directory as this file and define 45# your parameters there. This allows you to change configuration without 46# causing problems with keeping up to date with the repository. 47# 48############################################################################# 49-include Makefile.local 50 51ifeq ($(COMPILE_PLATFORM),cygwin) 52 PLATFORM=mingw32 53endif 54 55ifndef PLATFORM 56PLATFORM=$(COMPILE_PLATFORM) 57endif 58export PLATFORM 59 60ifeq ($(PLATFORM),mingw32) 61 MINGW=1 62endif 63ifeq ($(PLATFORM),mingw64) 64 MINGW=1 65endif 66 67ifeq ($(COMPILE_ARCH),i386) 68 COMPILE_ARCH=x86 69endif 70ifeq ($(COMPILE_ARCH),i86pc) 71 COMPILE_ARCH=x86 72endif 73 74ifeq ($(COMPILE_ARCH),amd64) 75 COMPILE_ARCH=x86_64 76endif 77ifeq ($(COMPILE_ARCH),x64) 78 COMPILE_ARCH=x86_64 79endif 80 81ifeq ($(COMPILE_ARCH),powerpc) 82 COMPILE_ARCH=ppc 83endif 84ifeq ($(COMPILE_ARCH),powerpc64) 85 COMPILE_ARCH=ppc64 86endif 87 88ifeq ($(COMPILE_ARCH),axp) 89 COMPILE_ARCH=alpha 90endif 91 92ifeq ($(COMPILE_ARCH),sparc64) 93 COMPILE_ARCH=sparc 94endif 95 96ifndef ARCH 97ARCH=$(COMPILE_ARCH) 98endif 99export ARCH 100 101# For historical compatibility reasons on non-windows 102# platform output files use i386 instead of x86 103ifeq ($(ARCH),x86) 104 ifndef MINGW 105 FILE_ARCH=i386 106 endif 107endif 108 109ifndef FILE_ARCH 110FILE_ARCH=$(ARCH) 111endif 112export FILE_ARCH 113 114ifneq ($(PLATFORM),$(COMPILE_PLATFORM)) 115 CROSS_COMPILING=1 116else 117 CROSS_COMPILING=0 118 119 ifneq ($(ARCH),$(COMPILE_ARCH)) 120 CROSS_COMPILING=1 121 endif 122endif 123export CROSS_COMPILING 124 125ifndef VERSION 126VERSION=1.51c-SP 127endif 128 129ifndef CLIENTBIN 130 ifdef MINGW 131 CLIENTBIN=ioWolfSP 132 else 133 CLIENTBIN=iowolfsp 134 endif 135endif 136 137ifndef SERVERBIN 138 ifdef MINGW 139 SERVERBIN=ioWolfSPDED 140 else 141 SERVERBIN=iowolfspded 142 endif 143endif 144 145ifndef BASEGAME 146BASEGAME=main 147endif 148 149ifndef BASEGAME_CFLAGS 150BASEGAME_CFLAGS= 151endif 152 153ifndef COPYDIR 154COPYDIR="/usr/local/games/wolf" 155endif 156 157ifndef COPYBINDIR 158COPYBINDIR=$(COPYDIR) 159endif 160 161ifndef MOUNT_DIR 162MOUNT_DIR=code 163endif 164 165ifndef BUILD_DIR 166BUILD_DIR=build 167endif 168 169ifndef TEMPDIR 170TEMPDIR=/tmp 171endif 172 173ifndef GENERATE_DEPENDENCIES 174GENERATE_DEPENDENCIES=1 175endif 176 177ifndef USE_OPENAL 178USE_OPENAL=1 179endif 180 181ifndef USE_OPENAL_DLOPEN 182USE_OPENAL_DLOPEN=1 183endif 184 185ifndef USE_CURL 186USE_CURL=0 187endif 188 189ifndef USE_CURL_DLOPEN 190 ifdef MINGW 191 USE_CURL_DLOPEN=0 192 else 193 USE_CURL_DLOPEN=1 194 endif 195endif 196 197ifndef USE_CODEC_VORBIS 198USE_CODEC_VORBIS=0 199endif 200 201ifndef USE_CODEC_OPUS 202USE_CODEC_OPUS=1 203endif 204 205ifndef USE_MUMBLE 206USE_MUMBLE=1 207endif 208 209ifndef USE_VOIP 210USE_VOIP=1 211endif 212 213ifndef USE_FREETYPE 214USE_FREETYPE=1 215endif 216 217ifndef USE_INTERNAL_LIBS 218USE_INTERNAL_LIBS=1 219endif 220 221ifndef USE_INTERNAL_OGG 222USE_INTERNAL_OGG=$(USE_INTERNAL_LIBS) 223endif 224 225ifndef USE_INTERNAL_VORBIS 226USE_INTERNAL_VORBIS=$(USE_INTERNAL_LIBS) 227endif 228 229ifndef USE_INTERNAL_OPUS 230USE_INTERNAL_OPUS=$(USE_INTERNAL_LIBS) 231endif 232 233ifndef USE_INTERNAL_ZLIB 234USE_INTERNAL_ZLIB=$(USE_INTERNAL_LIBS) 235endif 236 237ifndef USE_INTERNAL_JPEG 238USE_INTERNAL_JPEG=$(USE_INTERNAL_LIBS) 239endif 240 241ifndef USE_INTERNAL_FREETYPE 242USE_INTERNAL_FREETYPE=$(USE_INTERNAL_LIBS) 243endif 244 245ifndef USE_LOCAL_HEADERS 246USE_LOCAL_HEADERS=$(USE_INTERNAL_LIBS) 247endif 248 249ifndef USE_RENDERER_DLOPEN 250USE_RENDERER_DLOPEN=1 251endif 252 253ifndef USE_XDG 254USE_XDG=0 255endif 256 257ifndef USE_YACC 258USE_YACC=0 259endif 260 261ifndef DEBUG_CFLAGS 262DEBUG_CFLAGS=-g -O0 263endif 264 265ifndef USE_BLOOM 266USE_BLOOM=1 267endif 268 269ifndef USE_OPENGLES 270USE_OPENGLES=0 271endif 272 273ifndef USE_AUTHORIZE_SERVER 274USE_AUTHORIZE_SERVER=0 275endif 276 277 278############################################################################# 279 280BD=$(BUILD_DIR)/debug-$(PLATFORM)-$(ARCH) 281BR=$(BUILD_DIR)/release-$(PLATFORM)-$(ARCH) 282CDIR=$(MOUNT_DIR)/client 283SDIR=$(MOUNT_DIR)/server 284RDIR=$(MOUNT_DIR)/renderer 285R2DIR=$(MOUNT_DIR)/rend2 286CMDIR=$(MOUNT_DIR)/qcommon 287SDLDIR=$(MOUNT_DIR)/sdl 288ASMDIR=$(MOUNT_DIR)/asm 289SYSDIR=$(MOUNT_DIR)/sys 290GDIR=$(MOUNT_DIR)/game 291CGDIR=$(MOUNT_DIR)/cgame 292BLIBDIR=$(MOUNT_DIR)/botlib 293NDIR=$(MOUNT_DIR)/null 294UIDIR=$(MOUNT_DIR)/ui 295JPDIR=$(MOUNT_DIR)/jpeg-8c 296OGGDIR=$(MOUNT_DIR)/libogg-1.3.3 297VORBISDIR=$(MOUNT_DIR)/libvorbis-1.3.6 298OPUSDIR=$(MOUNT_DIR)/opus-1.2.1 299OPUSFILEDIR=$(MOUNT_DIR)/opusfile-0.9 300ZDIR=$(MOUNT_DIR)/zlib-1.2.11 301FTDIR=$(MOUNT_DIR)/freetype-2.9 302SPLDIR=$(MOUNT_DIR)/splines 303Q3ASMDIR=$(MOUNT_DIR)/tools/asm 304LBURGDIR=$(MOUNT_DIR)/tools/lcc/lburg 305Q3CPPDIR=$(MOUNT_DIR)/tools/lcc/cpp 306Q3LCCETCDIR=$(MOUNT_DIR)/tools/lcc/etc 307Q3LCCSRCDIR=$(MOUNT_DIR)/tools/lcc/src 308SDLHDIR=$(MOUNT_DIR)/SDL2 309LIBSDIR=$(MOUNT_DIR)/libs 310 311bin_path=$(shell which $(1) 2> /dev/null) 312 313# We won't need this if we only build the server 314ifneq ($(BUILD_CLIENT),0) 315 # set PKG_CONFIG_PATH or PKG_CONFIG to influence this, e.g. 316 # PKG_CONFIG_PATH=/opt/cross/i386-mingw32msvc/lib/pkgconfig or 317 # PKG_CONFIG=arm-linux-gnueabihf-$(PKG_CONFIG) 318 ifeq ($(CROSS_COMPILING),0) 319 PKG_CONFIG ?= pkg-config 320 else 321 ifneq ($(PKG_CONFIG_PATH),) 322 PKG_CONFIG ?= pkg-config 323 else 324 # Don't use host pkg-config when cross-compiling. 325 # (unknown-pkg-config is meant to be a non-existant command.) 326 PKG_CONFIG ?= unknown-pkg-config 327 endif 328 endif 329 330 ifneq ($(call bin_path, $(PKG_CONFIG)),) 331 CURL_CFLAGS ?= $(shell $(PKG_CONFIG) --silence-errors --cflags libcurl) 332 CURL_LIBS ?= $(shell $(PKG_CONFIG) --silence-errors --libs libcurl) 333 OPENAL_CFLAGS ?= $(shell $(PKG_CONFIG) --silence-errors --cflags openal) 334 OPENAL_LIBS ?= $(shell $(PKG_CONFIG) --silence-errors --libs openal) 335 SDL_CFLAGS ?= $(shell $(PKG_CONFIG) --silence-errors --cflags sdl2|sed 's/-Dmain=SDL_main//') 336 SDL_LIBS ?= $(shell $(PKG_CONFIG) --silence-errors --libs sdl2) 337 else 338 # assume they're in the system default paths (no -I or -L needed) 339 CURL_LIBS ?= -lcurl 340 OPENAL_LIBS ?= -lopenal 341 endif 342 # Use sdl2-config if all else fails 343 ifeq ($(SDL_CFLAGS),) 344 ifneq ($(call bin_path, sdl2-config),) 345 SDL_CFLAGS = $(shell sdl2-config --cflags) 346 SDL_LIBS = $(shell sdl2-config --libs) 347 endif 348 endif 349endif 350 351############################################################################# 352# SETUP AND BUILD -- LINUX 353############################################################################# 354 355## Defaults 356INSTALL=install 357MKDIR=mkdir -p 358EXTRA_FILES= 359CLIENT_EXTRA_FILES= 360 361ifneq (,$(findstring "$(COMPILE_PLATFORM)", "linux" "gnu_kfreebsd" "kfreebsd-gnu" "gnu")) 362 TOOLS_CFLAGS += -DARCH_STRING=\"$(COMPILE_ARCH)\" 363endif 364 365ifneq (,$(findstring "$(PLATFORM)", "linux" "gnu_kfreebsd" "kfreebsd-gnu" "gnu")) 366 367 BASE_CFLAGS = -Wall -fno-strict-aliasing \ 368 -pipe -DUSE_ICON -DARCH_STRING=\\\"$(FILE_ARCH)\\\" 369 CLIENT_CFLAGS += $(SDL_CFLAGS) 370 371 OPTIMIZEVM = -O3 372 OPTIMIZE = $(OPTIMIZEVM) -ffast-math 373 374 ifeq ($(ARCH),x86_64) 375 OPTIMIZEVM = -O3 376 OPTIMIZE = $(OPTIMIZEVM) -ffast-math 377 endif 378 ifeq ($(ARCH),x86) 379 OPTIMIZEVM = -O3 -march=i586 380 OPTIMIZE = $(OPTIMIZEVM) -ffast-math 381 endif 382 ifeq ($(ARCH),ppc) 383 ALTIVEC_CFLAGS = -maltivec 384 endif 385 ifeq ($(ARCH),ppc64) 386 ALTIVEC_CFLAGS = -maltivec 387 endif 388 ifeq ($(ARCH),sparc) 389 OPTIMIZE += -mtune=ultrasparc3 -mv8plus 390 OPTIMIZEVM += -mtune=ultrasparc3 -mv8plus 391 endif 392 ifeq ($(ARCH),sparc64) 393 OPTIMIZE += -mtune=ultrasparc3 -mv8plus 394 OPTIMIZEVM += -mtune=ultrasparc3 -mv8plus 395 endif 396 ifeq ($(ARCH),alpha) 397 # According to http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=410555 398 # -ffast-math will cause the client to die with SIGFPE on Alpha 399 OPTIMIZE = $(OPTIMIZEVM) 400 endif 401 402 SHLIBEXT=so 403 SHLIBCFLAGS=-fPIC -fvisibility=hidden 404 SHLIBLDFLAGS=-shared $(LDFLAGS) 405 406 THREAD_LIBS=-lpthread 407 LIBS=-ldl -lm 408 409 ifeq ($(USE_LOCAL_HEADERS),1) 410 CLIENT_CFLAGS += -I$(SDLHDIR)/include 411 endif 412 413 ifeq ($(USE_INTERNAL_LIBS),1) 414 ifeq ($(CROSS_COMPILING),1) 415 ifeq ($(ARCH),x86) 416 SDL_LIBS = $(LIBSDIR)/linux32/libSDL2main.a \ 417 $(LIBSDIR)/linux32/libSDL2-2.0.so.0.9.0 418 endif 419 ifeq ($(ARCH),x86_64) 420 SDL_LIBS = $(LIBSDIR)/linux64/libSDL2main.a \ 421 $(LIBSDIR)/linux64/libSDL2-2.0.so.0.9.0 422 endif 423 endif 424 endif 425 426 ifeq ($(USE_OPENGLES),1) 427 BUILD_RENDERER_REND2 = 0 428 BASE_CFLAGS += -DUSE_OPENGLES 429 CLIENT_LIBS = $(SDL_LIBS) 430 RENDERER_LIBS = $(SDL_LIBS) 431 SERVER_LIBS = 432 else 433 CLIENT_CFLAGS += $(SDL_CFLAGS) 434 CLIENT_LIBS += $(SDL_LIBS) 435 RENDERER_LIBS += $(SDL_LIBS) 436 SERVER_LIBS = 437 endif 438 439 ifeq ($(USE_OPENAL),1) 440 ifneq ($(USE_OPENAL_DLOPEN),1) 441 CLIENT_LIBS += $(THREAD_LIBS) $(OPENAL_LIBS) 442 endif 443 endif 444 445 ifeq ($(USE_CURL),1) 446 CLIENT_CFLAGS += $(CURL_CFLAGS) 447 ifneq ($(USE_CURL_DLOPEN),1) 448 CLIENT_LIBS += $(CURL_LIBS) 449 endif 450 endif 451 452 ifeq ($(USE_MUMBLE),1) 453 CLIENT_LIBS += -lrt 454 endif 455 456else # ifeq Linux 457 458############################################################################# 459# SETUP AND BUILD -- MAC OS X 460############################################################################# 461 462ifeq ($(PLATFORM),darwin) 463 LIBS = -framework Cocoa 464 CLIENT_LIBS= 465 RENDERER_LIBS= 466 OPTIMIZEVM= -O3 467 468 BASE_CFLAGS = -Wall 469 470 ifeq ($(ARCH),ppc) 471 BASE_CFLAGS += -arch ppc -mmacosx-version-min=10.5 \ 472 -DMAC_OS_X_VERSION_MIN_REQUIRED=1050 -DMAC_OS_X_VERSION_MAX_ALLOWED=1060 473 ALTIVEC_CFLAGS = -faltivec 474 endif 475 ifeq ($(ARCH),ppc64) 476 BASE_CFLAGS += -arch ppc64 -mmacosx-version-min=10.5 \ 477 -DMAC_OS_X_VERSION_MIN_REQUIRED=1050 -DMAC_OS_X_VERSION_MAX_ALLOWED=1060 478 ALTIVEC_CFLAGS = -faltivec 479 endif 480 ifeq ($(ARCH),x86) 481 OPTIMIZEVM += -march=prescott -mfpmath=sse 482 # x86 vm will crash without -mstackrealign since MMX instructions will be 483 # used no matter what and they corrupt the frame pointer in VM calls 484 BASE_CFLAGS += -arch i386 -mstackrealign -mmacosx-version-min=10.6 \ 485 -DMAC_OS_X_VERSION_MIN_REQUIRED=1060 486 endif 487 ifeq ($(ARCH),x86_64) 488 OPTIMIZEVM += -mfpmath=sse 489 BASE_CFLAGS += -arch x86_64 -mmacosx-version-min=10.6 \ 490 -DMAC_OS_X_VERSION_MIN_REQUIRED=1060 491 endif 492 493 # When compiling on OSX for OSX, we're not cross compiling as far as the 494 # Makefile is concerned, as target architecture is specified as a compiler 495 # argument 496 ifeq ($(COMPILE_PLATFORM),darwin) 497 CROSS_COMPILING=0 498 endif 499 500 ifeq ($(CROSS_COMPILING),1) 501 ifeq ($(ARCH),ppc) 502 CC=powerpc-apple-darwin10-gcc 503 RANLIB=powerpc-apple-darwin10-ranlib 504 else 505 ifeq ($(ARCH),x86) 506 CC=i686-apple-darwin10-gcc 507 RANLIB=i686-apple-darwin10-ranlib 508 else 509 $(error Architecture $(ARCH) is not supported when cross compiling) 510 endif 511 endif 512 endif 513 514 BASE_CFLAGS += -fno-strict-aliasing -fno-common -pipe 515 516 ifeq ($(USE_OPENAL),1) 517 ifneq ($(USE_OPENAL_DLOPEN),1) 518 ifneq ($(USE_INTERNAL_LIBS),1) 519 CLIENT_CFLAGS += $(OPENAL_CFLAGS) 520 CLIENT_LIBS += $(THREAD_LIBS) $(OPENAL_LIBS) 521 else 522 CLIENT_LIBS += -framework OpenAL 523 endif 524 endif 525 endif 526 527 ifeq ($(USE_CURL),1) 528 CLIENT_CFLAGS += $(CURL_CFLAGS) 529 ifneq ($(USE_CURL_DLOPEN),1) 530 CLIENT_LIBS += $(CURL_LIBS) 531 endif 532 endif 533 534 BASE_CFLAGS += -D_THREAD_SAFE=1 535 536 ifeq ($(USE_LOCAL_HEADERS),1) 537 ifneq ($(findstring $(ARCH),ppc ppc64),) 538 CLIENT_CFLAGS += -I$(SDLHDIR)/include-2.0.1 539 else 540 CLIENT_CFLAGS += -I$(SDLHDIR)/include 541 endif 542 else 543 CLIENT_CFLAGS += $(SDL_CFLAGS) 544 endif 545 546 # We copy sdlmain before ranlib'ing it so that subversion doesn't think 547 # the file has been modified by each build. 548 ifeq ($(USE_INTERNAL_LIBS),1) 549 LIBSDLMAIN=$(B)/libSDL2main.a 550 LIBSDLMAINSRC=$(LIBSDIR)/macosx/libSDL2main.a 551 CLIENT_LIBS += -framework IOKit $(LIBSDIR)/macosx/libSDL2-2.0.0.dylib 552 RENDERER_LIBS += -framework OpenGL $(LIBSDIR)/macosx/libSDL2-2.0.0.dylib 553 else 554 CLIENT_LIBS += -framework IOKit $(SDL_LIBS) 555 RENDERER_LIBS += -framework OpenGL $(SDL_LIBS) 556 endif 557 558 ifeq ($(USE_INTERNAL_LIBS),1) 559 CLIENT_EXTRA_FILES += $(LIBSDIR)/macosx/libSDL2-2.0.0.dylib $(LIBSDIR)/macosx/libopenal.dylib 560 endif 561 562 OPTIMIZE = $(OPTIMIZEVM) -ffast-math 563 564 SHLIBEXT=dylib 565 SHLIBCFLAGS=-fPIC -fno-common 566 SHLIBLDFLAGS=-dynamiclib $(LDFLAGS) -Wl,-U,_com_altivec 567 568 NOTSHLIBCFLAGS=-mdynamic-no-pic 569 570else # ifeq darwin 571 572 573############################################################################# 574# SETUP AND BUILD -- MINGW32 575############################################################################# 576 577ifdef MINGW 578 579 ifeq ($(CROSS_COMPILING),1) 580 # If CC is already set to something generic, we probably want to use 581 # something more specific 582 ifneq ($(findstring $(strip $(CC)),cc gcc),) 583 CC= 584 endif 585 ifneq ($(findstring $(strip $(CXX)),g++),) 586 CXX= 587 endif 588 589 # We need to figure out the correct gcc and windres 590 ifeq ($(ARCH),x86_64) 591 MINGW_PREFIXES=x86_64-w64-mingw32 amd64-mingw32msvc 592 endif 593 ifeq ($(ARCH),x86) 594 MINGW_PREFIXES=i686-w64-mingw32 i586-mingw32msvc i686-pc-mingw32 595 endif 596 597 ifndef CC 598 CC=$(firstword $(strip $(foreach MINGW_PREFIX, $(MINGW_PREFIXES), \ 599 $(call bin_path, $(MINGW_PREFIX)-gcc)))) 600 endif 601 602 ifndef CXX 603 CXX=$(firstword $(strip $(foreach MINGW_PREFIX, $(MINGW_PREFIXES), \ 604 $(call bin_path, $(MINGW_PREFIX)-g++)))) 605 endif 606 607 ifndef WINDRES 608 WINDRES=$(firstword $(strip $(foreach MINGW_PREFIX, $(MINGW_PREFIXES), \ 609 $(call bin_path, $(MINGW_PREFIX)-windres)))) 610 endif 611 else 612 # Some MinGW installations define CC to cc, but don't actually provide cc, 613 # so check that CC points to a real binary and use gcc if it doesn't 614 ifeq ($(call bin_path, $(CC)),) 615 CC=gcc 616 endif 617 618 ifndef CXX 619 CXX=g++ 620 endif 621 622 endif 623 624 # using generic windres if specific one is not present 625 ifndef WINDRES 626 WINDRES=windres 627 endif 628 629 ifeq ($(CC),) 630 $(error Cannot find a suitable cross compiler for $(PLATFORM)) 631 endif 632 633 BASE_CFLAGS = -Wall -fno-strict-aliasing \ 634 -DUSE_ICON 635 636 # In the absence of wspiapi.h, require Windows XP or later 637 ifeq ($(shell test -e $(CMDIR)/wspiapi.h; echo $$?),1) 638 BASE_CFLAGS += -DWINVER=0x501 639 endif 640 641 ifeq ($(USE_OPENAL),1) 642 CLIENT_CFLAGS += $(OPENAL_CFLAGS) 643 ifneq ($(USE_OPENAL_DLOPEN),1) 644 CLIENT_LDFLAGS += $(OPENAL_LDFLAGS) 645 endif 646 endif 647 648 ifeq ($(ARCH),x86_64) 649 OPTIMIZEVM = -O3 650 OPTIMIZE = $(OPTIMIZEVM) -ffast-math 651 FILE_ARCH=x64 652 endif 653 ifeq ($(ARCH),x86) 654 OPTIMIZEVM = -O3 -march=i586 655 OPTIMIZE = $(OPTIMIZEVM) -ffast-math 656 endif 657 658 SHLIBEXT=dll 659 SHLIBCFLAGS= 660 SHLIBLDFLAGS=-shared $(LDFLAGS) 661 662 BINEXT=.exe 663 664 ifeq ($(CROSS_COMPILING),0) 665 TOOLS_BINEXT=.exe 666 endif 667 668 ifeq ($(COMPILE_PLATFORM),cygwin) 669 TOOLS_BINEXT=.exe 670 TOOLS_CC=$(CC) 671 endif 672 673 LIBS= -lws2_32 -lwinmm -lpsapi 674 # clang 3.5 doesn't support this 675 ifneq ("$(CC)", $(findstring "$(CC)", "clang" "clang++")) 676 CLIENT_LDFLAGS += -mwindows -static -static-libgcc -static-libstdc++ 677 endif 678 CLIENT_LIBS = -lgdi32 -lole32 679 RENDERER_LIBS = -lgdi32 -lole32 680 681 ifeq ($(USE_FREETYPE),1) 682 ifneq ($(USE_INTERNAL_FREETYPE),1) 683 FREETYPE_CFLAGS = -Ifreetype2 684 endif 685 endif 686 687 ifeq ($(USE_CURL),1) 688 CLIENT_CFLAGS += $(CURL_CFLAGS) 689 ifneq ($(USE_CURL_DLOPEN),1) 690 ifeq ($(USE_LOCAL_HEADERS),1) 691 CLIENT_CFLAGS += -DCURL_STATICLIB 692 ifeq ($(ARCH),x86_64) 693 CLIENT_LIBS += $(LIBSDIR)/win64/libcurl.a -lcrypt32 694 else 695 CLIENT_LIBS += $(LIBSDIR)/win32/libcurl.a -lcrypt32 696 endif 697 else 698 CLIENT_LIBS += $(CURL_LIBS) 699 endif 700 endif 701 endif 702 703 # libmingw32 must be linked before libSDLmain 704 CLIENT_LIBS += -lmingw32 705 RENDERER_LIBS += -lmingw32 706 707 ifeq ($(USE_LOCAL_HEADERS),1) 708 CLIENT_CFLAGS += -I$(SDLHDIR)/include 709 endif 710 711 ifeq ($(USE_INTERNAL_LIBS),1) 712 ifeq ($(ARCH),x86) 713 CLIENT_LIBS += $(LIBSDIR)/win32/libSDL2main.a \ 714 $(LIBSDIR)/win32/libSDL2.dll.a 715 RENDERER_LIBS += $(LIBSDIR)/win32/libSDL2main.a \ 716 $(LIBSDIR)/win32/libSDL2.dll.a 717 SDLDLL=SDL2.dll 718 CLIENT_EXTRA_FILES += $(LIBSDIR)/win32/SDL2.dll $(LIBSDIR)/win32/OpenAL32.dll 719 endif 720 ifeq ($(ARCH),x86_64) 721 CLIENT_LIBS += $(LIBSDIR)/win64/libSDL264main.a \ 722 $(LIBSDIR)/win64/libSDL264.dll.a 723 RENDERER_LIBS += $(LIBSDIR)/win64/libSDL264main.a \ 724 $(LIBSDIR)/win64/libSDL264.dll.a 725 SDLDLL=SDL264.dll 726 CLIENT_EXTRA_FILES += $(LIBSDIR)/win64/SDL264.dll $(LIBSDIR)/win64/OpenAL64.dll 727 endif 728 else 729 CLIENT_CFLAGS += $(SDL_CFLAGS) 730 CLIENT_LIBS += $(SDL_LIBS) 731 RENDERER_LIBS += $(SDL_LIBS) 732 SDLDLL=SDL2.dll 733 endif 734 735else # ifdef MINGW 736 737############################################################################# 738# SETUP AND BUILD -- *BSD (is dying) 739############################################################################# 740 741ifneq (,$(findstring "$(PLATFORM)", "freebsd" "openbsd" "netbsd" "dragonfly")) 742 743 BASE_CFLAGS = -Wall -fno-strict-aliasing \ 744 -pipe -DUSE_ICON -DMAP_ANONYMOUS=MAP_ANON 745 CLIENT_CFLAGS += $(SDL_CFLAGS) 746 747 OPTIMIZEVM = -O3 748 OPTIMIZE = $(OPTIMIZEVM) -ffast-math 749 750 ifeq ($(ARCH),x86_64) 751 OPTIMIZEVM = -O3 752 OPTIMIZE = $(OPTIMIZEVM) -ffast-math 753 FILE_ARCH = amd64 754 endif 755 ifeq ($(ARCH),x86) 756 OPTIMIZEVM = -O3 -march=i586 757 OPTIMIZE = $(OPTIMIZEVM) -ffast-math 758 endif 759 ifeq ($(ARCH),ppc) 760 ALTIVEC_CFLAGS = -maltivec 761 endif 762 ifeq ($(ARCH),ppc64) 763 ALTIVEC_CFLAGS = -maltivec 764 endif 765 ifeq ($(ARCH),sparc) 766 OPTIMIZE += -mtune=ultrasparc3 -mv8plus 767 OPTIMIZEVM += -mtune=ultrasparc3 -mv8plus 768 endif 769 ifeq ($(ARCH),sparc64) 770 OPTIMIZE += -mtune=ultrasparc3 -mv8plus 771 OPTIMIZEVM += -mtune=ultrasparc3 -mv8plus 772 endif 773 ifeq ($(ARCH),alpha) 774 # According to http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=410555 775 # -ffast-math will cause the client to die with SIGFPE on Alpha 776 OPTIMIZE = $(OPTIMIZEVM) 777 endif 778 779 ifeq ($(USE_CURL),1) 780 CLIENT_CFLAGS += $(CURL_CFLAGS) 781 USE_CURL_DLOPEN=0 782 endif 783 784 SHLIBEXT=so 785 SHLIBCFLAGS=-fPIC 786 SHLIBLDFLAGS=-shared $(LDFLAGS) 787 788 THREAD_LIBS=-lpthread 789 LIBS=-lm 790 791 CLIENT_LIBS = 792 793 CLIENT_LIBS += $(SDL_LIBS) 794 RENDERER_LIBS = $(SDL_LIBS) 795 796 ifeq ($(USE_OPENAL),1) 797 ifneq ($(USE_OPENAL_DLOPEN),1) 798 CLIENT_LIBS += $(THREAD_LIBS) $(OPENAL_LIBS) 799 endif 800 endif 801 802 ifeq ($(USE_CURL),1) 803 ifneq ($(USE_CURL_DLOPEN),1) 804 CLIENT_LIBS += $(CURL_LIBS) 805 endif 806 endif 807else # ifeq *BSD 808 809############################################################################# 810# SETUP AND BUILD -- IRIX 811############################################################################# 812 813ifeq ($(PLATFORM),irix64) 814 LIB=lib 815 816 ARCH=mips 817 818 CC = c99 819 820 BASE_CFLAGS=-Dstricmp=strcasecmp -Xcpluscomm -woff 1185 \ 821 -I. -I$(ROOT)/usr/include 822 CLIENT_CFLAGS += $(SDL_CFLAGS) 823 OPTIMIZE = -O3 824 825 SHLIBEXT=so 826 SHLIBCFLAGS= 827 SHLIBLDFLAGS=-shared 828 829 LIBS=-ldl -lm -lgen 830 # FIXME: The X libraries probably aren't necessary? 831 CLIENT_LIBS=-L/usr/X11/$(LIB) $(SDL_LIBS) \ 832 -lX11 -lXext -lm 833 RENDERER_LIBS = $(SDL_LIBS) 834 835else # ifeq IRIX 836 837############################################################################# 838# SETUP AND BUILD -- SunOS 839############################################################################# 840 841ifeq ($(PLATFORM),sunos) 842 843 CC=gcc 844 INSTALL=ginstall 845 MKDIR=gmkdir -p 846 COPYDIR="/usr/local/share/games/wolf" 847 848 ifneq ($(ARCH),x86) 849 ifneq ($(ARCH),sparc) 850 $(error arch $(ARCH) is currently not supported) 851 endif 852 endif 853 854 BASE_CFLAGS = -Wall -fno-strict-aliasing \ 855 -pipe -DUSE_ICON 856 CLIENT_CFLAGS += $(SDL_CFLAGS) 857 858 OPTIMIZEVM = -O3 859 860 ifeq ($(ARCH),sparc) 861 OPTIMIZEVM += -O3 -mtune=ultrasparc3 -mv8plus -mno-faster-structs 862 endif 863 ifeq ($(ARCH),x86) 864 OPTIMIZEVM += -march=i586 865 CLIENT_CFLAGS += -I/usr/X11/include/NVIDIA 866 CLIENT_LDFLAGS += -L/usr/X11/lib/NVIDIA -R/usr/X11/lib/NVIDIA 867 endif 868 869 OPTIMIZE = $(OPTIMIZEVM) -ffast-math 870 871 SHLIBEXT=so 872 SHLIBCFLAGS=-fPIC 873 SHLIBLDFLAGS=-shared $(LDFLAGS) 874 875 THREAD_LIBS=-lpthread 876 LIBS=-lsocket -lnsl -ldl -lm 877 878 BOTCFLAGS=-O0 879 880 CLIENT_LIBS +=$(SDL_LIBS) -lX11 -lXext -liconv -lm 881 RENDERER_LIBS = $(SDL_LIBS) 882 883else # ifeq sunos 884 885############################################################################# 886# SETUP AND BUILD -- GENERIC 887############################################################################# 888 BASE_CFLAGS = 889 OPTIMIZE = -O3 890 891 SHLIBEXT=so 892 SHLIBCFLAGS=-fPIC 893 SHLIBLDFLAGS=-shared 894 895endif #Linux 896endif #darwin 897endif #MINGW 898endif #*BSD 899endif #IRIX 900endif #SunOS 901 902ifndef CC 903 CC=gcc 904endif 905 906ifndef CXX 907 CXX=g++ 908endif 909 910ifndef RANLIB 911 RANLIB=ranlib 912endif 913 914ifeq ($(ARCH),x86) 915 BASE_CFLAGS += -m32 916endif 917ifeq ($(ARCH),x86_64) 918 BASE_CFLAGS += -m64 919endif 920ifeq ($(ARCH),ppc) 921 BASE_CFLAGS += -m32 922endif 923ifeq ($(ARCH),ppc64) 924 BASE_CFLAGS += -m64 925endif 926ifeq ($(ARCH),sparc) 927 BASE_CFLAGS += -m32 928endif 929ifeq ($(ARCH),sparc64) 930 BASE_CFLAGS += -m64 931endif 932 933ifndef HAVE_VM_COMPILED 934 HAVE_VM_COMPILED=false 935endif 936 937ifneq ($(findstring $(ARCH),x86 x86_64 ppc ppc64 sparc sparc64),) 938 HAVE_VM_COMPILED=true 939endif 940 941ifeq ($(ARM_VER_CHECK),armv7l) 942 HAVE_VM_COMPILED=true 943endif 944 945ifneq ($(HAVE_VM_COMPILED),true) 946 BASE_CFLAGS += -DNO_VM_COMPILED 947 BUILD_GAME_QVM=0 948endif 949 950TARGETS = 951 952ifndef FULLBINEXT 953 ifndef MINGW 954 FULLBINEXT=.$(ARCH)$(BINEXT) 955 else 956 FULLBINEXT=.$(FILE_ARCH)$(BINEXT) 957 endif 958endif 959 960ifndef SHLIBNAME 961 SHLIBNAME=$(FILE_ARCH).$(SHLIBEXT) 962endif 963 964ifneq ($(BUILD_SERVER),0) 965 TARGETS += $(B)/$(SERVERBIN)$(FULLBINEXT) 966endif 967 968ifneq ($(BUILD_CLIENT),0) 969 ifneq ($(USE_RENDERER_DLOPEN),0) 970 TARGETS += $(B)/$(CLIENTBIN)$(FULLBINEXT) $(B)/renderer_sp_opengl1_$(SHLIBNAME) 971 ifneq ($(BUILD_RENDERER_REND2), 0) 972 TARGETS += $(B)/renderer_sp_rend2_$(SHLIBNAME) 973 endif 974 else 975 TARGETS += $(B)/$(CLIENTBIN)$(FULLBINEXT) 976 ifneq ($(BUILD_RENDERER_REND2), 0) 977 TARGETS += $(B)/$(CLIENTBIN)_rend2$(FULLBINEXT) 978 endif 979 endif 980endif 981 982ifneq ($(BUILD_GAME_SO),0) 983 ifneq ($(BUILD_BASEGAME),0) 984 ifdef MINGW 985 TARGETS += \ 986 $(B)/$(BASEGAME)/cgame_sp_$(SHLIBNAME) \ 987 $(B)/$(BASEGAME)/qagame_sp_$(SHLIBNAME) \ 988 $(B)/$(BASEGAME)/ui_sp_$(SHLIBNAME) 989 else 990 TARGETS += \ 991 $(B)/$(BASEGAME)/cgame.sp.$(SHLIBNAME) \ 992 $(B)/$(BASEGAME)/qagame.sp.$(SHLIBNAME) \ 993 $(B)/$(BASEGAME)/ui.sp.$(SHLIBNAME) 994 endif 995 endif 996endif 997 998ifneq ($(BUILD_GAME_QVM),0) 999 ifneq ($(BUILD_BASEGAME),0) 1000 TARGETS += \ 1001 $(B)/$(BASEGAME)/vm/cgame.sp.qvm \ 1002 $(B)/$(BASEGAME)/vm/qagame.sp.qvm \ 1003 $(B)/$(BASEGAME)/vm/ui.sp.qvm 1004 endif 1005endif 1006 1007ifeq ($(USE_OPENAL),1) 1008 CLIENT_CFLAGS += -DUSE_OPENAL 1009 ifeq ($(USE_OPENAL_DLOPEN),1) 1010 CLIENT_CFLAGS += -DUSE_OPENAL_DLOPEN 1011 endif 1012endif 1013 1014ifeq ($(USE_CURL),1) 1015 CLIENT_CFLAGS += -DUSE_CURL 1016 ifeq ($(USE_CURL_DLOPEN),1) 1017 CLIENT_CFLAGS += -DUSE_CURL_DLOPEN 1018 endif 1019endif 1020 1021ifeq ($(USE_VOIP),1) 1022 CLIENT_CFLAGS += -DUSE_VOIP 1023 SERVER_CFLAGS += -DUSE_VOIP 1024 NEED_OPUS=1 1025endif 1026 1027ifeq ($(USE_CODEC_OPUS),1) 1028 CLIENT_CFLAGS += -DUSE_CODEC_OPUS 1029 NEED_OPUS=1 1030endif 1031 1032ifeq ($(NEED_OPUS),1) 1033 ifeq ($(USE_INTERNAL_OPUS),1) 1034 OPUS_CFLAGS = -DOPUS_BUILD -DHAVE_LRINTF -DFLOAT_APPROX -DUSE_ALLOCA \ 1035 -I$(OPUSDIR)/include -I$(OPUSDIR)/celt -I$(OPUSDIR)/silk \ 1036 -I$(OPUSDIR)/silk/float -I$(OPUSFILEDIR)/include 1037 else 1038 OPUS_CFLAGS ?= $(shell $(PKG_CONFIG) --silence-errors --cflags opusfile opus || true) 1039 OPUS_LIBS ?= $(shell $(PKG_CONFIG) --silence-errors --libs opusfile opus || echo -lopusfile -lopus) 1040 endif 1041 CLIENT_CFLAGS += $(OPUS_CFLAGS) 1042 CLIENT_LIBS += $(OPUS_LIBS) 1043 NEED_OGG=1 1044endif 1045 1046ifeq ($(USE_CODEC_VORBIS),1) 1047 CLIENT_CFLAGS += -DUSE_CODEC_VORBIS 1048 ifeq ($(USE_INTERNAL_VORBIS),1) 1049 CLIENT_CFLAGS += -I$(VORBISDIR)/include -I$(VORBISDIR)/lib 1050 else 1051 VORBIS_CFLAGS ?= $(shell $(PKG_CONFIG) --silence-errors --cflags vorbisfile vorbis || true) 1052 VORBIS_LIBS ?= $(shell $(PKG_CONFIG) --silence-errors --libs vorbisfile vorbis || echo -lvorbisfile -lvorbis) 1053 endif 1054 CLIENT_CFLAGS += $(VORBIS_CFLAGS) 1055 CLIENT_LIBS += $(VORBIS_LIBS) 1056 NEED_OGG=1 1057endif 1058 1059ifeq ($(NEED_OGG),1) 1060 ifeq ($(USE_INTERNAL_OGG),1) 1061 OGG_CFLAGS = -I$(OGGDIR)/include 1062 else 1063 OGG_CFLAGS ?= $(shell $(PKG_CONFIG) --silence-errors --cflags ogg || true) 1064 OGG_LIBS ?= $(shell $(PKG_CONFIG) --silence-errors --libs ogg || echo -logg) 1065 endif 1066 CLIENT_CFLAGS += $(OGG_CFLAGS) 1067 CLIENT_LIBS += $(OGG_LIBS) 1068endif 1069 1070ifeq ($(USE_RENDERER_DLOPEN),1) 1071 CLIENT_CFLAGS += -DUSE_RENDERER_DLOPEN 1072endif 1073 1074ifeq ($(USE_XDG),1) 1075 CLIENT_CFLAGS += -DUSE_XDG 1076 SERVER_CFLAGS += -DUSE_XDG 1077endif 1078 1079ifeq ($(USE_MUMBLE),1) 1080 CLIENT_CFLAGS += -DUSE_MUMBLE 1081endif 1082 1083ifeq ($(USE_INTERNAL_ZLIB),1) 1084 ZLIB_CFLAGS = -DNO_GZIP -I$(ZDIR) 1085else 1086 ZLIB_CFLAGS ?= $(shell $(PKG_CONFIG) --silence-errors --cflags zlib || true) 1087 ZLIB_LIBS ?= $(shell $(PKG_CONFIG) --silence-errors --libs zlib || echo -lz) 1088endif 1089BASE_CFLAGS += $(ZLIB_CFLAGS) 1090LIBS += $(ZLIB_LIBS) 1091 1092ifeq ($(USE_INTERNAL_JPEG),1) 1093 BASE_CFLAGS += -DUSE_INTERNAL_JPEG 1094 BASE_CFLAGS += -I$(JPDIR) 1095else 1096 # IJG libjpeg doesn't have $(PKG_CONFIG), but libjpeg-turbo uses libjpeg.pc; 1097 # we fall back to hard-coded answers if libjpeg.pc is unavailable 1098 JPEG_CFLAGS ?= $(shell $(PKG_CONFIG) --silence-errors --cflags libjpeg || true) 1099 JPEG_LIBS ?= $(shell $(PKG_CONFIG) --silence-errors --libs libjpeg || echo -ljpeg) 1100 BASE_CFLAGS += $(JPEG_CFLAGS) 1101 RENDERER_LIBS += $(JPEG_LIBS) 1102endif 1103 1104ifeq ($(USE_FREETYPE),1) 1105 ifeq ($(USE_INTERNAL_FREETYPE),1) 1106 FREETYPE_CFLAGS += -I$(FTDIR)/include -DFT2_BUILD_LIBRARY 1107 else 1108 FREETYPE_CFLAGS ?= $(shell $(PKG_CONFIG) --silence-errors --cflags freetype2 || true) 1109 FREETYPE_LIBS ?= $(shell $(PKG_CONFIG) --silence-errors --libs freetype2 || echo -lfreetype) 1110 endif 1111 BASE_CFLAGS += -DBUILD_FREETYPE $(FREETYPE_CFLAGS) 1112 RENDERER_LIBS += $(FREETYPE_LIBS) 1113endif 1114 1115ifeq ("$(CC)", $(findstring "$(CC)", "clang" "clang++")) 1116 BASE_CFLAGS += -Qunused-arguments 1117endif 1118 1119ifeq ("$(CXX)", $(findstring "$(CXX)", "clang" "clang++")) 1120 BASE_CFLAGS += -Qunused-arguments 1121endif 1122 1123ifdef DEFAULT_BASEDIR 1124 BASE_CFLAGS += -DDEFAULT_BASEDIR=\\\"$(DEFAULT_BASEDIR)\\\" 1125endif 1126 1127ifeq ($(USE_LOCAL_HEADERS),1) 1128 BASE_CFLAGS += -DUSE_LOCAL_HEADERS 1129endif 1130 1131ifeq ($(BUILD_STANDALONE),1) 1132 BASE_CFLAGS += -DSTANDALONE 1133endif 1134 1135ifeq ($(USE_AUTHORIZE_SERVER),1) 1136 BASE_CFLAGS += -DUSE_AUTHORIZE_SERVER 1137endif 1138 1139ifeq ($(GENERATE_DEPENDENCIES),1) 1140 DEPEND_CFLAGS = -MMD 1141else 1142 DEPEND_CFLAGS = 1143endif 1144 1145ifeq ($(NO_STRIP),1) 1146 STRIP_FLAG = 1147else 1148 STRIP_FLAG = -s 1149endif 1150 1151ifeq ($(USE_BLOOM),1) 1152 CLIENT_CFLAGS += -DUSE_BLOOM 1153endif 1154 1155# https://reproducible-builds.org/specs/source-date-epoch/ 1156ifdef SOURCE_DATE_EPOCH 1157 BASE_CFLAGS += -DPRODUCT_DATE=\\\"$(shell date --date="@$$SOURCE_DATE_EPOCH" "+%b %_d %Y" | sed -e 's/ /\\\ /'g)\\\" 1158endif 1159 1160BASE_CFLAGS += -DPRODUCT_VERSION=\\\"$(VERSION)\\\" 1161BASE_CFLAGS += -Wformat=2 -Wformat-security -Wno-format-nonliteral 1162BASE_CFLAGS += -Wstrict-aliasing=2 -Wmissing-format-attribute 1163BASE_CFLAGS += -Wdisabled-optimization 1164 1165ifeq ($(V),1) 1166echo_cmd=@: 1167Q= 1168else 1169echo_cmd=@echo 1170Q=@ 1171endif 1172 1173define DO_CC 1174$(echo_cmd) "CC $<" 1175$(Q)$(CC) $(NOTSHLIBCFLAGS) $(CFLAGS) $(CLIENT_CFLAGS) $(OPTIMIZE) -o $@ -c $< 1176endef 1177 1178define DO_CC_ALTIVEC 1179$(echo_cmd) "CC $<" 1180$(Q)$(CC) $(NOTSHLIBCFLAGS) $(CFLAGS) $(CLIENT_CFLAGS) $(OPTIMIZE) $(ALTIVEC_CFLAGS) -o $@ -c $< 1181endef 1182 1183define DO_REF_CC 1184$(echo_cmd) "REF_CC $<" 1185$(Q)$(CC) $(SHLIBCFLAGS) $(CFLAGS) $(CLIENT_CFLAGS) $(OPTIMIZE) -o $@ -c $< 1186endef 1187 1188define DO_REF_CC_ALTIVEC 1189$(echo_cmd) "REF_CC $<" 1190$(Q)$(CC) $(SHLIBCFLAGS) $(CFLAGS) $(CLIENT_CFLAGS) $(OPTIMIZE) $(ALTIVEC_CFLAGS) -o $@ -c $< 1191endef 1192 1193define DO_REF_STR 1194$(echo_cmd) "REF_STR $<" 1195$(Q)rm -f $@ 1196$(Q)echo "const char *fallbackShader_$(notdir $(basename $<)) =" >> $@ 1197$(Q)cat $< | sed -e 's/^/\"/;s/$$/\\n\"/' | tr -d '\r' >> $@ 1198$(Q)echo ";" >> $@ 1199endef 1200 1201define DO_BOT_CC 1202$(echo_cmd) "BOT_CC $<" 1203$(Q)$(CC) $(NOTSHLIBCFLAGS) $(CFLAGS) $(BOTCFLAGS) $(OPTIMIZE) -DBOTLIB -o $@ -c $< 1204endef 1205 1206ifeq ($(GENERATE_DEPENDENCIES),1) 1207 DO_QVM_DEP=cat $(@:%.o=%.d) | sed -e 's/\.o/\.asm/g' >> $(@:%.o=%.d) 1208endif 1209 1210define DO_SHLIB_CC 1211$(echo_cmd) "SHLIB_CC $<" 1212$(Q)$(CC) $(BASEGAME_CFLAGS) $(SHLIBCFLAGS) $(CFLAGS) $(OPTIMIZEVM) -o $@ -c $< 1213$(Q)$(DO_QVM_DEP) 1214endef 1215 1216define DO_GAME_CC 1217$(echo_cmd) "GAME_CC $<" 1218$(Q)$(CC) $(BASEGAME_CFLAGS) -DGAMEDLL -DQAGAME $(SHLIBCFLAGS) $(CFLAGS) $(OPTIMIZEVM) -o $@ -c $< 1219$(Q)$(DO_QVM_DEP) 1220endef 1221 1222define DO_CGAME_CC 1223$(echo_cmd) "CGAME_CC $<" 1224$(Q)$(CC) $(BASEGAME_CFLAGS) -DCGAMEDLL -DCGAME $(SHLIBCFLAGS) $(CFLAGS) $(OPTIMIZEVM) -o $@ -c $< 1225$(Q)$(DO_QVM_DEP) 1226endef 1227 1228define DO_UI_CC 1229$(echo_cmd) "UI_CC $<" 1230$(Q)$(CC) $(BASEGAME_CFLAGS) -DUI $(SHLIBCFLAGS) $(CFLAGS) $(OPTIMIZEVM) -o $@ -c $< 1231$(Q)$(DO_QVM_DEP) 1232endef 1233 1234define DO_AS 1235$(echo_cmd) "AS $<" 1236$(Q)$(CC) $(CFLAGS) $(OPTIMIZE) -x assembler-with-cpp -o $@ -c $< 1237endef 1238 1239define DO_DED_CC 1240$(echo_cmd) "DED_CC $<" 1241$(Q)$(CC) $(NOTSHLIBCFLAGS) -DDEDICATED $(CFLAGS) $(SERVER_CFLAGS) $(OPTIMIZE) -o $@ -c $< 1242endef 1243 1244define DO_WINDRES 1245$(echo_cmd) "WINDRES $<" 1246$(Q)$(WINDRES) -i $< -o $@ 1247endef 1248 1249define DO_SPLINE_CXX 1250$(echo_cmd) "SPLINE_CXX $<" 1251$(Q)$(CXX) $(NOTSHLIBCFLAGS) $(CFLAGS) $(CLIENT_CFLAGS) $(OPTIMIZE) -o $@ -c $< 1252endef 1253 1254############################################################################# 1255# MAIN TARGETS 1256############################################################################# 1257 1258default: release 1259all: debug release 1260 1261debug: 1262 @$(MAKE) targets B=$(BD) CFLAGS="$(CFLAGS) $(BASE_CFLAGS) $(DEPEND_CFLAGS)" \ 1263 OPTIMIZE="$(DEBUG_CFLAGS)" OPTIMIZEVM="$(DEBUG_CFLAGS)" \ 1264 CLIENT_CFLAGS="$(CLIENT_CFLAGS)" SERVER_CFLAGS="$(SERVER_CFLAGS)" V=$(V) 1265 1266release: 1267 @$(MAKE) targets B=$(BR) CFLAGS="$(CFLAGS) $(BASE_CFLAGS) $(DEPEND_CFLAGS)" \ 1268 OPTIMIZE="-DNDEBUG $(OPTIMIZE)" OPTIMIZEVM="-DNDEBUG $(OPTIMIZEVM)" \ 1269 CLIENT_CFLAGS="$(CLIENT_CFLAGS)" SERVER_CFLAGS="$(SERVER_CFLAGS)" V=$(V) 1270 1271ifneq ($(call bin_path, tput),) 1272 TERM_COLUMNS=$(shell if c=`tput cols`; then echo $$(($$c-4)); else echo 76; fi) 1273else 1274 TERM_COLUMNS=76 1275endif 1276 1277define ADD_COPY_TARGET 1278TARGETS += $2 1279$2: $1 1280 $(echo_cmd) "CP $$<" 1281 @cp $1 $2 1282endef 1283 1284# These functions allow us to generate rules for copying a list of files 1285# into the base directory of the build; this is useful for bundling libs, 1286# README files or whatever else 1287define GENERATE_COPY_TARGETS 1288$(foreach FILE,$1, \ 1289 $(eval $(call ADD_COPY_TARGET, \ 1290 $(FILE), \ 1291 $(addprefix $(B)/,$(notdir $(FILE)))))) 1292endef 1293 1294$(call GENERATE_COPY_TARGETS,$(EXTRA_FILES)) 1295 1296ifneq ($(BUILD_CLIENT),0) 1297 $(call GENERATE_COPY_TARGETS,$(CLIENT_EXTRA_FILES)) 1298endif 1299 1300NAKED_TARGETS=$(shell echo $(TARGETS) | sed -e "s!$(B)/!!g") 1301 1302print_list=-@for i in $(1); \ 1303 do \ 1304 echo " $$i"; \ 1305 done 1306 1307ifneq ($(call bin_path, fmt),) 1308 print_wrapped=@echo $(1) | fmt -w $(TERM_COLUMNS) | sed -e "s/^\(.*\)$$/ \1/" 1309else 1310 print_wrapped=$(print_list) 1311endif 1312 1313# Create the build directories, check libraries and print out 1314# an informational message, then start building 1315targets: makedirs 1316 @echo "" 1317 @echo "Building in $(B):" 1318 @echo " PLATFORM: $(PLATFORM)" 1319 @echo " ARCH: $(ARCH)" 1320 @echo " FILE_ARCH: $(FILE_ARCH)" 1321 @echo " VERSION: $(VERSION)" 1322 @echo " COMPILE_PLATFORM: $(COMPILE_PLATFORM)" 1323 @echo " COMPILE_ARCH: $(COMPILE_ARCH)" 1324 @echo " HAVE_VM_COMPILED: $(HAVE_VM_COMPILED)" 1325 @echo " PKG_CONFIG: $(PKG_CONFIG)" 1326 @echo " CC: $(CC)" 1327 @echo " CXX: $(CXX)" 1328ifdef MINGW 1329 @echo " WINDRES: $(WINDRES)" 1330endif 1331 @echo "" 1332 @echo " CFLAGS:" 1333 $(call print_wrapped, $(CFLAGS) $(OPTIMIZE)) 1334 @echo "" 1335 @echo " CLIENT_CFLAGS:" 1336 $(call print_wrapped, $(CLIENT_CFLAGS)) 1337 @echo "" 1338 @echo " SERVER_CFLAGS:" 1339 $(call print_wrapped, $(SERVER_CFLAGS)) 1340 @echo "" 1341 @echo " LDFLAGS:" 1342ifneq ($(LDFLAGS),) 1343 $(call print_wrapped, $(LDFLAGS)) 1344endif 1345 @echo "" 1346 @echo " LIBS:" 1347 $(call print_wrapped, $(LIBS)) 1348 @echo "" 1349 @echo " CLIENT_LIBS:" 1350 $(call print_wrapped, $(CLIENT_LIBS)) 1351 @echo "" 1352 @echo " Output:" 1353 $(call print_list, $(NAKED_TARGETS)) 1354 @echo "" 1355ifneq ($(BUILD_ARCHIVE),0) 1356 ifneq ($(TARGETS),) 1357 ifndef DEBUG_MAKEFILE 1358 @$(MAKE) $(TARGETS) $(B).zip V=$(V) 1359 endif 1360 endif 1361else 1362 ifneq ($(TARGETS),) 1363 ifndef DEBUG_MAKEFILE 1364 @$(MAKE) $(TARGETS) V=$(V) 1365 endif 1366 endif 1367endif 1368 1369$(B).zip: $(TARGETS) 1370 @rm -f $@ 1371 @(cd $(B) && zip -r9 ../../$@ $(NAKED_TARGETS)) 1372 1373makedirs: 1374 @$(MKDIR) $(B)/splines 1375 @$(MKDIR) $(B)/client/opus 1376 @$(MKDIR) $(B)/client/vorbis 1377 @$(MKDIR) $(B)/renderer 1378 @$(MKDIR) $(B)/rend2 1379 @$(MKDIR) $(B)/rend2/glsl 1380 @$(MKDIR) $(B)/ded 1381 @$(MKDIR) $(B)/$(BASEGAME)/cgame 1382 @$(MKDIR) $(B)/$(BASEGAME)/game 1383 @$(MKDIR) $(B)/$(BASEGAME)/ui 1384 @$(MKDIR) $(B)/$(BASEGAME)/qcommon 1385 @$(MKDIR) $(B)/$(BASEGAME)/vm 1386 @$(MKDIR) $(B)/tools/asm 1387 @$(MKDIR) $(B)/tools/etc 1388 @$(MKDIR) $(B)/tools/rcc 1389 @$(MKDIR) $(B)/tools/cpp 1390 @$(MKDIR) $(B)/tools/lburg 1391 1392############################################################################# 1393# QVM BUILD TOOLS 1394############################################################################# 1395 1396ifndef TOOLS_CC 1397 # A compiler which probably produces native binaries 1398 TOOLS_CC = gcc 1399endif 1400 1401ifndef YACC 1402 YACC = yacc 1403endif 1404 1405TOOLS_OPTIMIZE = -g -Wall -fno-strict-aliasing 1406TOOLS_CFLAGS += $(TOOLS_OPTIMIZE) \ 1407 -DTEMPDIR=\"$(TEMPDIR)\" -DSYSTEM=\"\" \ 1408 -I$(Q3LCCSRCDIR) \ 1409 -I$(LBURGDIR) 1410TOOLS_LIBS = 1411TOOLS_LDFLAGS = 1412 1413ifeq ($(GENERATE_DEPENDENCIES),1) 1414 TOOLS_CFLAGS += -MMD 1415endif 1416 1417define DO_YACC 1418$(echo_cmd) "YACC $<" 1419$(Q)$(YACC) $< 1420$(Q)mv -f y.tab.c $@ 1421endef 1422 1423define DO_TOOLS_CC 1424$(echo_cmd) "TOOLS_CC $<" 1425$(Q)$(TOOLS_CC) $(TOOLS_CFLAGS) -o $@ -c $< 1426endef 1427 1428define DO_TOOLS_CC_DAGCHECK 1429$(echo_cmd) "TOOLS_CC_DAGCHECK $<" 1430$(Q)$(TOOLS_CC) $(TOOLS_CFLAGS) -Wno-unused -o $@ -c $< 1431endef 1432 1433LBURG = $(B)/tools/lburg/lburg$(TOOLS_BINEXT) 1434DAGCHECK_C = $(B)/tools/rcc/dagcheck.c 1435Q3RCC = $(B)/tools/q3rcc$(TOOLS_BINEXT) 1436Q3CPP = $(B)/tools/q3cpp$(TOOLS_BINEXT) 1437Q3LCC = $(B)/tools/q3lcc$(TOOLS_BINEXT) 1438Q3ASM = $(B)/tools/q3asm$(TOOLS_BINEXT) 1439 1440LBURGOBJ= \ 1441 $(B)/tools/lburg/lburg.o \ 1442 $(B)/tools/lburg/gram.o 1443 1444# override GNU Make built-in rule for converting gram.y to gram.c 1445%.c: %.y 1446ifeq ($(USE_YACC),1) 1447 $(DO_YACC) 1448endif 1449 1450$(B)/tools/lburg/%.o: $(LBURGDIR)/%.c 1451 $(DO_TOOLS_CC) 1452 1453$(LBURG): $(LBURGOBJ) 1454 $(echo_cmd) "LD $@" 1455 $(Q)$(TOOLS_CC) $(TOOLS_CFLAGS) $(TOOLS_LDFLAGS) -o $@ $^ $(TOOLS_LIBS) 1456 1457Q3RCCOBJ = \ 1458 $(B)/tools/rcc/alloc.o \ 1459 $(B)/tools/rcc/bind.o \ 1460 $(B)/tools/rcc/bytecode.o \ 1461 $(B)/tools/rcc/dag.o \ 1462 $(B)/tools/rcc/dagcheck.o \ 1463 $(B)/tools/rcc/decl.o \ 1464 $(B)/tools/rcc/enode.o \ 1465 $(B)/tools/rcc/error.o \ 1466 $(B)/tools/rcc/event.o \ 1467 $(B)/tools/rcc/expr.o \ 1468 $(B)/tools/rcc/gen.o \ 1469 $(B)/tools/rcc/init.o \ 1470 $(B)/tools/rcc/inits.o \ 1471 $(B)/tools/rcc/input.o \ 1472 $(B)/tools/rcc/lex.o \ 1473 $(B)/tools/rcc/list.o \ 1474 $(B)/tools/rcc/main.o \ 1475 $(B)/tools/rcc/null.o \ 1476 $(B)/tools/rcc/output.o \ 1477 $(B)/tools/rcc/prof.o \ 1478 $(B)/tools/rcc/profio.o \ 1479 $(B)/tools/rcc/simp.o \ 1480 $(B)/tools/rcc/stmt.o \ 1481 $(B)/tools/rcc/string.o \ 1482 $(B)/tools/rcc/sym.o \ 1483 $(B)/tools/rcc/symbolic.o \ 1484 $(B)/tools/rcc/trace.o \ 1485 $(B)/tools/rcc/tree.o \ 1486 $(B)/tools/rcc/types.o 1487 1488$(DAGCHECK_C): $(LBURG) $(Q3LCCSRCDIR)/dagcheck.md 1489 $(echo_cmd) "LBURG $(Q3LCCSRCDIR)/dagcheck.md" 1490 $(Q)$(LBURG) $(Q3LCCSRCDIR)/dagcheck.md $@ 1491 1492$(B)/tools/rcc/dagcheck.o: $(DAGCHECK_C) 1493 $(DO_TOOLS_CC_DAGCHECK) 1494 1495$(B)/tools/rcc/%.o: $(Q3LCCSRCDIR)/%.c 1496 $(DO_TOOLS_CC) 1497 1498$(Q3RCC): $(Q3RCCOBJ) 1499 $(echo_cmd) "LD $@" 1500 $(Q)$(TOOLS_CC) $(TOOLS_CFLAGS) $(TOOLS_LDFLAGS) -o $@ $^ $(TOOLS_LIBS) 1501 1502Q3CPPOBJ = \ 1503 $(B)/tools/cpp/cpp.o \ 1504 $(B)/tools/cpp/lex.o \ 1505 $(B)/tools/cpp/nlist.o \ 1506 $(B)/tools/cpp/tokens.o \ 1507 $(B)/tools/cpp/macro.o \ 1508 $(B)/tools/cpp/eval.o \ 1509 $(B)/tools/cpp/include.o \ 1510 $(B)/tools/cpp/hideset.o \ 1511 $(B)/tools/cpp/getopt.o \ 1512 $(B)/tools/cpp/unix.o 1513 1514$(B)/tools/cpp/%.o: $(Q3CPPDIR)/%.c 1515 $(DO_TOOLS_CC) 1516 1517$(Q3CPP): $(Q3CPPOBJ) 1518 $(echo_cmd) "LD $@" 1519 $(Q)$(TOOLS_CC) $(TOOLS_CFLAGS) $(TOOLS_LDFLAGS) -o $@ $^ $(TOOLS_LIBS) 1520 1521Q3LCCOBJ = \ 1522 $(B)/tools/etc/lcc.o \ 1523 $(B)/tools/etc/bytecode.o 1524 1525$(B)/tools/etc/%.o: $(Q3LCCETCDIR)/%.c 1526 $(DO_TOOLS_CC) 1527 1528$(Q3LCC): $(Q3LCCOBJ) $(Q3RCC) $(Q3CPP) 1529 $(echo_cmd) "LD $@" 1530 $(Q)$(TOOLS_CC) $(TOOLS_CFLAGS) $(TOOLS_LDFLAGS) -o $@ $(Q3LCCOBJ) $(TOOLS_LIBS) 1531 1532define DO_Q3LCC 1533$(echo_cmd) "Q3LCC $<" 1534$(Q)$(Q3LCC) $(BASEGAME_CFLAGS) -o $@ $< 1535endef 1536 1537define DO_CGAME_Q3LCC 1538$(echo_cmd) "CGAME_Q3LCC $<" 1539$(Q)$(Q3LCC) $(BASEGAME_CFLAGS) -DCGAMEDLL -DCGAME -o $@ $< 1540endef 1541 1542define DO_GAME_Q3LCC 1543$(echo_cmd) "GAME_Q3LCC $<" 1544$(Q)$(Q3LCC) $(BASEGAME_CFLAGS) -DGAMEDLL -DQAGAME -o $@ $< 1545endef 1546 1547define DO_UI_Q3LCC 1548$(echo_cmd) "UI_Q3LCC $<" 1549$(Q)$(Q3LCC) $(BASEGAME_CFLAGS) -DUI -o $@ $< 1550endef 1551 1552Q3ASMOBJ = \ 1553 $(B)/tools/asm/q3asm.o \ 1554 $(B)/tools/asm/cmdlib.o 1555 1556$(B)/tools/asm/%.o: $(Q3ASMDIR)/%.c 1557 $(DO_TOOLS_CC) 1558 1559$(Q3ASM): $(Q3ASMOBJ) 1560 $(echo_cmd) "LD $@" 1561 $(Q)$(TOOLS_CC) $(TOOLS_CFLAGS) $(TOOLS_LDFLAGS) -o $@ $^ $(TOOLS_LIBS) 1562 1563 1564############################################################################# 1565# CLIENT/SERVER 1566############################################################################# 1567 1568Q3OBJ = \ 1569 $(B)/client/cl_cgame.o \ 1570 $(B)/client/cl_cin.o \ 1571 $(B)/client/cl_console.o \ 1572 $(B)/client/cl_input.o \ 1573 $(B)/client/cl_keys.o \ 1574 $(B)/client/cl_main.o \ 1575 $(B)/client/cl_net_chan.o \ 1576 $(B)/client/cl_parse.o \ 1577 $(B)/client/cl_scrn.o \ 1578 $(B)/client/cl_ui.o \ 1579 $(B)/client/cl_avi.o \ 1580 \ 1581 $(B)/client/cm_load.o \ 1582 $(B)/client/cm_patch.o \ 1583 $(B)/client/cm_polylib.o \ 1584 $(B)/client/cm_test.o \ 1585 $(B)/client/cm_trace.o \ 1586 \ 1587 $(B)/client/cmd.o \ 1588 $(B)/client/common.o \ 1589 $(B)/client/cvar.o \ 1590 $(B)/client/files.o \ 1591 $(B)/client/md4.o \ 1592 $(B)/client/md5.o \ 1593 $(B)/client/msg.o \ 1594 $(B)/client/net_chan.o \ 1595 $(B)/client/net_ip.o \ 1596 $(B)/client/huffman.o \ 1597 \ 1598 $(B)/client/snd_altivec.o \ 1599 $(B)/client/snd_adpcm.o \ 1600 $(B)/client/snd_dma.o \ 1601 $(B)/client/snd_mem.o \ 1602 $(B)/client/snd_mix.o \ 1603 $(B)/client/snd_wavelet.o \ 1604 \ 1605 $(B)/client/snd_main.o \ 1606 $(B)/client/snd_codec.o \ 1607 $(B)/client/snd_codec_wav.o \ 1608 $(B)/client/snd_codec_ogg.o \ 1609 $(B)/client/snd_codec_opus.o \ 1610 \ 1611 $(B)/client/qal.o \ 1612 $(B)/client/snd_openal.o \ 1613 \ 1614 $(B)/client/cl_curl.o \ 1615 \ 1616 $(B)/client/sv_bot.o \ 1617 $(B)/client/sv_ccmds.o \ 1618 $(B)/client/sv_client.o \ 1619 $(B)/client/sv_game.o \ 1620 $(B)/client/sv_init.o \ 1621 $(B)/client/sv_main.o \ 1622 $(B)/client/sv_net_chan.o \ 1623 $(B)/client/sv_snapshot.o \ 1624 $(B)/client/sv_world.o \ 1625 \ 1626 $(B)/client/q_math.o \ 1627 $(B)/client/q_shared.o \ 1628 \ 1629 $(B)/client/unzip.o \ 1630 $(B)/client/ioapi.o \ 1631 $(B)/client/puff.o \ 1632 $(B)/client/vm.o \ 1633 $(B)/client/vm_interpreted.o \ 1634 \ 1635 $(B)/client/be_aas_bspq3.o \ 1636 $(B)/client/be_aas_cluster.o \ 1637 $(B)/client/be_aas_debug.o \ 1638 $(B)/client/be_aas_entity.o \ 1639 $(B)/client/be_aas_file.o \ 1640 $(B)/client/be_aas_main.o \ 1641 $(B)/client/be_aas_move.o \ 1642 $(B)/client/be_aas_optimize.o \ 1643 $(B)/client/be_aas_reach.o \ 1644 $(B)/client/be_aas_route.o \ 1645 $(B)/client/be_aas_routealt.o \ 1646 $(B)/client/be_aas_routetable.o \ 1647 $(B)/client/be_aas_sample.o \ 1648 $(B)/client/be_ai_char.o \ 1649 $(B)/client/be_ai_chat.o \ 1650 $(B)/client/be_ai_gen.o \ 1651 $(B)/client/be_ai_goal.o \ 1652 $(B)/client/be_ai_move.o \ 1653 $(B)/client/be_ai_weap.o \ 1654 $(B)/client/be_ai_weight.o \ 1655 $(B)/client/be_ea.o \ 1656 $(B)/client/be_interface.o \ 1657 $(B)/client/l_crc.o \ 1658 $(B)/client/l_libvar.o \ 1659 $(B)/client/l_log.o \ 1660 $(B)/client/l_memory.o \ 1661 $(B)/client/l_precomp.o \ 1662 $(B)/client/l_script.o \ 1663 $(B)/client/l_struct.o \ 1664 \ 1665 $(B)/splines/math_angles.o \ 1666 $(B)/splines/math_matrix.o \ 1667 $(B)/splines/math_quaternion.o \ 1668 $(B)/splines/math_vector.o \ 1669 $(B)/splines/q_parse.o \ 1670 $(B)/splines/splines.o \ 1671 $(B)/splines/util_str.o \ 1672 \ 1673 $(B)/client/sdl_input.o \ 1674 $(B)/client/sdl_snd.o \ 1675 \ 1676 $(B)/client/con_log.o \ 1677 $(B)/client/sys_main.o 1678 1679ifdef MINGW 1680 Q3OBJ += \ 1681 $(B)/client/con_passive.o 1682else 1683 Q3OBJ += \ 1684 $(B)/client/con_tty.o 1685endif 1686 1687Q3R2OBJ = \ 1688 $(B)/rend2/tr_animation.o \ 1689 $(B)/rend2/tr_backend.o \ 1690 $(B)/rend2/tr_bsp.o \ 1691 $(B)/rend2/tr_cmds.o \ 1692 $(B)/rend2/tr_curve.o \ 1693 $(B)/rend2/tr_dsa.o \ 1694 $(B)/rend2/tr_extramath.o \ 1695 $(B)/rend2/tr_extensions.o \ 1696 $(B)/rend2/tr_fbo.o \ 1697 $(B)/rend2/tr_flares.o \ 1698 $(B)/rend2/tr_font.o \ 1699 $(B)/rend2/tr_glsl.o \ 1700 $(B)/rend2/tr_image.o \ 1701 $(B)/rend2/tr_image_bmp.o \ 1702 $(B)/rend2/tr_image_jpg.o \ 1703 $(B)/rend2/tr_image_pcx.o \ 1704 $(B)/rend2/tr_image_png.o \ 1705 $(B)/rend2/tr_image_tga.o \ 1706 $(B)/rend2/tr_image_dds.o \ 1707 $(B)/rend2/tr_init.o \ 1708 $(B)/rend2/tr_light.o \ 1709 $(B)/rend2/tr_main.o \ 1710 $(B)/rend2/tr_marks.o \ 1711 $(B)/rend2/tr_mesh.o \ 1712 $(B)/rend2/tr_model.o \ 1713 $(B)/rend2/tr_model_iqm.o \ 1714 $(B)/rend2/tr_noise.o \ 1715 $(B)/rend2/tr_postprocess.o \ 1716 $(B)/rend2/tr_scene.o \ 1717 $(B)/rend2/tr_shade.o \ 1718 $(B)/rend2/tr_shade_calc.o \ 1719 $(B)/rend2/tr_shader.o \ 1720 $(B)/rend2/tr_shadows.o \ 1721 $(B)/rend2/tr_sky.o \ 1722 $(B)/rend2/tr_surface.o \ 1723 $(B)/rend2/tr_vbo.o \ 1724 $(B)/rend2/tr_world.o \ 1725 \ 1726 $(B)/renderer/sdl_gamma.o \ 1727 $(B)/renderer/sdl_glimp.o 1728 1729Q3R2STRINGOBJ = \ 1730 $(B)/rend2/glsl/bokeh_fp.o \ 1731 $(B)/rend2/glsl/bokeh_vp.o \ 1732 $(B)/rend2/glsl/calclevels4x_fp.o \ 1733 $(B)/rend2/glsl/calclevels4x_vp.o \ 1734 $(B)/rend2/glsl/depthblur_fp.o \ 1735 $(B)/rend2/glsl/depthblur_vp.o \ 1736 $(B)/rend2/glsl/dlight_fp.o \ 1737 $(B)/rend2/glsl/dlight_vp.o \ 1738 $(B)/rend2/glsl/down4x_fp.o \ 1739 $(B)/rend2/glsl/down4x_vp.o \ 1740 $(B)/rend2/glsl/fogpass_fp.o \ 1741 $(B)/rend2/glsl/fogpass_vp.o \ 1742 $(B)/rend2/glsl/generic_fp.o \ 1743 $(B)/rend2/glsl/generic_vp.o \ 1744 $(B)/rend2/glsl/lightall_fp.o \ 1745 $(B)/rend2/glsl/lightall_vp.o \ 1746 $(B)/rend2/glsl/pshadow_fp.o \ 1747 $(B)/rend2/glsl/pshadow_vp.o \ 1748 $(B)/rend2/glsl/shadowfill_fp.o \ 1749 $(B)/rend2/glsl/shadowfill_vp.o \ 1750 $(B)/rend2/glsl/shadowmask_fp.o \ 1751 $(B)/rend2/glsl/shadowmask_vp.o \ 1752 $(B)/rend2/glsl/ssao_fp.o \ 1753 $(B)/rend2/glsl/ssao_vp.o \ 1754 $(B)/rend2/glsl/texturecolor_fp.o \ 1755 $(B)/rend2/glsl/texturecolor_vp.o \ 1756 $(B)/rend2/glsl/tonemap_fp.o \ 1757 $(B)/rend2/glsl/tonemap_vp.o 1758 1759Q3ROBJ = \ 1760 $(B)/renderer/tr_altivec.o \ 1761 $(B)/renderer/tr_animation.o \ 1762 $(B)/renderer/tr_backend.o \ 1763 $(B)/renderer/tr_bsp.o \ 1764 $(B)/renderer/tr_cmds.o \ 1765 $(B)/renderer/tr_cmesh.o \ 1766 $(B)/renderer/tr_curve.o \ 1767 $(B)/renderer/tr_flares.o \ 1768 $(B)/renderer/tr_font.o \ 1769 $(B)/renderer/tr_image.o \ 1770 $(B)/renderer/tr_image_bmp.o \ 1771 $(B)/renderer/tr_image_jpg.o \ 1772 $(B)/renderer/tr_image_pcx.o \ 1773 $(B)/renderer/tr_image_png.o \ 1774 $(B)/renderer/tr_image_tga.o \ 1775 $(B)/renderer/tr_init.o \ 1776 $(B)/renderer/tr_light.o \ 1777 $(B)/renderer/tr_main.o \ 1778 $(B)/renderer/tr_marks.o \ 1779 $(B)/renderer/tr_mesh.o \ 1780 $(B)/renderer/tr_model.o \ 1781 $(B)/renderer/tr_model_iqm.o \ 1782 $(B)/renderer/tr_noise.o \ 1783 $(B)/renderer/tr_scene.o \ 1784 $(B)/renderer/tr_shade.o \ 1785 $(B)/renderer/tr_shade_calc.o \ 1786 $(B)/renderer/tr_shader.o \ 1787 $(B)/renderer/tr_shadows.o \ 1788 $(B)/renderer/tr_sky.o \ 1789 $(B)/renderer/tr_surface.o \ 1790 $(B)/renderer/tr_world.o \ 1791 1792ifeq ($(USE_BLOOM),1) 1793 Q3ROBJ += $(B)/renderer/tr_bloom.o 1794endif 1795 1796 Q3ROBJ += $(B)/renderer/sdl_gamma.o 1797 Q3ROBJ += $(B)/renderer/sdl_glimp.o 1798 1799ifneq ($(USE_RENDERER_DLOPEN), 0) 1800 Q3ROBJ += \ 1801 $(B)/renderer/q_shared.o \ 1802 $(B)/renderer/puff.o \ 1803 $(B)/renderer/q_math.o \ 1804 $(B)/renderer/tr_subs.o 1805 1806 Q3R2OBJ += \ 1807 $(B)/renderer/q_shared.o \ 1808 $(B)/renderer/puff.o \ 1809 $(B)/renderer/q_math.o \ 1810 $(B)/renderer/tr_subs.o 1811endif 1812 1813ifneq ($(USE_INTERNAL_JPEG),0) 1814 JPGOBJ = \ 1815 $(B)/renderer/jaricom.o \ 1816 $(B)/renderer/jcapimin.o \ 1817 $(B)/renderer/jcapistd.o \ 1818 $(B)/renderer/jcarith.o \ 1819 $(B)/renderer/jccoefct.o \ 1820 $(B)/renderer/jccolor.o \ 1821 $(B)/renderer/jcdctmgr.o \ 1822 $(B)/renderer/jchuff.o \ 1823 $(B)/renderer/jcinit.o \ 1824 $(B)/renderer/jcmainct.o \ 1825 $(B)/renderer/jcmarker.o \ 1826 $(B)/renderer/jcmaster.o \ 1827 $(B)/renderer/jcomapi.o \ 1828 $(B)/renderer/jcparam.o \ 1829 $(B)/renderer/jcprepct.o \ 1830 $(B)/renderer/jcsample.o \ 1831 $(B)/renderer/jctrans.o \ 1832 $(B)/renderer/jdapimin.o \ 1833 $(B)/renderer/jdapistd.o \ 1834 $(B)/renderer/jdarith.o \ 1835 $(B)/renderer/jdatadst.o \ 1836 $(B)/renderer/jdatasrc.o \ 1837 $(B)/renderer/jdcoefct.o \ 1838 $(B)/renderer/jdcolor.o \ 1839 $(B)/renderer/jddctmgr.o \ 1840 $(B)/renderer/jdhuff.o \ 1841 $(B)/renderer/jdinput.o \ 1842 $(B)/renderer/jdmainct.o \ 1843 $(B)/renderer/jdmarker.o \ 1844 $(B)/renderer/jdmaster.o \ 1845 $(B)/renderer/jdmerge.o \ 1846 $(B)/renderer/jdpostct.o \ 1847 $(B)/renderer/jdsample.o \ 1848 $(B)/renderer/jdtrans.o \ 1849 $(B)/renderer/jerror.o \ 1850 $(B)/renderer/jfdctflt.o \ 1851 $(B)/renderer/jfdctfst.o \ 1852 $(B)/renderer/jfdctint.o \ 1853 $(B)/renderer/jidctflt.o \ 1854 $(B)/renderer/jidctfst.o \ 1855 $(B)/renderer/jidctint.o \ 1856 $(B)/renderer/jmemmgr.o \ 1857 $(B)/renderer/jmemnobs.o \ 1858 $(B)/renderer/jquant1.o \ 1859 $(B)/renderer/jquant2.o \ 1860 $(B)/renderer/jutils.o 1861endif 1862 1863ifeq ($(USE_FREETYPE),1) 1864ifneq ($(USE_INTERNAL_FREETYPE),0) 1865 FTOBJ += \ 1866 $(B)/renderer/ftsystem.o \ 1867 $(B)/renderer/ftdebug.o \ 1868 $(B)/renderer/ftinit.o \ 1869 $(B)/renderer/ftbase.o \ 1870 $(B)/renderer/ftbbox.o \ 1871 $(B)/renderer/ftbdf.o \ 1872 $(B)/renderer/ftbitmap.o \ 1873 $(B)/renderer/ftcid.o \ 1874 $(B)/renderer/ftfntfmt.o \ 1875 $(B)/renderer/ftfstype.o \ 1876 $(B)/renderer/ftgasp.o \ 1877 $(B)/renderer/ftglyph.o \ 1878 $(B)/renderer/ftgxval.o \ 1879 $(B)/renderer/ftlcdfil.o \ 1880 $(B)/renderer/ftmm.o \ 1881 $(B)/renderer/ftotval.o \ 1882 $(B)/renderer/ftpatent.o \ 1883 $(B)/renderer/ftpfr.o \ 1884 $(B)/renderer/ftstroke.o \ 1885 $(B)/renderer/ftsynth.o \ 1886 $(B)/renderer/fttype1.o \ 1887 $(B)/renderer/ftwinfnt.o \ 1888 $(B)/renderer/truetype.o \ 1889 $(B)/renderer/type1.o \ 1890 $(B)/renderer/cff.o \ 1891 $(B)/renderer/type1cid.o \ 1892 $(B)/renderer/pfr.o \ 1893 $(B)/renderer/type42.o \ 1894 $(B)/renderer/winfnt.o \ 1895 $(B)/renderer/pcf.o \ 1896 $(B)/renderer/bdf.o \ 1897 $(B)/renderer/sfnt.o \ 1898 $(B)/renderer/autofit.o \ 1899 $(B)/renderer/pshinter.o \ 1900 $(B)/renderer/raster.o \ 1901 $(B)/renderer/smooth.o \ 1902 $(B)/renderer/ftcache.o \ 1903 $(B)/renderer/ftgzip.o \ 1904 $(B)/renderer/ftlzw.o \ 1905 $(B)/renderer/ftbzip2.o \ 1906 $(B)/renderer/psaux.o \ 1907 $(B)/renderer/psnames.o 1908endif 1909endif 1910 1911ifeq ($(ARCH),x86) 1912 Q3OBJ += \ 1913 $(B)/client/snd_mixa.o \ 1914 $(B)/client/matha.o \ 1915 $(B)/client/snapvector.o \ 1916 $(B)/client/ftola.o 1917endif 1918ifeq ($(ARCH),x86_64) 1919 Q3OBJ += \ 1920 $(B)/client/snapvector.o \ 1921 $(B)/client/ftola.o 1922endif 1923 1924ifeq ($(NEED_OPUS),1) 1925ifeq ($(USE_INTERNAL_OPUS),1) 1926Q3OBJ += \ 1927 $(B)/client/opus/opus.o \ 1928 $(B)/client/opus/opus_decoder.o \ 1929 $(B)/client/opus/opus_encoder.o \ 1930 $(B)/client/opus/opus_multistream.o \ 1931 $(B)/client/opus/opus_multistream_encoder.o \ 1932 $(B)/client/opus/opus_multistream_decoder.o \ 1933 $(B)/client/opus/repacketizer.o \ 1934 $(B)/client/opus/analysis.o \ 1935 $(B)/client/opus/mlp.o \ 1936 $(B)/client/opus/mlp_data.o \ 1937 \ 1938 $(B)/client/opus/bands.o \ 1939 $(B)/client/opus/celt.o \ 1940 $(B)/client/opus/celt_encoder.o \ 1941 $(B)/client/opus/celt_decoder.o \ 1942 $(B)/client/opus/cwrs.o \ 1943 $(B)/client/opus/entcode.o \ 1944 $(B)/client/opus/entdec.o \ 1945 $(B)/client/opus/entenc.o \ 1946 $(B)/client/opus/kiss_fft.o \ 1947 $(B)/client/opus/laplace.o \ 1948 $(B)/client/opus/mathops.o \ 1949 $(B)/client/opus/mdct.o \ 1950 $(B)/client/opus/modes.o \ 1951 $(B)/client/opus/pitch.o \ 1952 $(B)/client/opus/celt_lpc.o \ 1953 $(B)/client/opus/quant_bands.o \ 1954 $(B)/client/opus/rate.o \ 1955 $(B)/client/opus/vq.o \ 1956 \ 1957 $(B)/client/opus/CNG.o \ 1958 $(B)/client/opus/code_signs.o \ 1959 $(B)/client/opus/init_decoder.o \ 1960 $(B)/client/opus/decode_core.o \ 1961 $(B)/client/opus/decode_frame.o \ 1962 $(B)/client/opus/decode_parameters.o \ 1963 $(B)/client/opus/decode_indices.o \ 1964 $(B)/client/opus/decode_pulses.o \ 1965 $(B)/client/opus/decoder_set_fs.o \ 1966 $(B)/client/opus/dec_API.o \ 1967 $(B)/client/opus/enc_API.o \ 1968 $(B)/client/opus/encode_indices.o \ 1969 $(B)/client/opus/encode_pulses.o \ 1970 $(B)/client/opus/gain_quant.o \ 1971 $(B)/client/opus/interpolate.o \ 1972 $(B)/client/opus/LP_variable_cutoff.o \ 1973 $(B)/client/opus/NLSF_decode.o \ 1974 $(B)/client/opus/NSQ.o \ 1975 $(B)/client/opus/NSQ_del_dec.o \ 1976 $(B)/client/opus/PLC.o \ 1977 $(B)/client/opus/shell_coder.o \ 1978 $(B)/client/opus/tables_gain.o \ 1979 $(B)/client/opus/tables_LTP.o \ 1980 $(B)/client/opus/tables_NLSF_CB_NB_MB.o \ 1981 $(B)/client/opus/tables_NLSF_CB_WB.o \ 1982 $(B)/client/opus/tables_other.o \ 1983 $(B)/client/opus/tables_pitch_lag.o \ 1984 $(B)/client/opus/tables_pulses_per_block.o \ 1985 $(B)/client/opus/VAD.o \ 1986 $(B)/client/opus/control_audio_bandwidth.o \ 1987 $(B)/client/opus/quant_LTP_gains.o \ 1988 $(B)/client/opus/VQ_WMat_EC.o \ 1989 $(B)/client/opus/HP_variable_cutoff.o \ 1990 $(B)/client/opus/NLSF_encode.o \ 1991 $(B)/client/opus/NLSF_VQ.o \ 1992 $(B)/client/opus/NLSF_unpack.o \ 1993 $(B)/client/opus/NLSF_del_dec_quant.o \ 1994 $(B)/client/opus/process_NLSFs.o \ 1995 $(B)/client/opus/stereo_LR_to_MS.o \ 1996 $(B)/client/opus/stereo_MS_to_LR.o \ 1997 $(B)/client/opus/check_control_input.o \ 1998 $(B)/client/opus/control_SNR.o \ 1999 $(B)/client/opus/init_encoder.o \ 2000 $(B)/client/opus/control_codec.o \ 2001 $(B)/client/opus/A2NLSF.o \ 2002 $(B)/client/opus/ana_filt_bank_1.o \ 2003 $(B)/client/opus/biquad_alt.o \ 2004 $(B)/client/opus/bwexpander_32.o \ 2005 $(B)/client/opus/bwexpander.o \ 2006 $(B)/client/opus/debug.o \ 2007 $(B)/client/opus/decode_pitch.o \ 2008 $(B)/client/opus/inner_prod_aligned.o \ 2009 $(B)/client/opus/lin2log.o \ 2010 $(B)/client/opus/log2lin.o \ 2011 $(B)/client/opus/LPC_analysis_filter.o \ 2012 $(B)/client/opus/LPC_inv_pred_gain.o \ 2013 $(B)/client/opus/table_LSF_cos.o \ 2014 $(B)/client/opus/NLSF2A.o \ 2015 $(B)/client/opus/NLSF_stabilize.o \ 2016 $(B)/client/opus/NLSF_VQ_weights_laroia.o \ 2017 $(B)/client/opus/pitch_est_tables.o \ 2018 $(B)/client/opus/resampler.o \ 2019 $(B)/client/opus/resampler_down2_3.o \ 2020 $(B)/client/opus/resampler_down2.o \ 2021 $(B)/client/opus/resampler_private_AR2.o \ 2022 $(B)/client/opus/resampler_private_down_FIR.o \ 2023 $(B)/client/opus/resampler_private_IIR_FIR.o \ 2024 $(B)/client/opus/resampler_private_up2_HQ.o \ 2025 $(B)/client/opus/resampler_rom.o \ 2026 $(B)/client/opus/sigm_Q15.o \ 2027 $(B)/client/opus/sort.o \ 2028 $(B)/client/opus/sum_sqr_shift.o \ 2029 $(B)/client/opus/stereo_decode_pred.o \ 2030 $(B)/client/opus/stereo_encode_pred.o \ 2031 $(B)/client/opus/stereo_find_predictor.o \ 2032 $(B)/client/opus/stereo_quant_pred.o \ 2033 $(B)/client/opus/LPC_fit.o \ 2034 \ 2035 $(B)/client/opus/apply_sine_window_FLP.o \ 2036 $(B)/client/opus/corrMatrix_FLP.o \ 2037 $(B)/client/opus/encode_frame_FLP.o \ 2038 $(B)/client/opus/find_LPC_FLP.o \ 2039 $(B)/client/opus/find_LTP_FLP.o \ 2040 $(B)/client/opus/find_pitch_lags_FLP.o \ 2041 $(B)/client/opus/find_pred_coefs_FLP.o \ 2042 $(B)/client/opus/LPC_analysis_filter_FLP.o \ 2043 $(B)/client/opus/LTP_analysis_filter_FLP.o \ 2044 $(B)/client/opus/LTP_scale_ctrl_FLP.o \ 2045 $(B)/client/opus/noise_shape_analysis_FLP.o \ 2046 $(B)/client/opus/process_gains_FLP.o \ 2047 $(B)/client/opus/regularize_correlations_FLP.o \ 2048 $(B)/client/opus/residual_energy_FLP.o \ 2049 $(B)/client/opus/warped_autocorrelation_FLP.o \ 2050 $(B)/client/opus/wrappers_FLP.o \ 2051 $(B)/client/opus/autocorrelation_FLP.o \ 2052 $(B)/client/opus/burg_modified_FLP.o \ 2053 $(B)/client/opus/bwexpander_FLP.o \ 2054 $(B)/client/opus/energy_FLP.o \ 2055 $(B)/client/opus/inner_product_FLP.o \ 2056 $(B)/client/opus/k2a_FLP.o \ 2057 $(B)/client/opus/LPC_inv_pred_gain_FLP.o \ 2058 $(B)/client/opus/pitch_analysis_core_FLP.o \ 2059 $(B)/client/opus/scale_copy_vector_FLP.o \ 2060 $(B)/client/opus/scale_vector_FLP.o \ 2061 $(B)/client/opus/schur_FLP.o \ 2062 $(B)/client/opus/sort_FLP.o \ 2063 \ 2064 $(B)/client/info.o \ 2065 $(B)/client/internal.o \ 2066 $(B)/client/opusfile.o \ 2067 $(B)/client/stream.o \ 2068 $(B)/client/http.o 2069ifdef MINGW 2070Q3OBJ += \ 2071 $(B)/client/wincerts.o 2072endif 2073endif 2074endif 2075 2076ifeq ($(NEED_OGG),1) 2077ifeq ($(USE_INTERNAL_OGG),1) 2078Q3OBJ += \ 2079 $(B)/client/bitwise.o \ 2080 $(B)/client/framing.o 2081endif 2082endif 2083 2084ifeq ($(USE_CODEC_VORBIS),1) 2085ifeq ($(USE_INTERNAL_VORBIS),1) 2086Q3OBJ += \ 2087 $(B)/client/vorbis/analysis.o \ 2088 $(B)/client/vorbis/bitrate.o \ 2089 $(B)/client/vorbis/block.o \ 2090 $(B)/client/vorbis/codebook.o \ 2091 $(B)/client/vorbis/envelope.o \ 2092 $(B)/client/vorbis/floor0.o \ 2093 $(B)/client/vorbis/floor1.o \ 2094 $(B)/client/vorbis/info.o \ 2095 $(B)/client/vorbis/lookup.o \ 2096 $(B)/client/vorbis/lpc.o \ 2097 $(B)/client/vorbis/lsp.o \ 2098 $(B)/client/vorbis/mapping0.o \ 2099 $(B)/client/vorbis/mdct.o \ 2100 $(B)/client/vorbis/psy.o \ 2101 $(B)/client/vorbis/registry.o \ 2102 $(B)/client/vorbis/res0.o \ 2103 $(B)/client/vorbis/sharedbook.o \ 2104 $(B)/client/vorbis/smallft.o \ 2105 $(B)/client/vorbis/synthesis.o \ 2106 $(B)/client/vorbis/vorbisenc.o \ 2107 $(B)/client/vorbis/vorbisfile.o \ 2108 $(B)/client/vorbis/window.o 2109endif 2110endif 2111 2112ifeq ($(USE_INTERNAL_ZLIB),1) 2113Q3OBJ += \ 2114 $(B)/client/adler32.o \ 2115 $(B)/client/crc32.o \ 2116 $(B)/client/inffast.o \ 2117 $(B)/client/inflate.o \ 2118 $(B)/client/inftrees.o \ 2119 $(B)/client/zutil.o 2120endif 2121 2122ifeq ($(HAVE_VM_COMPILED),true) 2123 ifneq ($(findstring $(ARCH),x86 x86_64),) 2124 Q3OBJ += $(B)/client/vm_x86.o 2125 endif 2126 ifneq ($(findstring $(ARCH),ppc ppc64),) 2127 Q3OBJ += $(B)/client/vm_powerpc.o $(B)/client/vm_powerpc_asm.o 2128 endif 2129 ifneq ($(findstring $(ARCH),sparc sparc64),) 2130 Q3OBJ += $(B)/client/vm_sparc.o 2131 endif 2132 ifeq ($(ARM_VER_CHECK),armv7l) 2133 Q3OBJ += $(B)/client/vm_armv7l.o 2134 endif 2135endif 2136 2137ifdef MINGW 2138 Q3OBJ += \ 2139 $(B)/client/win_resource.o \ 2140 $(B)/client/sys_win32.o 2141else 2142 Q3OBJ += \ 2143 $(B)/client/sys_unix.o 2144endif 2145 2146ifeq ($(PLATFORM),darwin) 2147 Q3OBJ += \ 2148 $(B)/client/sys_osx.o 2149endif 2150 2151ifeq ($(USE_MUMBLE),1) 2152 Q3OBJ += \ 2153 $(B)/client/libmumblelink.o 2154endif 2155 2156ifneq ($(USE_RENDERER_DLOPEN),0) 2157$(B)/$(CLIENTBIN)$(FULLBINEXT): $(Q3OBJ) $(LIBSDLMAIN) 2158 $(echo_cmd) "LD $@" 2159 $(Q)$(CXX) $(CLIENT_CFLAGS) $(CFLAGS) $(CLIENT_LDFLAGS) $(LDFLAGS) $(NOTSHLIBLDFLAGS) \ 2160 -o $@ $(Q3OBJ) \ 2161 $(LIBSDLMAIN) $(CLIENT_LIBS) $(LIBS) 2162 2163$(B)/renderer_sp_opengl1_$(SHLIBNAME): $(Q3ROBJ) $(JPGOBJ) $(FTOBJ) 2164 $(echo_cmd) "LD $@" 2165 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3ROBJ) $(JPGOBJ) $(FTOBJ) \ 2166 $(THREAD_LIBS) $(LIBSDLMAIN) $(RENDERER_LIBS) $(LIBS) 2167 2168$(B)/renderer_sp_rend2_$(SHLIBNAME): $(Q3R2OBJ) $(Q3R2STRINGOBJ) $(JPGOBJ) $(FTOBJ) 2169 $(echo_cmd) "LD $@" 2170 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3R2OBJ) $(Q3R2STRINGOBJ) $(JPGOBJ) $(FTOBJ) \ 2171 $(THREAD_LIBS) $(LIBSDLMAIN) $(RENDERER_LIBS) $(LIBS) 2172else 2173$(B)/$(CLIENTBIN)$(FULLBINEXT): $(Q3OBJ) $(Q3ROBJ) $(JPGOBJ) $(FTOBJ) $(LIBSDLMAIN) 2174 $(echo_cmd) "LD $@" 2175 $(Q)$(CXX) $(CLIENT_CFLAGS) $(CFLAGS) $(CLIENT_LDFLAGS) $(LDFLAGS) $(NOTSHLIBLDFLAGS) \ 2176 -o $@ $(Q3OBJ) $(Q3ROBJ) $(JPGOBJ) $(FTOBJ) \ 2177 $(LIBSDLMAIN) $(CLIENT_LIBS) $(RENDERER_LIBS) $(LIBS) 2178 2179$(B)/$(CLIENTBIN)_rend2$(FULLBINEXT): $(Q3OBJ) $(Q3R2OBJ) $(Q3R2STRINGOBJ) $(JPGOBJ) $(FTOBJ) $(LIBSDLMAIN) 2180 $(echo_cmd) "LD $@" 2181 $(Q)$(CXX) $(CLIENT_CFLAGS) $(CFLAGS) $(CLIENT_LDFLAGS) $(LDFLAGS) $(NOTSHLIBLDFLAGS) \ 2182 -o $@ $(Q3OBJ) $(Q3R2OBJ) $(Q3R2STRINGOBJ) $(JPGOBJ) $(FTOBJ) \ 2183 $(LIBSDLMAIN) $(CLIENT_LIBS) $(RENDERER_LIBS) $(LIBS) 2184endif 2185 2186ifneq ($(strip $(LIBSDLMAIN)),) 2187ifneq ($(strip $(LIBSDLMAINSRC)),) 2188$(LIBSDLMAIN) : $(LIBSDLMAINSRC) 2189 cp $< $@ 2190 $(RANLIB) $@ 2191endif 2192endif 2193 2194 2195 2196############################################################################# 2197# DEDICATED SERVER 2198############################################################################# 2199 2200Q3DOBJ = \ 2201 $(B)/ded/sv_bot.o \ 2202 $(B)/ded/sv_client.o \ 2203 $(B)/ded/sv_ccmds.o \ 2204 $(B)/ded/sv_game.o \ 2205 $(B)/ded/sv_init.o \ 2206 $(B)/ded/sv_main.o \ 2207 $(B)/ded/sv_net_chan.o \ 2208 $(B)/ded/sv_snapshot.o \ 2209 $(B)/ded/sv_world.o \ 2210 \ 2211 $(B)/ded/cm_load.o \ 2212 $(B)/ded/cm_patch.o \ 2213 $(B)/ded/cm_polylib.o \ 2214 $(B)/ded/cm_test.o \ 2215 $(B)/ded/cm_trace.o \ 2216 $(B)/ded/cmd.o \ 2217 $(B)/ded/common.o \ 2218 $(B)/ded/cvar.o \ 2219 $(B)/ded/files.o \ 2220 $(B)/ded/md4.o \ 2221 $(B)/ded/msg.o \ 2222 $(B)/ded/net_chan.o \ 2223 $(B)/ded/net_ip.o \ 2224 $(B)/ded/huffman.o \ 2225 \ 2226 $(B)/ded/q_math.o \ 2227 $(B)/ded/q_shared.o \ 2228 \ 2229 $(B)/ded/unzip.o \ 2230 $(B)/ded/ioapi.o \ 2231 $(B)/ded/vm.o \ 2232 $(B)/ded/vm_interpreted.o \ 2233 \ 2234 $(B)/ded/be_aas_bspq3.o \ 2235 $(B)/ded/be_aas_cluster.o \ 2236 $(B)/ded/be_aas_debug.o \ 2237 $(B)/ded/be_aas_entity.o \ 2238 $(B)/ded/be_aas_file.o \ 2239 $(B)/ded/be_aas_main.o \ 2240 $(B)/ded/be_aas_move.o \ 2241 $(B)/ded/be_aas_optimize.o \ 2242 $(B)/ded/be_aas_reach.o \ 2243 $(B)/ded/be_aas_route.o \ 2244 $(B)/ded/be_aas_routealt.o \ 2245 $(B)/ded/be_aas_routetable.o \ 2246 $(B)/ded/be_aas_sample.o \ 2247 $(B)/ded/be_ai_char.o \ 2248 $(B)/ded/be_ai_chat.o \ 2249 $(B)/ded/be_ai_gen.o \ 2250 $(B)/ded/be_ai_goal.o \ 2251 $(B)/ded/be_ai_move.o \ 2252 $(B)/ded/be_ai_weap.o \ 2253 $(B)/ded/be_ai_weight.o \ 2254 $(B)/ded/be_ea.o \ 2255 $(B)/ded/be_interface.o \ 2256 $(B)/ded/l_crc.o \ 2257 $(B)/ded/l_libvar.o \ 2258 $(B)/ded/l_log.o \ 2259 $(B)/ded/l_memory.o \ 2260 $(B)/ded/l_precomp.o \ 2261 $(B)/ded/l_script.o \ 2262 $(B)/ded/l_struct.o \ 2263 \ 2264 $(B)/ded/null_client.o \ 2265 $(B)/ded/null_input.o \ 2266 $(B)/ded/null_snddma.o \ 2267 \ 2268 $(B)/ded/con_log.o \ 2269 $(B)/ded/sys_main.o 2270 2271ifeq ($(ARCH),x86) 2272 Q3DOBJ += \ 2273 $(B)/ded/matha.o \ 2274 $(B)/ded/snapvector.o \ 2275 $(B)/ded/ftola.o 2276endif 2277ifeq ($(ARCH),x86_64) 2278 Q3DOBJ += \ 2279 $(B)/ded/snapvector.o \ 2280 $(B)/ded/ftola.o 2281endif 2282 2283ifeq ($(USE_INTERNAL_ZLIB),1) 2284Q3DOBJ += \ 2285 $(B)/ded/adler32.o \ 2286 $(B)/ded/crc32.o \ 2287 $(B)/ded/inffast.o \ 2288 $(B)/ded/inflate.o \ 2289 $(B)/ded/inftrees.o \ 2290 $(B)/ded/zutil.o 2291endif 2292 2293ifeq ($(HAVE_VM_COMPILED),true) 2294 ifneq ($(findstring $(ARCH),x86 x86_64),) 2295 Q3DOBJ += $(B)/ded/vm_x86.o 2296 endif 2297 ifneq ($(findstring $(ARCH),ppc ppc64),) 2298 Q3DOBJ += $(B)/ded/vm_powerpc.o $(B)/ded/vm_powerpc_asm.o 2299 endif 2300 ifneq ($(findstring $(ARCH),sparc sparc64),) 2301 Q3DOBJ += $(B)/ded/vm_sparc.o 2302 endif 2303 ifeq ($(ARM_VER_CHECK),armv7l) 2304 Q3DOBJ += $(B)/ded/vm_armv7l.o 2305 endif 2306endif 2307 2308ifdef MINGW 2309 Q3DOBJ += \ 2310 $(B)/ded/win_resource.o \ 2311 $(B)/ded/sys_win32.o \ 2312 $(B)/ded/con_win32.o 2313else 2314 Q3DOBJ += \ 2315 $(B)/ded/sys_unix.o \ 2316 $(B)/ded/con_tty.o 2317endif 2318 2319ifeq ($(PLATFORM),darwin) 2320 Q3DOBJ += \ 2321 $(B)/ded/sys_osx.o 2322endif 2323 2324$(B)/$(SERVERBIN)$(FULLBINEXT): $(Q3DOBJ) 2325 $(echo_cmd) "LD $@" 2326 $(Q)$(CC) $(CFLAGS) $(LDFLAGS) $(NOTSHLIBLDFLAGS) -o $@ $(Q3DOBJ) $(LIBS) 2327 2328 2329 2330############################################################################# 2331## BASEQ3 CGAME 2332############################################################################# 2333 2334Q3CGOBJ_ = \ 2335 $(B)/$(BASEGAME)/cgame/cg_main.o \ 2336 $(B)/$(BASEGAME)/cgame/bg_animation.o \ 2337 $(B)/$(BASEGAME)/cgame/bg_misc.o \ 2338 $(B)/$(BASEGAME)/cgame/bg_pmove.o \ 2339 $(B)/$(BASEGAME)/cgame/bg_slidemove.o \ 2340 $(B)/$(BASEGAME)/cgame/bg_lib.o \ 2341 $(B)/$(BASEGAME)/cgame/cg_consolecmds.o \ 2342 $(B)/$(BASEGAME)/cgame/cg_draw.o \ 2343 $(B)/$(BASEGAME)/cgame/cg_drawtools.o \ 2344 $(B)/$(BASEGAME)/cgame/cg_effects.o \ 2345 $(B)/$(BASEGAME)/cgame/cg_ents.o \ 2346 $(B)/$(BASEGAME)/cgame/cg_event.o \ 2347 $(B)/$(BASEGAME)/cgame/cg_flamethrower.o \ 2348 $(B)/$(BASEGAME)/cgame/cg_info.o \ 2349 $(B)/$(BASEGAME)/cgame/cg_localents.o \ 2350 $(B)/$(BASEGAME)/cgame/cg_marks.o \ 2351 $(B)/$(BASEGAME)/cgame/cg_newdraw.o \ 2352 $(B)/$(BASEGAME)/cgame/cg_particles.o \ 2353 $(B)/$(BASEGAME)/cgame/cg_players.o \ 2354 $(B)/$(BASEGAME)/cgame/cg_playerstate.o \ 2355 $(B)/$(BASEGAME)/cgame/cg_predict.o \ 2356 $(B)/$(BASEGAME)/cgame/cg_scoreboard.o \ 2357 $(B)/$(BASEGAME)/cgame/cg_servercmds.o \ 2358 $(B)/$(BASEGAME)/cgame/cg_snapshot.o \ 2359 $(B)/$(BASEGAME)/cgame/cg_sound.o \ 2360 $(B)/$(BASEGAME)/cgame/cg_trails.o \ 2361 $(B)/$(BASEGAME)/cgame/cg_view.o \ 2362 $(B)/$(BASEGAME)/cgame/cg_weapons.o \ 2363 $(B)/$(BASEGAME)/ui/ui_shared.o \ 2364 \ 2365 $(B)/$(BASEGAME)/qcommon/q_math.o \ 2366 $(B)/$(BASEGAME)/qcommon/q_shared.o 2367 2368Q3CGOBJ = $(Q3CGOBJ_) $(B)/$(BASEGAME)/cgame/cg_syscalls.o 2369Q3CGVMOBJ = $(Q3CGOBJ_:%.o=%.asm) 2370 2371ifdef MINGW 2372$(B)/$(BASEGAME)/cgame_sp_$(SHLIBNAME): $(Q3CGOBJ) 2373 $(echo_cmd) "LD $@" 2374 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3CGOBJ) 2375else 2376$(B)/$(BASEGAME)/cgame.sp.$(SHLIBNAME): $(Q3CGOBJ) 2377 $(echo_cmd) "LD $@" 2378 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3CGOBJ) 2379endif 2380$(B)/$(BASEGAME)/vm/cgame.sp.qvm: $(Q3CGVMOBJ) $(CGDIR)/cg_syscalls.asm $(Q3ASM) 2381 $(echo_cmd) "Q3ASM $@" 2382 $(Q)$(Q3ASM) -o $@ $(Q3CGVMOBJ) $(CGDIR)/cg_syscalls.asm 2383 2384 2385############################################################################# 2386## BASEQ3 GAME 2387############################################################################# 2388 2389Q3GOBJ_ = \ 2390 $(B)/$(BASEGAME)/game/g_main.o \ 2391 $(B)/$(BASEGAME)/game/ai_cast.o \ 2392 $(B)/$(BASEGAME)/game/ai_cast_characters.o \ 2393 $(B)/$(BASEGAME)/game/ai_cast_debug.o \ 2394 $(B)/$(BASEGAME)/game/ai_cast_events.o \ 2395 $(B)/$(BASEGAME)/game/ai_cast_fight.o \ 2396 $(B)/$(BASEGAME)/game/ai_cast_func_attack.o \ 2397 $(B)/$(BASEGAME)/game/ai_cast_func_boss1.o \ 2398 $(B)/$(BASEGAME)/game/ai_cast_funcs.o \ 2399 $(B)/$(BASEGAME)/game/ai_cast_script_actions.o \ 2400 $(B)/$(BASEGAME)/game/ai_cast_script.o \ 2401 $(B)/$(BASEGAME)/game/ai_cast_script_ents.o \ 2402 $(B)/$(BASEGAME)/game/ai_cast_sight.o \ 2403 $(B)/$(BASEGAME)/game/ai_cast_think.o \ 2404 $(B)/$(BASEGAME)/game/ai_chat.o \ 2405 $(B)/$(BASEGAME)/game/ai_cmd.o \ 2406 $(B)/$(BASEGAME)/game/ai_dmnet.o \ 2407 $(B)/$(BASEGAME)/game/ai_dmq3.o \ 2408 $(B)/$(BASEGAME)/game/ai_main.o \ 2409 $(B)/$(BASEGAME)/game/ai_team.o \ 2410 $(B)/$(BASEGAME)/game/bg_animation.o \ 2411 $(B)/$(BASEGAME)/game/bg_misc.o \ 2412 $(B)/$(BASEGAME)/game/bg_pmove.o \ 2413 $(B)/$(BASEGAME)/game/bg_slidemove.o \ 2414 $(B)/$(BASEGAME)/game/bg_lib.o \ 2415 $(B)/$(BASEGAME)/game/g_active.o \ 2416 $(B)/$(BASEGAME)/game/g_alarm.o \ 2417 $(B)/$(BASEGAME)/game/g_bot.o \ 2418 $(B)/$(BASEGAME)/game/g_client.o \ 2419 $(B)/$(BASEGAME)/game/g_cmds.o \ 2420 $(B)/$(BASEGAME)/game/g_combat.o \ 2421 $(B)/$(BASEGAME)/game/g_items.o \ 2422 $(B)/$(BASEGAME)/game/g_mem.o \ 2423 $(B)/$(BASEGAME)/game/g_misc.o \ 2424 $(B)/$(BASEGAME)/game/g_missile.o \ 2425 $(B)/$(BASEGAME)/game/g_mover.o \ 2426 $(B)/$(BASEGAME)/game/g_props.o \ 2427 $(B)/$(BASEGAME)/game/g_save.o \ 2428 $(B)/$(BASEGAME)/game/g_script_actions.o \ 2429 $(B)/$(BASEGAME)/game/g_script.o \ 2430 $(B)/$(BASEGAME)/game/g_session.o \ 2431 $(B)/$(BASEGAME)/game/g_spawn.o \ 2432 $(B)/$(BASEGAME)/game/g_svcmds.o \ 2433 $(B)/$(BASEGAME)/game/g_target.o \ 2434 $(B)/$(BASEGAME)/game/g_team.o \ 2435 $(B)/$(BASEGAME)/game/g_tramcar.o \ 2436 $(B)/$(BASEGAME)/game/g_trigger.o \ 2437 $(B)/$(BASEGAME)/game/g_utils.o \ 2438 $(B)/$(BASEGAME)/game/g_weapon.o \ 2439 \ 2440 $(B)/$(BASEGAME)/qcommon/q_math.o \ 2441 $(B)/$(BASEGAME)/qcommon/q_shared.o 2442 2443Q3GOBJ = $(Q3GOBJ_) $(B)/$(BASEGAME)/game/g_syscalls.o 2444Q3GVMOBJ = $(Q3GOBJ_:%.o=%.asm) 2445 2446ifdef MINGW 2447$(B)/$(BASEGAME)/qagame_sp_$(SHLIBNAME): $(Q3GOBJ) 2448 $(echo_cmd) "LD $@" 2449 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3GOBJ) 2450else 2451$(B)/$(BASEGAME)/qagame.sp.$(SHLIBNAME): $(Q3GOBJ) 2452 $(echo_cmd) "LD $@" 2453 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3GOBJ) 2454endif 2455$(B)/$(BASEGAME)/vm/qagame.sp.qvm: $(Q3GVMOBJ) $(GDIR)/g_syscalls.asm $(Q3ASM) 2456 $(echo_cmd) "Q3ASM $@" 2457 $(Q)$(Q3ASM) -o $@ $(Q3GVMOBJ) $(GDIR)/g_syscalls.asm 2458 2459 2460############################################################################# 2461## BASEQ3 UI 2462############################################################################# 2463 2464Q3UIOBJ_ = \ 2465 $(B)/$(BASEGAME)/ui/ui_main.o \ 2466 $(B)/$(BASEGAME)/ui/ui_atoms.o \ 2467 $(B)/$(BASEGAME)/ui/ui_gameinfo.o \ 2468 $(B)/$(BASEGAME)/ui/ui_players.o \ 2469 $(B)/$(BASEGAME)/ui/ui_shared.o \ 2470 \ 2471 $(B)/$(BASEGAME)/ui/bg_misc.o \ 2472 $(B)/$(BASEGAME)/ui/bg_lib.o \ 2473 \ 2474 $(B)/$(BASEGAME)/qcommon/q_math.o \ 2475 $(B)/$(BASEGAME)/qcommon/q_shared.o 2476 2477Q3UIOBJ = $(Q3UIOBJ_) $(B)/$(BASEGAME)/ui/ui_syscalls.o 2478Q3UIVMOBJ = $(Q3UIOBJ_:%.o=%.asm) 2479 2480ifdef MINGW 2481$(B)/$(BASEGAME)/ui_sp_$(SHLIBNAME): $(Q3UIOBJ) 2482 $(echo_cmd) "LD $@" 2483 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3UIOBJ) 2484else 2485$(B)/$(BASEGAME)/ui.sp.$(SHLIBNAME): $(Q3UIOBJ) 2486 $(echo_cmd) "LD $@" 2487 $(Q)$(CC) $(CFLAGS) $(SHLIBLDFLAGS) -o $@ $(Q3UIOBJ) 2488endif 2489$(B)/$(BASEGAME)/vm/ui.sp.qvm: $(Q3UIVMOBJ) $(UIDIR)/ui_syscalls.asm $(Q3ASM) 2490 $(echo_cmd) "Q3ASM $@" 2491 $(Q)$(Q3ASM) -o $@ $(Q3UIVMOBJ) $(UIDIR)/ui_syscalls.asm 2492 2493 2494############################################################################# 2495## CLIENT/SERVER RULES 2496############################################################################# 2497 2498$(B)/client/%.o: $(ASMDIR)/%.s 2499 $(DO_AS) 2500 2501# k8 so inline assembler knows about SSE 2502$(B)/client/%.o: $(ASMDIR)/%.c 2503 $(DO_CC) -march=k8 2504 2505$(B)/client/snd_altivec.o: $(CDIR)/snd_altivec.c 2506 $(DO_CC_ALTIVEC) 2507 2508$(B)/client/%.o: $(CDIR)/%.c 2509 $(DO_CC) 2510 2511$(B)/client/%.o: $(SDIR)/%.c 2512 $(DO_CC) 2513 2514$(B)/client/%.o: $(CMDIR)/%.c 2515 $(DO_CC) 2516 2517$(B)/client/%.o: $(BLIBDIR)/%.c 2518 $(DO_BOT_CC) 2519 2520$(B)/client/%.o: $(OGGDIR)/src/%.c 2521 $(DO_CC) 2522 2523$(B)/client/vorbis/%.o: $(VORBISDIR)/lib/%.c 2524 $(DO_CC) 2525 2526$(B)/client/opus/%.o: $(OPUSDIR)/src/%.c 2527 $(DO_CC) 2528 2529$(B)/client/opus/%.o: $(OPUSDIR)/celt/%.c 2530 $(DO_CC) 2531 2532$(B)/client/opus/%.o: $(OPUSDIR)/silk/%.c 2533 $(DO_CC) 2534 2535$(B)/client/opus/%.o: $(OPUSDIR)/silk/float/%.c 2536 $(DO_CC) 2537 2538$(B)/client/%.o: $(OPUSFILEDIR)/src/%.c 2539 $(DO_CC) 2540 2541$(B)/client/%.o: $(ZDIR)/%.c 2542 $(DO_CC) 2543 2544$(B)/client/%.o: $(SDLDIR)/%.c 2545 $(DO_CC) 2546 2547$(B)/client/%.o: $(SYSDIR)/%.c 2548 $(DO_CC) 2549 2550$(B)/client/%.o: $(SYSDIR)/%.m 2551 $(DO_CC) 2552 2553$(B)/client/win_resource.o: $(SYSDIR)/win_resource.rc $(SYSDIR)/win_manifest.xml 2554 $(DO_WINDRES) 2555 2556$(B)/splines/%.o: $(SPLDIR)/%.cpp 2557 $(DO_SPLINE_CXX) 2558 2559$(B)/renderer/%.o: $(CMDIR)/%.c 2560 $(DO_REF_CC) 2561 2562$(B)/renderer/%.o: $(SDLDIR)/%.c 2563 $(DO_REF_CC) 2564 2565$(B)/renderer/%.o: $(JPDIR)/%.c 2566 $(DO_REF_CC) 2567 2568$(B)/renderer/%.o: $(RDIR)/%.c 2569 $(DO_REF_CC) 2570 2571$(B)/renderer/tr_altivec.o: $(RDIR)/tr_altivec.c 2572 $(DO_REF_CC_ALTIVEC) 2573 2574$(B)/rend2/glsl/%.c: $(R2DIR)/glsl/%.glsl 2575 $(DO_REF_STR) 2576 2577$(B)/rend2/glsl/%.o: $(B)/rend2/glsl/%.c 2578 $(DO_REF_CC) 2579 2580$(B)/rend2/%.o: $(R2DIR)/%.c 2581 $(DO_REF_CC) 2582 2583$(B)/renderer/%.o: $(FTDIR)/src/autofit/%.c 2584 $(DO_REF_CC) 2585 2586$(B)/renderer/%.o: $(FTDIR)/src/base/%.c 2587 $(DO_REF_CC) 2588 2589$(B)/renderer/%.o: $(FTDIR)/src/bdf/%.c 2590 $(DO_REF_CC) 2591 2592$(B)/renderer/%.o: $(FTDIR)/src/bzip2/%.c 2593 $(DO_REF_CC) 2594 2595$(B)/renderer/%.o: $(FTDIR)/src/cache/%.c 2596 $(DO_REF_CC) 2597 2598$(B)/renderer/%.o: $(FTDIR)/src/cff/%.c 2599 $(DO_REF_CC) 2600 2601$(B)/renderer/%.o: $(FTDIR)/src/cid/%.c 2602 $(DO_REF_CC) 2603 2604$(B)/renderer/%.o: $(FTDIR)/src/gxvalid/%.c 2605 $(DO_REF_CC) 2606 2607$(B)/renderer/%.o: $(FTDIR)/src/gzip/%.c 2608 $(DO_REF_CC) 2609 2610$(B)/renderer/%.o: $(FTDIR)/src/lzw/%.c 2611 $(DO_REF_CC) 2612 2613$(B)/renderer/%.o: $(FTDIR)/src/otvalid/%.c 2614 $(DO_REF_CC) 2615 2616$(B)/renderer/%.o: $(FTDIR)/src/pcf/%.c 2617 $(DO_REF_CC) 2618 2619$(B)/renderer/%.o: $(FTDIR)/src/pfr/%.c 2620 $(DO_REF_CC) 2621 2622$(B)/renderer/%.o: $(FTDIR)/src/psaux/%.c 2623 $(DO_REF_CC) 2624 2625$(B)/renderer/%.o: $(FTDIR)/src/pshinter/%.c 2626 $(DO_REF_CC) 2627 2628$(B)/renderer/%.o: $(FTDIR)/src/psnames/%.c 2629 $(DO_REF_CC) 2630 2631$(B)/renderer/%.o: $(FTDIR)/src/raster/%.c 2632 $(DO_REF_CC) 2633 2634$(B)/renderer/%.o: $(FTDIR)/src/sfnt/%.c 2635 $(DO_REF_CC) 2636 2637$(B)/renderer/%.o: $(FTDIR)/src/smooth/%.c 2638 $(DO_REF_CC) 2639 2640$(B)/renderer/%.o: $(FTDIR)/src/tools/%.c 2641 $(DO_REF_CC) 2642 2643$(B)/renderer/%.o: $(FTDIR)/src/truetype/%.c 2644 $(DO_REF_CC) 2645 2646$(B)/renderer/%.o: $(FTDIR)/src/type1/%.c 2647 $(DO_REF_CC) 2648 2649$(B)/renderer/%.o: $(FTDIR)/src/type42/%.c 2650 $(DO_REF_CC) 2651 2652$(B)/renderer/%.o: $(FTDIR)/src/winfonts/%.c 2653 $(DO_REF_CC) 2654 2655$(B)/ded/%.o: $(ASMDIR)/%.s 2656 $(DO_AS) 2657 2658# k8 so inline assembler knows about SSE 2659$(B)/ded/%.o: $(ASMDIR)/%.c 2660 $(DO_CC) -march=k8 2661 2662$(B)/ded/%.o: $(SDIR)/%.c 2663 $(DO_DED_CC) 2664 2665$(B)/ded/%.o: $(CMDIR)/%.c 2666 $(DO_DED_CC) 2667 2668$(B)/ded/%.o: $(ZDIR)/%.c 2669 $(DO_DED_CC) 2670 2671$(B)/ded/%.o: $(BLIBDIR)/%.c 2672 $(DO_BOT_CC) 2673 2674$(B)/ded/%.o: $(SYSDIR)/%.c 2675 $(DO_DED_CC) 2676 2677$(B)/ded/%.o: $(SYSDIR)/%.m 2678 $(DO_DED_CC) 2679 2680$(B)/ded/win_resource.o: $(SYSDIR)/win_resource.rc $(SYSDIR)/win_manifest.xml 2681 $(DO_WINDRES) 2682 2683$(B)/ded/%.o: $(NDIR)/%.c 2684 $(DO_DED_CC) 2685 2686############################################################################# 2687## GAME MODULE RULES 2688############################################################################# 2689 2690$(B)/$(BASEGAME)/cgame/bg_%.o: $(GDIR)/bg_%.c 2691 $(DO_CGAME_CC) 2692 2693$(B)/$(BASEGAME)/cgame/%.o: $(CGDIR)/%.c 2694 $(DO_CGAME_CC) 2695 2696$(B)/$(BASEGAME)/cgame/bg_%.asm: $(GDIR)/bg_%.c $(Q3LCC) 2697 $(DO_CGAME_Q3LCC) 2698 2699$(B)/$(BASEGAME)/cgame/%.asm: $(CGDIR)/%.c $(Q3LCC) 2700 $(DO_CGAME_Q3LCC) 2701 2702$(B)/$(BASEGAME)/game/%.o: $(GDIR)/%.c 2703 $(DO_GAME_CC) 2704 2705$(B)/$(BASEGAME)/game/%.asm: $(GDIR)/%.c $(Q3LCC) 2706 $(DO_GAME_Q3LCC) 2707 2708$(B)/$(BASEGAME)/ui/bg_%.o: $(GDIR)/bg_%.c 2709 $(DO_UI_CC) 2710 2711$(B)/$(BASEGAME)/ui/%.o: $(UIDIR)/%.c 2712 $(DO_UI_CC) 2713 2714$(B)/$(BASEGAME)/ui/bg_%.asm: $(GDIR)/bg_%.c $(Q3LCC) 2715 $(DO_UI_Q3LCC) 2716 2717$(B)/$(BASEGAME)/ui/%.asm: $(UIDIR)/%.c $(Q3LCC) 2718 $(DO_UI_Q3LCC) 2719 2720$(B)/$(BASEGAME)/qcommon/%.o: $(CMDIR)/%.c 2721 $(DO_SHLIB_CC) 2722 2723$(B)/$(BASEGAME)/qcommon/%.asm: $(CMDIR)/%.c $(Q3LCC) 2724 $(DO_Q3LCC) 2725 2726 2727############################################################################# 2728# MISC 2729############################################################################# 2730 2731OBJ = $(Q3OBJ) $(Q3ROBJ) $(Q3R2OBJ) $(Q3DOBJ) $(JPGOBJ) $(FTOBJ) \ 2732 $(Q3GOBJ) $(Q3CGOBJ) $(Q3UIOBJ) \ 2733 $(Q3GVMOBJ) $(Q3CGVMOBJ) $(Q3UIVMOBJ) 2734TOOLSOBJ = $(LBURGOBJ) $(Q3CPPOBJ) $(Q3RCCOBJ) $(Q3LCCOBJ) $(Q3ASMOBJ) 2735STRINGOBJ = $(Q3R2STRINGOBJ) 2736 2737copyfiles: release 2738 @if [ ! -d $(COPYDIR)/$(BASEGAME) ]; then echo "You need to set COPYDIR to where your RTCW data is!"; fi 2739ifneq ($(BUILD_GAME_SO),0) 2740 ifneq ($(BUILD_BASEGAME),0) 2741 -$(MKDIR) -m 0755 $(COPYDIR)/$(BASEGAME) 2742 endif 2743endif 2744 2745ifneq ($(BUILD_CLIENT),0) 2746 $(INSTALL) $(STRIP_FLAG) -m 0755 $(BR)/$(CLIENTBIN)$(FULLBINEXT) $(COPYBINDIR)/$(CLIENTBIN)$(FULLBINEXT) 2747 ifneq ($(USE_RENDERER_DLOPEN),0) 2748 $(INSTALL) $(STRIP_FLAG) -m 0755 $(BR)/renderer_sp_opengl1_$(SHLIBNAME) $(COPYBINDIR)/renderer_sp_opengl1_$(SHLIBNAME) 2749 ifneq ($(BUILD_RENDERER_REND2),0) 2750 $(INSTALL) $(STRIP_FLAG) -m 0755 $(BR)/renderer_sp_rend2_$(SHLIBNAME) $(COPYBINDIR)/renderer_sp_rend2_$(SHLIBNAME) 2751 endif 2752 else 2753 ifneq ($(BUILD_RENDERER_REND2),0) 2754 $(INSTALL) $(STRIP_FLAG) -m 0755 $(BR)/$(CLIENTBIN)_rend2$(FULLBINEXT) $(COPYBINDIR)/$(CLIENTBIN)_rend2$(FULLBINEXT) 2755 endif 2756 endif 2757endif 2758 2759ifneq ($(BUILD_SERVER),0) 2760 @if [ -f $(BR)/$(SERVERBIN)$(FULLBINEXT) ]; then \ 2761 $(INSTALL) $(STRIP_FLAG) -m 0755 $(BR)/$(SERVERBIN)$(FULLBINEXT) $(COPYBINDIR)/$(SERVERBIN)$(FULLBINEXT); \ 2762 fi 2763endif 2764 2765ifneq ($(BUILD_GAME_SO),0) 2766 ifneq ($(BUILD_BASEGAME),0) 2767 $(INSTALL) $(STRIP_FLAG) -m 0755 $(BR)/$(BASEGAME)/cgame.sp.$(SHLIBNAME) \ 2768 $(COPYDIR)/$(BASEGAME)/. 2769 $(INSTALL) $(STRIP_FLAG) -m 0755 $(BR)/$(BASEGAME)/qagame.sp.$(SHLIBNAME) \ 2770 $(COPYDIR)/$(BASEGAME)/. 2771 $(INSTALL) $(STRIP_FLAG) -m 0755 $(BR)/$(BASEGAME)/ui.sp.$(SHLIBNAME) \ 2772 $(COPYDIR)/$(BASEGAME)/. 2773 endif 2774endif 2775 2776clean: clean-debug clean-release 2777 2778clean-debug: 2779 @$(MAKE) clean2 B=$(BD) 2780 2781clean-release: 2782 @$(MAKE) clean2 B=$(BR) 2783 2784clean2: 2785 @echo "CLEAN $(B)" 2786 @rm -f $(OBJ) 2787 @rm -f $(OBJ_D_FILES) 2788 @rm -f $(STRINGOBJ) 2789 @rm -f $(TARGETS) 2790 2791toolsclean: toolsclean-debug toolsclean-release 2792 2793toolsclean-debug: 2794 @$(MAKE) toolsclean2 B=$(BD) 2795 2796toolsclean-release: 2797 @$(MAKE) toolsclean2 B=$(BR) 2798 2799toolsclean2: 2800 @echo "TOOLS_CLEAN $(B)" 2801 @rm -f $(TOOLSOBJ) 2802 @rm -f $(TOOLSOBJ_D_FILES) 2803 @rm -f $(LBURG) $(DAGCHECK_C) $(Q3RCC) $(Q3CPP) $(Q3LCC) $(Q3ASM) 2804 2805distclean: clean toolsclean 2806 @rm -rf $(BUILD_DIR) 2807 2808dist: 2809 git archive --format zip --output $(CLIENTBIN)-$(VERSION).zip HEAD 2810 2811############################################################################# 2812# DEPENDENCIES 2813############################################################################# 2814 2815ifneq ($(B),) 2816 OBJ_D_FILES=$(filter %.d,$(OBJ:%.o=%.d)) 2817 TOOLSOBJ_D_FILES=$(filter %.d,$(TOOLSOBJ:%.o=%.d)) 2818 -include $(OBJ_D_FILES) $(TOOLSOBJ_D_FILES) 2819endif 2820 2821.PHONY: all clean clean2 clean-debug clean-release copyfiles \ 2822 debug default dist distclean makedirs \ 2823 release targets \ 2824 toolsclean toolsclean2 toolsclean-debug toolsclean-release \ 2825 $(OBJ_D_FILES) $(TOOLSOBJ_D_FILES) 2826 2827# If the target name contains "clean", don't do a parallel build 2828ifneq ($(findstring clean, $(MAKECMDGOALS)),) 2829.NOTPARALLEL: 2830endif 2831