Advertisement
Guest User

Untitled

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