2005-08-26 17:39:27 +00:00
#
2007-09-06 18:21:10 +00:00
# ioq3 Makefile
2005-08-26 17:39:27 +00:00
#
# GNU Make required
#
2024-06-07 15:27:44 +00:00
# Rebuild every target if Makefile changes
.EXTRA_PREREQS := $( abspath $( lastword $( MAKEFILE_LIST) ) )
2016-06-12 21:06:54 +00:00
COMPILE_PLATFORM = $( shell uname | sed -e 's/_.*//' | tr '[:upper:]' '[:lower:]' | sed -e 's/\//_/g' )
COMPILE_ARCH = $( shell uname -m | sed -e 's/i.86/x86/' | sed -e 's/^arm.*/arm/' )
2007-12-07 10:11:47 +00:00
2021-01-28 23:37:23 +00:00
#arm64 hack!
i f e q ( $( shell uname -m ) , a r m 6 4 )
COMPILE_ARCH = arm64
e n d i f
i f e q ( $( shell uname -m ) , a a r c h 6 4 )
COMPILE_ARCH = arm64
e n d i f
2007-11-25 23:41:01 +00:00
i f e q ( $( COMPILE_PLATFORM ) , s u n o s )
# Solaris uname and GNU uname differ
2016-06-12 21:06:54 +00:00
COMPILE_ARCH = $( shell uname -p | sed -e 's/i.86/x86/' )
2006-03-21 22:21:05 +00:00
e n d i f
2008-04-09 23:43:30 +00:00
i f n d e f B U I L D _ S T A N D A L O N E
BUILD_STANDALONE =
e n d i f
2008-01-03 06:19:11 +00:00
i f n d e f B U I L D _ C L I E N T
BUILD_CLIENT =
e n d i f
i f n d e f B U I L D _ S E R V E R
BUILD_SERVER =
e n d i f
i f n d e f B U I L D _ G A M E _ S O
BUILD_GAME_SO =
e n d i f
i f n d e f B U I L D _ G A M E _ Q V M
BUILD_GAME_QVM =
e n d i f
2011-10-28 19:12:43 +00:00
i f n d e f B U I L D _ B A S E G A M E
BUILD_BASEGAME =
e n d i f
2008-08-22 22:47:26 +00:00
i f n d e f B U I L D _ M I S S I O N P A C K
BUILD_MISSIONPACK =
e n d i f
2013-02-15 23:46:37 +00:00
i f n d e f B U I L D _ R E N D E R E R _ O P E N G L 2
BUILD_RENDERER_OPENGL2 =
2007-08-27 07:02:54 +00:00
e n d i f
2017-06-02 06:29:09 +00:00
i f n d e f B U I L D _ A U T O U P D A T E R # DON'T build unless you mean to!
BUILD_AUTOUPDATER = 0
2017-05-25 18:13:18 +00:00
e n d i f
2007-08-27 07:02:54 +00:00
2005-09-27 16:35:25 +00:00
#############################################################################
#
# If you require a different configuration from the defaults below, create a
2005-09-27 17:45:16 +00:00
# new file named "Makefile.local" in the same directory as this file and define
# your parameters there. This allows you to change configuration without
# causing problems with keeping up to date with the repository.
2005-09-27 16:35:25 +00:00
#
#############################################################################
- i n c l u d e M a k e f i l e . l o c a l
2015-01-27 09:33:15 +00:00
i f e q ( $( COMPILE_PLATFORM ) , c y g w i n )
PLATFORM = mingw32
e n d i f
2024-06-09 06:32:34 +00:00
# detect "emmake make"
i f e q ( $( findstring /emcc ,$ ( CC ) ) , / e m c c )
PLATFORM = emscripten
e n d i f
2005-12-29 00:04:41 +00:00
i f n d e f P L A T F O R M
PLATFORM = $( COMPILE_PLATFORM)
e n d i f
export PLATFORM
2015-01-30 21:52:53 +00:00
i f e q ( $( PLATFORM ) , m i n g w 3 2 )
MINGW = 1
e n d i f
i f e q ( $( PLATFORM ) , m i n g w 6 4 )
MINGW = 1
e n d i f
2013-03-21 11:22:44 +00:00
i f e q ( $( COMPILE_ARCH ) , i 8 6 p c )
COMPILE_ARCH = x86
e n d i f
i f e q ( $( COMPILE_ARCH ) , a m d 6 4 )
COMPILE_ARCH = x86_64
e n d i f
i f e q ( $( COMPILE_ARCH ) , x 6 4 )
COMPILE_ARCH = x86_64
e n d i f
2007-10-13 12:03:47 +00:00
i f e q ( $( COMPILE_ARCH ) , p o w e r p c )
COMPILE_ARCH = ppc
2005-12-29 00:04:41 +00:00
e n d i f
2008-11-10 09:46:41 +00:00
i f e q ( $( COMPILE_ARCH ) , p o w e r p c 6 4 )
COMPILE_ARCH = ppc64
e n d i f
2005-12-29 00:04:41 +00:00
2013-03-21 11:22:44 +00:00
i f e q ( $( COMPILE_ARCH ) , a x p )
COMPILE_ARCH = alpha
e n d i f
2007-10-13 12:03:47 +00:00
i f n d e f A R C H
ARCH = $( COMPILE_ARCH)
2005-12-29 00:04:41 +00:00
e n d i f
export ARCH
i f n e q ( $( PLATFORM ) , $( COMPILE_PLATFORM ) )
CROSS_COMPILING = 1
e l s e
CROSS_COMPILING = 0
ifneq ( $( ARCH) ,$( COMPILE_ARCH) )
CROSS_COMPILING = 1
endif
e n d i f
export CROSS_COMPILING
2011-10-28 19:12:43 +00:00
i f n d e f V E R S I O N
VERSION = 1.36
e n d i f
i f n d e f C L I E N T B I N
CLIENTBIN = ioquake3
e n d i f
i f n d e f S E R V E R B I N
SERVERBIN = ioq3ded
e n d i f
i f n d e f B A S E G A M E
BASEGAME = baseq3
e n d i f
i f n d e f B A S E G A M E _ C F L A G S
BASEGAME_CFLAGS =
e n d i f
i f n d e f M I S S I O N P A C K
MISSIONPACK = missionpack
e n d i f
i f n d e f M I S S I O N P A C K _ C F L A G S
MISSIONPACK_CFLAGS = -DMISSIONPACK
e n d i f
2005-09-03 22:45:50 +00:00
i f n d e f C O P Y D I R
COPYDIR = "/usr/local/games/quake3"
e n d i f
2005-08-26 17:39:27 +00:00
2009-09-14 23:49:20 +00:00
i f n d e f C O P Y B I N D I R
COPYBINDIR = $( COPYDIR)
e n d i f
2005-09-27 16:35:25 +00:00
i f n d e f M O U N T _ D I R
2006-01-15 21:45:57 +00:00
MOUNT_DIR = code
e n d i f
i f n d e f B U I L D _ D I R
BUILD_DIR = build
2005-09-27 16:35:25 +00:00
e n d i f
2005-08-26 17:39:27 +00:00
2011-02-07 04:03:19 +00:00
i f n d e f T E M P D I R
TEMPDIR = /tmp
e n d i f
2005-09-29 05:25:26 +00:00
i f n d e f G E N E R A T E _ D E P E N D E N C I E S
GENERATE_DEPENDENCIES = 1
2005-09-27 16:35:25 +00:00
e n d i f
2005-08-26 17:39:27 +00:00
2005-11-13 18:58:14 +00:00
i f n d e f U S E _ O P E N A L
USE_OPENAL = 1
e n d i f
2005-11-13 21:01:44 +00:00
i f n d e f U S E _ O P E N A L _ D L O P E N
2009-10-13 15:39:39 +00:00
USE_OPENAL_DLOPEN = 1
2005-11-13 21:01:44 +00:00
e n d i f
2006-09-11 16:41:55 +00:00
i f n d e f U S E _ C U R L
USE_CURL = 1
e n d i f
i f n d e f U S E _ C U R L _ D L O P E N
2015-01-30 21:52:53 +00:00
ifdef MINGW
2006-09-11 16:41:55 +00:00
USE_CURL_DLOPEN = 0
else
USE_CURL_DLOPEN = 1
endif
e n d i f
2006-01-06 17:36:03 +00:00
i f n d e f U S E _ C O D E C _ V O R B I S
2017-09-24 00:55:49 +00:00
USE_CODEC_VORBIS = 1
2006-01-06 17:36:03 +00:00
e n d i f
2013-02-18 00:32:05 +00:00
i f n d e f U S E _ C O D E C _ O P U S
USE_CODEC_OPUS = 1
e n d i f
2008-05-30 17:19:31 +00:00
i f n d e f U S E _ M U M B L E
USE_MUMBLE = 1
e n d i f
2008-06-01 07:51:23 +00:00
i f n d e f U S E _ V O I P
USE_VOIP = 1
e n d i f
2012-03-29 04:05:13 +00:00
i f n d e f U S E _ F R E E T Y P E
USE_FREETYPE = 0
e n d i f
2013-05-12 15:56:56 +00:00
i f n d e f U S E _ I N T E R N A L _ L I B S
USE_INTERNAL_LIBS = 1
e n d i f
2013-02-18 00:56:06 +00:00
i f n d e f U S E _ I N T E R N A L _ O G G
2013-05-12 15:56:56 +00:00
USE_INTERNAL_OGG = $( USE_INTERNAL_LIBS)
2013-02-18 00:56:06 +00:00
e n d i f
2014-02-08 08:26:03 +00:00
i f n d e f U S E _ I N T E R N A L _ V O R B I S
2014-07-20 10:58:38 +00:00
USE_INTERNAL_VORBIS = $( USE_INTERNAL_LIBS)
2014-02-08 08:26:03 +00:00
e n d i f
2013-02-18 00:32:05 +00:00
i f n d e f U S E _ I N T E R N A L _ O P U S
2013-05-12 15:56:56 +00:00
USE_INTERNAL_OPUS = $( USE_INTERNAL_LIBS)
2013-02-18 00:32:05 +00:00
e n d i f
2009-10-19 14:00:16 +00:00
i f n d e f U S E _ I N T E R N A L _ Z L I B
2013-05-12 15:56:56 +00:00
USE_INTERNAL_ZLIB = $( USE_INTERNAL_LIBS)
2009-10-19 14:00:16 +00:00
e n d i f
2011-03-12 16:45:15 +00:00
i f n d e f U S E _ I N T E R N A L _ J P E G
2013-05-12 15:56:56 +00:00
USE_INTERNAL_JPEG = $( USE_INTERNAL_LIBS)
2011-03-12 16:45:15 +00:00
e n d i f
2005-12-01 20:53:28 +00:00
i f n d e f U S E _ L O C A L _ H E A D E R S
2013-05-12 15:56:56 +00:00
USE_LOCAL_HEADERS = $( USE_INTERNAL_LIBS)
2005-12-01 20:53:28 +00:00
e n d i f
2011-08-01 01:19:55 +00:00
i f n d e f U S E _ R E N D E R E R _ D L O P E N
USE_RENDERER_DLOPEN = 1
e n d i f
2016-06-15 17:17:58 +00:00
i f n d e f U S E _ Y A C C
USE_YACC = 0
e n d i f
2017-06-02 06:29:09 +00:00
i f n d e f U S E _ A U T O U P D A T E R # DON'T include unless you mean to!
USE_AUTOUPDATER = 0
2017-05-25 18:13:18 +00:00
e n d i f
2009-11-08 17:04:30 +00:00
i f n d e f D E B U G _ C F L A G S
2016-06-12 21:06:54 +00:00
DEBUG_CFLAGS = -ggdb -O0
2009-11-03 19:23:51 +00:00
e n d i f
2005-08-26 17:39:27 +00:00
#############################################################################
2006-01-15 21:45:57 +00:00
BD = $( BUILD_DIR) /debug-$( PLATFORM) -$( ARCH)
BR = $( BUILD_DIR) /release-$( PLATFORM) -$( ARCH)
2005-08-26 17:39:27 +00:00
CDIR = $( MOUNT_DIR) /client
SDIR = $( MOUNT_DIR) /server
2013-02-16 12:14:48 +00:00
RCOMMONDIR = $( MOUNT_DIR) /renderercommon
2013-02-15 23:46:37 +00:00
RGL1DIR = $( MOUNT_DIR) /renderergl1
RGL2DIR = $( MOUNT_DIR) /renderergl2
2005-08-26 17:39:27 +00:00
CMDIR = $( MOUNT_DIR) /qcommon
2007-09-05 18:17:46 +00:00
SDLDIR = $( MOUNT_DIR) /sdl
ASMDIR = $( MOUNT_DIR) /asm
SYSDIR = $( MOUNT_DIR) /sys
2005-08-26 17:39:27 +00:00
GDIR = $( MOUNT_DIR) /game
CGDIR = $( MOUNT_DIR) /cgame
BLIBDIR = $( MOUNT_DIR) /botlib
NDIR = $( MOUNT_DIR) /null
UIDIR = $( MOUNT_DIR) /ui
Q3UIDIR = $( MOUNT_DIR) /q3_ui
2011-03-12 16:45:15 +00:00
JPDIR = $( MOUNT_DIR) /jpeg-8c
2018-03-16 17:23:38 +00:00
OGGDIR = $( MOUNT_DIR) /libogg-1.3.3
2018-03-16 17:32:03 +00:00
VORBISDIR = $( MOUNT_DIR) /libvorbis-1.3.6
2018-03-16 18:09:47 +00:00
OPUSDIR = $( MOUNT_DIR) /opus-1.2.1
2018-03-16 18:17:41 +00:00
OPUSFILEDIR = $( MOUNT_DIR) /opusfile-0.9
2009-10-19 14:00:16 +00:00
ZDIR = $( MOUNT_DIR) /zlib
2020-09-08 10:04:53 +00:00
TOOLSDIR = $( MOUNT_DIR) /tools
2007-09-12 23:37:33 +00:00
Q3ASMDIR = $( MOUNT_DIR) /tools/asm
LBURGDIR = $( MOUNT_DIR) /tools/lcc/lburg
Q3CPPDIR = $( MOUNT_DIR) /tools/lcc/cpp
Q3LCCETCDIR = $( MOUNT_DIR) /tools/lcc/etc
Q3LCCSRCDIR = $( MOUNT_DIR) /tools/lcc/src
2017-05-25 18:13:18 +00:00
AUTOUPDATERSRCDIR = $( MOUNT_DIR) /autoupdater
2017-06-04 05:16:37 +00:00
LIBTOMCRYPTSRCDIR = $( AUTOUPDATERSRCDIR) /rsa_tools/libtomcrypt-1.17
TOMSFASTMATHSRCDIR = $( AUTOUPDATERSRCDIR) /rsa_tools/tomsfastmath-0.13.1
2007-09-05 18:17:46 +00:00
LOKISETUPDIR = misc/setup
2008-04-15 14:19:03 +00:00
NSISDIR = misc/nsis
2013-01-21 22:40:05 +00:00
SDLHDIR = $( MOUNT_DIR) /SDL2
2006-01-15 21:45:57 +00:00
LIBSDIR = $( MOUNT_DIR) /libs
2005-08-26 17:39:27 +00:00
2009-10-15 13:11:49 +00:00
bin_path = $( shell which $( 1) 2> /dev/null)
2017-05-25 18:13:18 +00:00
# The autoupdater uses curl, so figure out its flags no matter what.
2009-10-08 22:29:55 +00:00
# We won't need this if we only build the server
2017-05-25 18:13:18 +00:00
2018-06-12 09:53:27 +00:00
# set PKG_CONFIG_PATH or PKG_CONFIG to influence this, e.g.
# PKG_CONFIG_PATH=/opt/cross/i386-mingw32msvc/lib/pkgconfig or
# PKG_CONFIG=arm-linux-gnueabihf-pkg-config
2018-10-02 04:48:36 +00:00
i f e q ( $( CROSS_COMPILING ) , 0 )
PKG_CONFIG ?= pkg-config
e l s e
i f n e q ( $( PKG_CONFIG_PATH ) , )
PKG_CONFIG ?= pkg-config
e l s e
# Don't use host pkg-config when cross-compiling.
# (unknown-pkg-config is meant to be a non-existant command.)
PKG_CONFIG ?= unknown-pkg-config
e n d i f
e n d i f
2018-06-12 09:53:27 +00:00
i f n e q ( $( call bin_path , $ ( PKG_CONFIG ) ) , )
CURL_CFLAGS ?= $( shell $( PKG_CONFIG) --silence-errors --cflags libcurl)
CURL_LIBS ?= $( shell $( PKG_CONFIG) --silence-errors --libs libcurl)
OPENAL_CFLAGS ?= $( shell $( PKG_CONFIG) --silence-errors --cflags openal)
OPENAL_LIBS ?= $( shell $( PKG_CONFIG) --silence-errors --libs openal)
SDL_CFLAGS ?= $( shell $( PKG_CONFIG) --silence-errors --cflags sdl2| sed 's/-Dmain=SDL_main//' )
SDL_LIBS ?= $( shell $( PKG_CONFIG) --silence-errors --libs sdl2)
2017-05-25 18:13:18 +00:00
e l s e
# assume they're in the system default paths (no -I or -L needed)
CURL_LIBS ?= -lcurl
OPENAL_LIBS ?= -lopenal
e n d i f
# Use sdl2-config if all else fails
i f e q ( $( SDL_CFLAGS ) , )
ifneq ( $( call bin_path, sdl2-config) ,)
2017-10-02 07:02:08 +00:00
SDL_CFLAGS = $( shell sdl2-config --cflags)
SDL_LIBS = $( shell sdl2-config --libs)
2009-05-03 18:49:48 +00:00
endif
2008-05-10 18:51:02 +00:00
e n d i f
2008-04-28 07:10:32 +00:00
2013-01-05 15:35:32 +00:00
# Add git version info
2013-01-03 21:08:28 +00:00
USE_GIT =
i f e q ( $( wildcard .git ) , . g i t )
2013-01-05 15:05:30 +00:00
GIT_REV = $( shell git show -s --pretty= format:%h-%ad --date= short)
2013-01-03 21:08:28 +00:00
ifneq ( $( GIT_REV) ,)
VERSION:= $( VERSION) _GIT_$( GIT_REV)
USE_GIT = 1
2006-08-22 16:13:51 +00:00
endif
2006-01-15 21:45:57 +00:00
e n d i f
2005-08-26 17:39:27 +00:00
#############################################################################
# SETUP AND BUILD -- LINUX
#############################################################################
2005-10-31 16:46:05 +00:00
INSTALL = install
2017-10-16 14:44:06 +00:00
MKDIR = mkdir -p
2014-08-26 15:59:33 +00:00
EXTRA_FILES =
CLIENT_EXTRA_FILES =
2005-10-31 16:46:05 +00:00
build: define ARCH_STRING in Makefile on Linux and other GNU platforms
GNU platforms (Linux, kFreeBSD, Hurd) have endian.h to determine
endianness, so all architectures except x86_64 are in fact treated
identically, except that their ARCH_STRING is different.
The ARCH_STRING must always be identical to the ARCH from the Makefile,
otherwise the engine will not find its cgame, game and ui plugins
under their expected names and startup will fail. If we pass it in
from the Makefile, then an identical value is guaranteed, and we can
get rid of an increasingly long list of defined(__some_cpu__) tests.
The one remaining quirk is that we test __x86_64__ to determine
whether to define idx64; I've kept that, but separated it from
the ARCH_STRING.
On non-Linux platforms we only support a few architectures anyway,
so keeping the list up to date is less of a burden; *BSD porters
could probably use the same technique to get support for lots of
architectures with little effort, but I have not done that here,
because I cannot test it.
Windows must continue to support preprocessor-based architecture tests
in any case, so that the MSVC solutions (which do not use the Makefile)
can continue to work. However, Windows only runs on a few CPU families,
so this shouldn't be a significant burden in practice.
When cross-compiling, the tools are compiled for the build architecture
(COMPILE_PLATFORM, COMPILE_ARCH) rather than the host architecture
(PLATFORM, ARCH), so define ARCH_STRING to COMPILE_ARCH on a GNU
COMPILE_PLATFORM.
2015-07-14 21:51:57 +00:00
i f n e q ( , $( findstring "$ ( COMPILE_PLATFORM ) ", "linux " "gnu_kfreebsd " "kfreebsd -gnu " "gnu ") )
TOOLS_CFLAGS += -DARCH_STRING= \" $( COMPILE_ARCH) \"
e n d i f
2013-05-12 11:22:20 +00:00
i f n e q ( , $( findstring "$ ( PLATFORM ) ", "linux " "gnu_kfreebsd " "kfreebsd -gnu " "gnu ") )
2008-11-12 13:40:04 +00:00
BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \
build: define ARCH_STRING in Makefile on Linux and other GNU platforms
GNU platforms (Linux, kFreeBSD, Hurd) have endian.h to determine
endianness, so all architectures except x86_64 are in fact treated
identically, except that their ARCH_STRING is different.
The ARCH_STRING must always be identical to the ARCH from the Makefile,
otherwise the engine will not find its cgame, game and ui plugins
under their expected names and startup will fail. If we pass it in
from the Makefile, then an identical value is guaranteed, and we can
get rid of an increasingly long list of defined(__some_cpu__) tests.
The one remaining quirk is that we test __x86_64__ to determine
whether to define idx64; I've kept that, but separated it from
the ARCH_STRING.
On non-Linux platforms we only support a few architectures anyway,
so keeping the list up to date is less of a burden; *BSD porters
could probably use the same technique to get support for lots of
architectures with little effort, but I have not done that here,
because I cannot test it.
Windows must continue to support preprocessor-based architecture tests
in any case, so that the MSVC solutions (which do not use the Makefile)
can continue to work. However, Windows only runs on a few CPU families,
so this shouldn't be a significant burden in practice.
When cross-compiling, the tools are compiled for the build architecture
(COMPILE_PLATFORM, COMPILE_ARCH) rather than the host architecture
(PLATFORM, ARCH), so define ARCH_STRING to COMPILE_ARCH on a GNU
COMPILE_PLATFORM.
2015-07-14 21:51:57 +00:00
-pipe -DUSE_ICON -DARCH_STRING= \\ \" $( ARCH) \\ \"
2011-08-01 12:48:31 +00:00
CLIENT_CFLAGS += $( SDL_CFLAGS)
2005-11-26 07:46:21 +00:00
2015-06-06 21:42:10 +00:00
OPTIMIZEVM = -O3
2009-11-08 17:04:30 +00:00
OPTIMIZE = $( OPTIMIZEVM) -ffast-math
2005-09-23 01:59:42 +00:00
2005-08-28 17:21:46 +00:00
ifeq ( $( ARCH) ,x86_64)
2015-06-06 21:42:10 +00:00
OPTIMIZEVM = -O3
2009-11-08 17:04:30 +00:00
OPTIMIZE = $( OPTIMIZEVM) -ffast-math
2005-12-18 15:36:07 +00:00
HAVE_VM_COMPILED = true
2005-08-26 17:39:27 +00:00
else
2013-03-21 11:22:44 +00:00
ifeq ( $( ARCH) ,x86)
2015-06-06 21:42:10 +00:00
OPTIMIZEVM = -O3 -march= i586
2009-11-08 17:04:30 +00:00
OPTIMIZE = $( OPTIMIZEVM) -ffast-math
2005-10-29 17:41:17 +00:00
HAVE_VM_COMPILED = true
2005-08-30 11:37:41 +00:00
else
ifeq ( $( ARCH) ,ppc)
2018-05-12 18:14:47 +00:00
ALTIVEC_CFLAGS = -maltivec
2008-11-10 09:46:41 +00:00
HAVE_VM_COMPILED = true
endif
ifeq ( $( ARCH) ,ppc64)
2018-05-12 18:14:47 +00:00
ALTIVEC_CFLAGS = -maltivec
2008-11-10 09:46:41 +00:00
HAVE_VM_COMPILED = true
2005-08-30 11:37:41 +00:00
endif
2009-03-02 17:29:26 +00:00
ifeq ( $( ARCH) ,sparc)
OPTIMIZE += -mtune= ultrasparc3 -mv8plus
2009-11-08 17:04:30 +00:00
OPTIMIZEVM += -mtune= ultrasparc3 -mv8plus
2009-03-02 17:29:46 +00:00
HAVE_VM_COMPILED = true
2009-03-02 17:29:26 +00:00
endif
2014-10-23 11:00:17 +00:00
ifeq ( $( ARCH) ,armv7l)
HAVE_VM_COMPILED = true
endif
2011-02-06 17:19:06 +00:00
ifeq ( $( ARCH) ,alpha)
# According to http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=410555
# -ffast-math will cause the client to die with SIGFPE on Alpha
OPTIMIZE = $( OPTIMIZEVM)
endif
2005-08-28 17:21:46 +00:00
endif
2005-08-26 17:39:27 +00:00
endif
SHLIBEXT = so
2009-09-15 02:48:17 +00:00
SHLIBCFLAGS = -fPIC -fvisibility= hidden
2005-08-26 17:39:27 +00:00
SHLIBLDFLAGS = -shared $( LDFLAGS)
2008-11-02 17:32:21 +00:00
THREAD_LIBS = -lpthread
LIBS = -ldl -lm
2017-06-04 06:21:55 +00:00
AUTOUPDATER_LIBS += -ldl
2005-08-26 17:39:27 +00:00
2011-08-01 11:53:59 +00:00
CLIENT_LIBS = $( SDL_LIBS)
2017-10-01 23:59:01 +00:00
RENDERER_LIBS = $( SDL_LIBS)
2005-08-30 23:25:02 +00:00
2005-11-26 07:46:21 +00:00
ifeq ( $( USE_OPENAL) ,1)
ifneq ( $( USE_OPENAL_DLOPEN) ,1)
2014-07-20 22:31:37 +00:00
CLIENT_LIBS += $( THREAD_LIBS) $( OPENAL_LIBS)
2005-11-26 07:46:21 +00:00
endif
2005-11-15 22:22:45 +00:00
endif
2007-09-05 18:17:46 +00:00
2006-09-11 16:41:55 +00:00
ifeq ( $( USE_CURL) ,1)
2013-05-19 19:57:04 +00:00
CLIENT_CFLAGS += $( CURL_CFLAGS)
2006-09-11 16:41:55 +00:00
ifneq ( $( USE_CURL_DLOPEN) ,1)
2013-05-19 19:57:04 +00:00
CLIENT_LIBS += $( CURL_LIBS)
2006-09-11 16:41:55 +00:00
endif
endif
2005-11-15 22:22:45 +00:00
2008-05-30 17:19:31 +00:00
ifeq ( $( USE_MUMBLE) ,1)
2008-11-02 17:32:21 +00:00
CLIENT_LIBS += -lrt
2008-05-30 17:19:31 +00:00
endif
2013-03-21 11:22:44 +00:00
ifeq ( $( ARCH) ,x86)
2005-08-27 18:10:36 +00:00
# linux32 make ...
BASE_CFLAGS += -m32
2007-10-12 10:25:13 +00:00
else
ifeq ( $( ARCH) ,ppc64)
BASE_CFLAGS += -m64
endif
2005-08-27 18:10:36 +00:00
endif
2005-08-26 17:39:27 +00:00
e l s e # ifeq Linux
2005-11-26 07:46:21 +00:00
#############################################################################
# SETUP AND BUILD -- MAC OS X
#############################################################################
i f e q ( $( PLATFORM ) , d a r w i n )
2006-08-02 04:01:36 +00:00
HAVE_VM_COMPILED = true
2012-12-31 01:32:15 +00:00
LIBS = -framework Cocoa
2008-11-02 17:32:21 +00:00
CLIENT_LIBS =
2011-08-10 21:14:17 +00:00
RENDERER_LIBS =
2017-12-16 18:51:56 +00:00
OPTIMIZEVM = -O3
2013-01-05 15:35:50 +00:00
2017-05-24 19:09:48 +00:00
# Default minimum Mac OS X version
ifeq ( $( MACOSX_VERSION_MIN) ,)
2022-09-02 23:37:34 +00:00
MACOSX_VERSION_MIN = 10.9
2021-11-07 03:35:54 +00:00
ifneq ( $( findstring $( ARCH) ,ppc ppc64) ,)
MACOSX_VERSION_MIN = 10.5
endif
2022-09-02 23:37:34 +00:00
ifeq ( $( ARCH) ,x86)
MACOSX_VERSION_MIN = 10.6
endif
ifeq ( $( ARCH) ,x86_64)
# trying to find default SDK version is hard
# macOS 10.15 requires -sdk macosx but 10.11 doesn't support it
# macOS 10.6 doesn't have -show-sdk-version
DEFAULT_SDK = $( shell xcrun -sdk macosx -show-sdk-version 2> /dev/null)
ifeq ( $( DEFAULT_SDK) ,)
DEFAULT_SDK = $( shell xcrun -show-sdk-version 2> /dev/null)
endif
ifeq ( $( DEFAULT_SDK) ,)
$( error Error: Unable to determine macOS SDK version. On macOS 10.6 to 10.8 run: make MACOSX_VERSION_MIN = 10.6 On macOS 10.9 or later run: make MACOSX_VERSION_MIN = 10.9 ) ;
endif
ifneq ( $( findstring $( DEFAULT_SDK) ,10.6 10.7 10.8) ,)
MACOSX_VERSION_MIN = 10.6
else
MACOSX_VERSION_MIN = 10.9
endif
endif
2021-11-07 03:35:54 +00:00
ifeq ( $( ARCH) ,arm64)
MACOSX_VERSION_MIN = 11.0
endif
2017-05-24 19:09:48 +00:00
endif
2018-02-08 16:20:39 +00:00
MACOSX_MAJOR = $( shell echo $( MACOSX_VERSION_MIN) | cut -d. -f1)
MACOSX_MINOR = $( shell echo $( MACOSX_VERSION_MIN) | cut -d. -f2)
ifeq ( $( shell test $( MACOSX_MINOR) -gt 9; echo $$ ?) ,0)
# Multiply and then remove decimal. 10.10 -> 101000.0 -> 101000
MAC_OS_X_VERSION_MIN_REQUIRED = $( shell echo " $( MACOSX_MAJOR) * 10000 + $( MACOSX_MINOR) * 100 " | bc | cut -d. -f1)
else
# Multiply by 100 and then remove decimal. 10.7 -> 1070.0 -> 1070
MAC_OS_X_VERSION_MIN_REQUIRED = $( shell echo " $( MACOSX_VERSION_MIN) * 100 " | bc | cut -d. -f1)
endif
2017-05-24 19:09:48 +00:00
LDFLAGS += -mmacosx-version-min= $( MACOSX_VERSION_MIN)
BASE_CFLAGS += -mmacosx-version-min= $( MACOSX_VERSION_MIN) \
-DMAC_OS_X_VERSION_MIN_REQUIRED= $( MAC_OS_X_VERSION_MIN_REQUIRED)
2005-11-26 07:46:21 +00:00
2021-11-07 03:37:36 +00:00
MACOSX_ARCH = $( ARCH)
ifeq ( $( ARCH) ,x86)
MACOSX_ARCH = i386
endif
2006-08-02 04:01:36 +00:00
ifeq ( $( ARCH) ,ppc)
2018-05-12 18:14:47 +00:00
BASE_CFLAGS += -arch ppc
ALTIVEC_CFLAGS = -faltivec
2006-08-02 04:01:36 +00:00
endif
2008-11-10 09:46:41 +00:00
ifeq ( $( ARCH) ,ppc64)
2018-05-12 18:14:47 +00:00
BASE_CFLAGS += -arch ppc64
ALTIVEC_CFLAGS = -faltivec
2008-11-10 09:46:41 +00:00
endif
2013-03-21 11:22:44 +00:00
ifeq ( $( ARCH) ,x86)
2009-11-08 17:04:30 +00:00
OPTIMIZEVM += -march= prescott -mfpmath= sse
2006-08-02 04:01:36 +00:00
# x86 vm will crash without -mstackrealign since MMX instructions will be
# used no matter what and they corrupt the frame pointer in VM calls
2011-09-29 02:44:08 +00:00
BASE_CFLAGS += -arch i386 -m32 -mstackrealign
2006-08-02 04:01:36 +00:00
endif
2011-08-10 20:48:53 +00:00
ifeq ( $( ARCH) ,x86_64)
2017-05-24 19:09:48 +00:00
OPTIMIZEVM += -mfpmath= sse
BASE_CFLAGS += -arch x86_64
2011-08-10 20:48:53 +00:00
endif
2021-01-28 23:37:23 +00:00
ifeq ( $( ARCH) ,arm64)
2021-06-27 02:42:36 +00:00
# HAVE_VM_COMPILED=false # TODO: implement compiled vm
2021-01-28 23:37:23 +00:00
BASE_CFLAGS += -arch arm64
endif
2006-08-02 04:01:36 +00:00
2013-03-28 09:55:53 +00:00
# When compiling on OSX for OSX, we're not cross compiling as far as the
# Makefile is concerned, as target architecture is specified as a compiler
# argument
ifeq ( $( COMPILE_PLATFORM) ,darwin)
CROSS_COMPILING = 0
endif
2013-03-25 22:41:15 +00:00
ifeq ( $( CROSS_COMPILING) ,1)
2021-11-07 03:37:36 +00:00
# If CC is already set to something generic, we probably want to use
# something more specific
ifneq ( $( findstring $( strip $( CC) ) ,cc gcc) ,)
CC =
endif
ifndef CC
ifndef DARWIN
# macOS 10.9 SDK
DARWIN = 13
ifneq ( $( findstring $( ARCH) ,ppc ppc64) ,)
# macOS 10.5 SDK, though as of writing osxcross doesn't support ppc/ppc64
DARWIN = 9
endif
ifeq ( $( ARCH) ,arm64)
# macOS 11.3 SDK
DARWIN = 20.4
endif
endif
CC = $( MACOSX_ARCH) -apple-darwin$( DARWIN) -cc
RANLIB = $( MACOSX_ARCH) -apple-darwin$( DARWIN) -ranlib
2021-10-24 08:38:34 +00:00
LIPO = $( MACOSX_ARCH) -apple-darwin$( DARWIN) -lipo
2021-11-07 03:37:36 +00:00
ifeq ( $( call bin_path, $( CC) ) ,)
$( error Unable to find osxcross $( CC) )
2013-03-25 22:41:15 +00:00
endif
endif
endif
2021-10-24 08:38:34 +00:00
ifndef LIPO
LIPO = lipo
endif
2016-06-12 21:06:54 +00:00
BASE_CFLAGS += -fno-strict-aliasing -fno-common -pipe
2005-11-26 07:46:21 +00:00
ifeq ( $( USE_OPENAL) ,1)
2018-04-24 17:28:46 +00:00
ifneq ( $( USE_LOCAL_HEADERS) ,1)
CLIENT_CFLAGS += -I/System/Library/Frameworks/OpenAL.framework/Headers
endif
2006-08-02 04:01:36 +00:00
ifneq ( $( USE_OPENAL_DLOPEN) ,1)
2008-11-02 17:32:21 +00:00
CLIENT_LIBS += -framework OpenAL
2005-11-26 07:46:21 +00:00
endif
endif
2007-07-15 12:08:11 +00:00
2006-09-11 16:41:55 +00:00
ifeq ( $( USE_CURL) ,1)
2013-05-19 19:57:04 +00:00
CLIENT_CFLAGS += $( CURL_CFLAGS)
2006-09-11 16:41:55 +00:00
ifneq ( $( USE_CURL_DLOPEN) ,1)
2013-05-19 19:57:04 +00:00
CLIENT_LIBS += $( CURL_LIBS)
2006-09-11 16:41:55 +00:00
endif
endif
2005-11-26 07:46:21 +00:00
2007-11-02 23:36:23 +00:00
BASE_CFLAGS += -D_THREAD_SAFE= 1
2018-04-24 17:28:46 +00:00
CLIENT_LIBS += -framework IOKit
RENDERER_LIBS += -framework OpenGL
2007-11-02 23:36:23 +00:00
ifeq ( $( USE_LOCAL_HEADERS) ,1)
2022-09-02 23:37:34 +00:00
ifeq ( $( shell test $( MAC_OS_X_VERSION_MIN_REQUIRED) -ge 1090; echo $$ ?) ,0)
# Universal Binary 2 - for running on macOS 10.9 or later
# x86_64 (10.9 or later), arm64 (11.0 or later)
MACLIBSDIR = $( LIBSDIR) /macosx-ub2
2018-04-24 18:40:53 +00:00
BASE_CFLAGS += -I$( SDLHDIR) /include
2022-09-02 23:37:34 +00:00
else
# Universal Binary - for running on Mac OS X 10.5 or later
2022-09-03 04:44:47 +00:00
# ppc (10.5/10.6), x86 (10.6 or later), x86_64 (10.6 or later)
#
# x86/x86_64 on 10.5 will run the ppc build.
#
# SDL 2.0.1, last with Mac OS X PowerPC
# SDL 2.0.4, last with Mac OS X 10.5 (x86/x86_64)
# SDL 2.0.22, last with Mac OS X 10.6 (x86/x86_64)
#
# code/libs/macosx-ub/libSDL2-2.0.0.dylib contents
# - ppc build is SDL 2.0.1 with a header change so it compiles
# - x86/x86_64 build are SDL 2.0.22
2022-09-02 23:37:34 +00:00
MACLIBSDIR = $( LIBSDIR) /macosx-ub
ifneq ( $( findstring $( ARCH) ,ppc ppc64) ,)
BASE_CFLAGS += -I$( SDLHDIR) /include-macppc
else
2022-09-03 04:44:47 +00:00
BASE_CFLAGS += -I$( SDLHDIR) /include-2.0.22
2022-09-02 23:37:34 +00:00
endif
2018-04-24 18:40:53 +00:00
endif
2007-11-02 23:36:23 +00:00
2018-04-24 17:28:46 +00:00
# We copy sdlmain before ranlib'ing it so that subversion doesn't think
# the file has been modified by each build.
LIBSDLMAIN = $( B) /libSDL2main.a
2022-09-02 23:37:34 +00:00
LIBSDLMAINSRC = $( MACLIBSDIR) /libSDL2main.a
CLIENT_LIBS += $( MACLIBSDIR) /libSDL2-2.0.0.dylib
RENDERER_LIBS += $( MACLIBSDIR) /libSDL2-2.0.0.dylib
CLIENT_EXTRA_FILES += $( MACLIBSDIR) /libSDL2-2.0.0.dylib
2018-04-24 17:28:46 +00:00
else
BASE_CFLAGS += -I/Library/Frameworks/SDL2.framework/Headers
CLIENT_LIBS += -framework SDL2
RENDERER_LIBS += -framework SDL2
endif
2005-11-26 07:46:21 +00:00
2009-11-08 17:04:30 +00:00
OPTIMIZE = $( OPTIMIZEVM) -ffast-math
2005-11-26 07:46:21 +00:00
SHLIBEXT = dylib
SHLIBCFLAGS = -fPIC -fno-common
2011-09-29 02:44:08 +00:00
SHLIBLDFLAGS = -dynamiclib $( LDFLAGS) -Wl,-U,_com_altivec
2005-11-26 07:46:21 +00:00
NOTSHLIBCFLAGS = -mdynamic-no-pic
e l s e # ifeq darwin
2005-09-22 03:21:33 +00:00
#############################################################################
# SETUP AND BUILD -- MINGW32
#############################################################################
2015-01-30 21:52:53 +00:00
i f d e f M I N G W
2005-09-22 03:21:33 +00:00
2013-03-22 13:49:50 +00:00
ifeq ( $( CROSS_COMPILING) ,1)
# If CC is already set to something generic, we probably want to use
# something more specific
2013-03-22 14:47:37 +00:00
ifneq ( $( findstring $( strip $( CC) ) ,cc gcc) ,)
2013-03-22 13:49:50 +00:00
CC =
endif
2013-03-22 14:47:37 +00:00
# We need to figure out the correct gcc and windres
ifeq ( $( ARCH) ,x86_64)
2016-11-01 22:44:40 +00:00
MINGW_PREFIXES = x86_64-w64-mingw32 amd64-mingw32msvc
2013-03-22 14:47:37 +00:00
endif
ifeq ( $( ARCH) ,x86)
2016-11-01 22:44:40 +00:00
MINGW_PREFIXES = i686-w64-mingw32 i586-mingw32msvc i686-pc-mingw32
2013-03-22 14:47:37 +00:00
endif
2013-03-22 13:49:50 +00:00
2013-03-22 14:47:37 +00:00
ifndef CC
2016-05-09 01:08:07 +00:00
CC = $( firstword $( strip $( foreach MINGW_PREFIX, $( MINGW_PREFIXES) , \
$( call bin_path, $( MINGW_PREFIX) -gcc) ) ) )
2013-03-22 14:47:37 +00:00
endif
2013-03-22 13:49:50 +00:00
2013-03-22 14:47:37 +00:00
ifndef WINDRES
2016-05-09 01:08:07 +00:00
WINDRES = $( firstword $( strip $( foreach MINGW_PREFIX, $( MINGW_PREFIXES) , \
$( call bin_path, $( MINGW_PREFIX) -windres) ) ) )
2013-03-22 13:49:50 +00:00
endif
2013-03-22 14:26:29 +00:00
else
# Some MinGW installations define CC to cc, but don't actually provide cc,
# so check that CC points to a real binary and use gcc if it doesn't
ifeq ( $( call bin_path, $( CC) ) ,)
CC = gcc
endif
2009-10-13 15:22:43 +00:00
2017-03-23 15:34:27 +00:00
endif
# using generic windres if specific one is not present
ifndef WINDRES
WINDRES = windres
2008-05-10 18:51:02 +00:00
endif
2005-09-22 03:21:33 +00:00
2014-02-08 03:57:39 +00:00
ifeq ( $( CC) ,)
$( error Cannot find a suitable cross compiler for $( PLATFORM) )
endif
2008-11-12 13:40:04 +00:00
BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \
2007-11-02 23:36:23 +00:00
-DUSE_ICON
2008-08-09 19:12:30 +00:00
# In the absence of wspiapi.h, require Windows XP or later
ifeq ( $( shell test -e $( CMDIR) /wspiapi.h; echo $$ ?) ,1)
BASE_CFLAGS += -DWINVER= 0x501
endif
2008-04-05 16:01:58 +00:00
2005-11-13 18:58:14 +00:00
ifeq ( $( USE_OPENAL) ,1)
2009-11-08 17:04:30 +00:00
CLIENT_CFLAGS += $( OPENAL_CFLAGS)
2011-08-02 22:00:57 +00:00
ifneq ( $( USE_OPENAL_DLOPEN) ,1)
2008-04-28 07:10:32 +00:00
CLIENT_LDFLAGS += $( OPENAL_LDFLAGS)
2006-09-11 16:41:55 +00:00
endif
endif
2013-01-05 15:35:50 +00:00
2013-03-21 11:22:44 +00:00
ifeq ( $( ARCH) ,x86_64)
2015-06-06 21:42:10 +00:00
OPTIMIZEVM = -O3
2014-07-15 05:19:48 +00:00
OPTIMIZE = $( OPTIMIZEVM) -ffast-math
2010-02-28 09:00:02 +00:00
HAVE_VM_COMPILED = true
endif
ifeq ( $( ARCH) ,x86)
2015-06-06 21:42:10 +00:00
OPTIMIZEVM = -O3 -march= i586
2010-02-28 09:00:02 +00:00
OPTIMIZE = $( OPTIMIZEVM) -ffast-math
HAVE_VM_COMPILED = true
endif
2006-06-06 18:09:09 +00:00
2005-09-22 03:21:33 +00:00
SHLIBEXT = dll
SHLIBCFLAGS =
SHLIBLDFLAGS = -shared $( LDFLAGS)
2005-10-04 23:54:51 +00:00
BINEXT = .exe
2013-03-24 22:06:45 +00:00
ifeq ( $( CROSS_COMPILING) ,0)
TOOLS_BINEXT = .exe
endif
2015-01-27 09:33:15 +00:00
ifeq ( $( COMPILE_PLATFORM) ,cygwin)
TOOLS_BINEXT = .exe
2020-12-26 21:54:58 +00:00
# Under cygwin the default of using gcc for TOOLS_CC won't work, so
# we need to figure out the appropriate compiler to use, based on the
# host architecture that we're running under (as tools run on the host)
ifeq ( $( COMPILE_ARCH) ,x86_64)
TOOLS_MINGW_PREFIXES = x86_64-w64-mingw32 amd64-mingw32msvc
endif
ifeq ( $( COMPILE_ARCH) ,x86)
TOOLS_MINGW_PREFIXES = i686-w64-mingw32 i586-mingw32msvc i686-pc-mingw32
endif
TOOLS_CC = $( firstword $( strip $( foreach TOOLS_MINGW_PREFIX, $( TOOLS_MINGW_PREFIXES) , \
$( call bin_path, $( TOOLS_MINGW_PREFIX) -gcc) ) ) )
2015-01-27 09:33:15 +00:00
endif
2010-02-16 09:43:44 +00:00
LIBS = -lws2_32 -lwinmm -lpsapi
2017-06-02 04:49:42 +00:00
AUTOUPDATER_LIBS += -lwininet
2014-02-14 04:34:17 +00:00
# clang 3.4 doesn't support this
ifneq ( " $( CC) " , $( findstring " $( CC) " , "clang" "clang++" ) )
CLIENT_LDFLAGS += -mwindows
endif
2011-08-01 13:25:55 +00:00
CLIENT_LIBS = -lgdi32 -lole32
2017-10-01 23:59:01 +00:00
RENDERER_LIBS = -lgdi32 -lole32 -static-libgcc
2013-01-05 15:35:50 +00:00
2012-03-29 04:05:13 +00:00
ifeq ( $( USE_FREETYPE) ,1)
2013-05-19 19:52:23 +00:00
FREETYPE_CFLAGS = -Ifreetype2
2012-03-29 04:05:13 +00:00
endif
2006-09-11 16:41:55 +00:00
ifeq ( $( USE_CURL) ,1)
2009-11-08 17:04:30 +00:00
CLIENT_CFLAGS += $( CURL_CFLAGS)
2006-09-11 16:41:55 +00:00
ifneq ( $( USE_CURL_DLOPEN) ,1)
2008-04-28 07:10:32 +00:00
ifeq ( $( USE_LOCAL_HEADERS) ,1)
2009-11-08 17:04:30 +00:00
CLIENT_CFLAGS += -DCURL_STATICLIB
2013-03-21 11:22:44 +00:00
ifeq ( $( ARCH) ,x86_64)
2017-07-28 13:59:43 +00:00
CLIENT_LIBS += $( LIBSDIR) /win64/libcurl.a -lcrypt32
2011-08-02 22:00:57 +00:00
else
2017-07-28 13:59:43 +00:00
CLIENT_LIBS += $( LIBSDIR) /win32/libcurl.a -lcrypt32
2010-02-28 09:00:02 +00:00
endif
2008-04-28 07:10:32 +00:00
else
2008-11-02 17:32:21 +00:00
CLIENT_LIBS += $( CURL_LIBS)
2008-04-28 07:10:32 +00:00
endif
2006-09-11 16:41:55 +00:00
endif
endif
2005-09-22 03:21:33 +00:00
ifeq ( $( ARCH) ,x86)
# build 32bit
BASE_CFLAGS += -m32
2010-02-28 09:00:02 +00:00
else
BASE_CFLAGS += -m64
2005-09-22 03:21:33 +00:00
endif
2007-09-05 18:17:46 +00:00
# libmingw32 must be linked before libSDLmain
2008-11-02 17:32:21 +00:00
CLIENT_LIBS += -lmingw32
2011-08-01 13:25:55 +00:00
RENDERER_LIBS += -lmingw32
2013-01-05 15:35:50 +00:00
2008-04-28 07:10:32 +00:00
ifeq ( $( USE_LOCAL_HEADERS) ,1)
2009-11-08 17:04:30 +00:00
CLIENT_CFLAGS += -I$( SDLHDIR) /include
2013-03-21 11:22:44 +00:00
ifeq ( $( ARCH) ,x86)
2013-01-21 22:40:05 +00:00
CLIENT_LIBS += $( LIBSDIR) /win32/libSDL2main.a \
$( LIBSDIR) /win32/libSDL2.dll.a
RENDERER_LIBS += $( LIBSDIR) /win32/libSDL2main.a \
$( LIBSDIR) /win32/libSDL2.dll.a
2014-03-09 03:00:38 +00:00
SDLDLL = SDL2.dll
2014-08-26 15:59:33 +00:00
CLIENT_EXTRA_FILES += $( LIBSDIR) /win32/SDL2.dll
2010-02-28 09:00:02 +00:00
else
2014-03-09 03:00:38 +00:00
CLIENT_LIBS += $( LIBSDIR) /win64/libSDL264main.a \
$( LIBSDIR) /win64/libSDL264.dll.a
RENDERER_LIBS += $( LIBSDIR) /win64/libSDL264main.a \
$( LIBSDIR) /win64/libSDL264.dll.a
SDLDLL = SDL264.dll
2014-08-26 15:59:33 +00:00
CLIENT_EXTRA_FILES += $( LIBSDIR) /win64/SDL264.dll
2010-02-28 09:00:02 +00:00
endif
2008-04-28 07:10:32 +00:00
else
2009-11-08 17:04:30 +00:00
CLIENT_CFLAGS += $( SDL_CFLAGS)
2008-11-02 17:32:21 +00:00
CLIENT_LIBS += $( SDL_LIBS)
2011-08-01 13:25:55 +00:00
RENDERER_LIBS += $( SDL_LIBS)
2014-03-09 03:00:38 +00:00
SDLDLL = SDL2.dll
2008-04-28 07:10:32 +00:00
endif
2015-01-30 21:52:53 +00:00
e l s e # ifdef MINGW
2005-09-22 03:21:33 +00:00
2005-08-26 17:39:27 +00:00
#############################################################################
# SETUP AND BUILD -- FREEBSD
#############################################################################
i f e q ( $( PLATFORM ) , f r e e b s d )
2024-05-18 06:40:32 +00:00
# Use the default C compiler
TOOLS_CC = cc
2005-08-26 17:39:27 +00:00
2010-01-07 19:53:52 +00:00
# flags
2017-03-27 21:20:52 +00:00
BASE_CFLAGS = \
2010-01-07 19:53:52 +00:00
-Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \
-DUSE_ICON -DMAP_ANONYMOUS= MAP_ANON
2011-08-01 12:48:31 +00:00
CLIENT_CFLAGS += $( SDL_CFLAGS)
2010-01-07 19:53:52 +00:00
HAVE_VM_COMPILED = true
2005-09-23 01:59:42 +00:00
2017-03-27 21:21:48 +00:00
OPTIMIZEVM =
2011-01-27 07:19:25 +00:00
OPTIMIZE = $( OPTIMIZEVM) -ffast-math
2007-09-05 18:17:46 +00:00
2005-09-23 01:59:42 +00:00
SHLIBEXT = so
SHLIBCFLAGS = -fPIC
SHLIBLDFLAGS = -shared $( LDFLAGS)
2005-08-26 17:39:27 +00:00
2008-11-02 17:32:21 +00:00
THREAD_LIBS = -lpthread
2005-09-23 01:59:42 +00:00
# don't need -ldl (FreeBSD)
2008-11-02 17:32:21 +00:00
LIBS = -lm
2005-08-26 17:39:27 +00:00
2008-11-02 17:32:21 +00:00
CLIENT_LIBS =
2006-01-26 21:20:47 +00:00
2011-08-01 11:53:59 +00:00
CLIENT_LIBS += $( SDL_LIBS)
2017-10-01 23:59:01 +00:00
RENDERER_LIBS = $( SDL_LIBS)
2006-01-26 21:20:47 +00:00
2010-01-07 19:53:52 +00:00
# optional features/libraries
2006-01-26 21:20:47 +00:00
ifeq ( $( USE_OPENAL) ,1)
2010-01-07 19:53:52 +00:00
ifeq ( $( USE_OPENAL_DLOPEN) ,1)
2013-05-19 20:06:16 +00:00
CLIENT_LIBS += $( THREAD_LIBS) $( OPENAL_LIBS)
2006-01-26 21:20:47 +00:00
endif
endif
2010-01-07 19:53:52 +00:00
ifeq ( $( USE_CURL) ,1)
2013-05-19 19:57:04 +00:00
CLIENT_CFLAGS += $( CURL_CFLAGS)
2010-01-07 19:53:52 +00:00
ifeq ( $( USE_CURL_DLOPEN) ,1)
2013-05-19 19:57:04 +00:00
CLIENT_LIBS += $( CURL_LIBS)
2010-01-07 19:53:52 +00:00
endif
endif
# cross-compiling tweaks
2013-03-21 11:22:44 +00:00
ifeq ( $( ARCH) ,x86)
2010-01-07 19:53:52 +00:00
ifeq ( $( CROSS_COMPILING) ,1)
BASE_CFLAGS += -m32
endif
endif
2013-03-21 11:22:44 +00:00
ifeq ( $( ARCH) ,x86_64)
2010-01-07 19:53:52 +00:00
ifeq ( $( CROSS_COMPILING) ,1)
BASE_CFLAGS += -m64
endif
endif
2005-08-26 17:39:27 +00:00
e l s e # ifeq freebsd
2007-10-12 23:27:47 +00:00
#############################################################################
# SETUP AND BUILD -- OPENBSD
#############################################################################
i f e q ( $( PLATFORM ) , o p e n b s d )
2008-11-12 13:40:04 +00:00
BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \
2013-05-05 01:56:24 +00:00
-pipe -DUSE_ICON -DMAP_ANONYMOUS= MAP_ANON
2011-08-01 12:48:31 +00:00
CLIENT_CFLAGS += $( SDL_CFLAGS)
2007-10-12 23:27:47 +00:00
2015-06-06 21:42:10 +00:00
OPTIMIZEVM = -O3
2013-05-05 01:56:24 +00:00
OPTIMIZE = $( OPTIMIZEVM) -ffast-math
ifeq ( $( ARCH) ,x86_64)
2015-06-06 21:42:10 +00:00
OPTIMIZEVM = -O3
2013-05-05 01:56:24 +00:00
OPTIMIZE = $( OPTIMIZEVM) -ffast-math
HAVE_VM_COMPILED = true
else
ifeq ( $( ARCH) ,x86)
2015-06-06 21:42:10 +00:00
OPTIMIZEVM = -O3 -march= i586
2013-05-05 01:56:24 +00:00
OPTIMIZE = $( OPTIMIZEVM) -ffast-math
HAVE_VM_COMPILED = true
else
ifeq ( $( ARCH) ,ppc)
2018-05-12 18:27:08 +00:00
ALTIVEC_CFLAGS = -maltivec
2013-05-05 01:56:24 +00:00
HAVE_VM_COMPILED = true
endif
ifeq ( $( ARCH) ,ppc64)
2018-05-12 18:27:08 +00:00
ALTIVEC_CFLAGS = -maltivec
2013-05-05 01:56:24 +00:00
HAVE_VM_COMPILED = true
endif
ifeq ( $( ARCH) ,sparc64)
OPTIMIZE += -mtune= ultrasparc3 -mv8plus
OPTIMIZEVM += -mtune= ultrasparc3 -mv8plus
HAVE_VM_COMPILED = true
endif
ifeq ( $( ARCH) ,alpha)
# According to http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=410555
# -ffast-math will cause the client to die with SIGFPE on Alpha
OPTIMIZE = $( OPTIMIZEVM)
endif
endif
endif
2009-09-14 23:49:20 +00:00
ifeq ( $( USE_CURL) ,1)
2011-08-02 22:00:57 +00:00
CLIENT_CFLAGS += $( CURL_CFLAGS)
2009-09-14 23:49:20 +00:00
USE_CURL_DLOPEN = 0
endif
2012-12-16 02:58:47 +00:00
# no shm_open on OpenBSD
USE_MUMBLE = 0
2007-10-12 23:27:47 +00:00
SHLIBEXT = so
SHLIBCFLAGS = -fPIC
SHLIBLDFLAGS = -shared $( LDFLAGS)
2013-05-05 01:40:57 +00:00
THREAD_LIBS = -lpthread
2008-11-02 17:32:21 +00:00
LIBS = -lm
2007-10-12 23:27:47 +00:00
2008-11-02 17:32:21 +00:00
CLIENT_LIBS =
2007-10-12 23:27:47 +00:00
2011-08-01 11:53:59 +00:00
CLIENT_LIBS += $( SDL_LIBS)
2017-10-01 23:59:01 +00:00
RENDERER_LIBS = $( SDL_LIBS)
2007-10-12 23:27:47 +00:00
ifeq ( $( USE_OPENAL) ,1)
ifneq ( $( USE_OPENAL_DLOPEN) ,1)
2013-05-19 20:06:16 +00:00
CLIENT_LIBS += $( THREAD_LIBS) $( OPENAL_LIBS)
2007-10-12 23:27:47 +00:00
endif
endif
2013-01-05 15:35:50 +00:00
ifeq ( $( USE_CURL) ,1)
2009-09-14 23:49:20 +00:00
ifneq ( $( USE_CURL_DLOPEN) ,1)
2013-05-19 19:57:04 +00:00
CLIENT_LIBS += $( CURL_LIBS)
2009-09-14 23:49:20 +00:00
endif
endif
2007-10-12 23:27:47 +00:00
e l s e # ifeq openbsd
2005-12-27 19:46:01 +00:00
#############################################################################
# SETUP AND BUILD -- NETBSD
#############################################################################
i f e q ( $( PLATFORM ) , n e t b s d )
2008-11-02 17:32:21 +00:00
LIBS = -lm
2005-12-27 19:46:01 +00:00
SHLIBEXT = so
SHLIBCFLAGS = -fPIC
SHLIBLDFLAGS = -shared $( LDFLAGS)
2008-11-02 17:32:21 +00:00
THREAD_LIBS = -lpthread
2005-12-27 19:46:01 +00:00
2008-11-12 13:40:04 +00:00
BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes
2005-12-27 19:46:01 +00:00
2013-03-21 11:22:44 +00:00
ifeq ( $( ARCH) ,x86)
2011-08-02 22:00:57 +00:00
HAVE_VM_COMPILED = true
2005-12-27 19:46:01 +00:00
endif
2005-12-30 17:50:47 +00:00
BUILD_CLIENT = 0
2005-12-27 19:46:01 +00:00
e l s e # ifeq netbsd
2005-08-26 17:39:27 +00:00
#############################################################################
# SETUP AND BUILD -- IRIX
#############################################################################
2007-11-26 20:18:53 +00:00
i f e q ( $( PLATFORM ) , i r i x 6 4 )
2015-07-14 21:51:53 +00:00
LIB = lib
2005-08-26 17:39:27 +00:00
2011-06-06 15:03:27 +00:00
ARCH = mips
2005-08-26 17:39:27 +00:00
2007-11-26 20:18:53 +00:00
CC = c99
BASE_CFLAGS = -Dstricmp= strcasecmp -Xcpluscomm -woff 1185 \
2011-08-02 22:00:57 +00:00
-I. -I$( ROOT) /usr/include
2011-08-01 12:48:31 +00:00
CLIENT_CFLAGS += $( SDL_CFLAGS)
2009-11-08 17:04:30 +00:00
OPTIMIZE = -O3
2013-01-05 15:35:50 +00:00
2005-09-23 01:59:42 +00:00
SHLIBEXT = so
SHLIBCFLAGS =
SHLIBLDFLAGS = -shared
2005-08-26 17:39:27 +00:00
2008-11-02 17:32:21 +00:00
LIBS = -ldl -lm -lgen
2017-06-02 05:39:03 +00:00
AUTOUPDATER_LIBS += -ldl
2007-11-26 20:18:53 +00:00
# FIXME: The X libraries probably aren't necessary?
2011-08-01 11:53:59 +00:00
CLIENT_LIBS = -L/usr/X11/$( LIB) $( SDL_LIBS) \
2007-11-26 20:18:53 +00:00
-lX11 -lXext -lm
2017-10-01 23:59:01 +00:00
RENDERER_LIBS = $( SDL_LIBS)
2005-08-26 17:39:27 +00:00
e l s e # ifeq IRIX
2005-10-29 22:05:20 +00:00
#############################################################################
# SETUP AND BUILD -- SunOS
#############################################################################
2006-04-04 07:12:24 +00:00
i f e q ( $( PLATFORM ) , s u n o s )
2005-10-29 22:05:20 +00:00
2007-07-17 08:12:35 +00:00
CC = gcc
2005-10-31 16:46:05 +00:00
INSTALL = ginstall
2017-10-16 14:44:06 +00:00
MKDIR = gmkdir -p
2005-10-29 22:05:20 +00:00
COPYDIR = "/usr/local/share/games/quake3"
2013-03-21 11:22:44 +00:00
ifneq ( $( ARCH) ,x86)
2005-10-29 22:05:20 +00:00
ifneq ( $( ARCH) ,sparc)
$( error arch $( ARCH) is currently not supported)
endif
endif
2008-11-12 13:40:04 +00:00
BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \
2009-11-08 17:04:30 +00:00
-pipe -DUSE_ICON
2011-08-01 12:48:31 +00:00
CLIENT_CFLAGS += $( SDL_CFLAGS)
2005-10-29 22:05:20 +00:00
2009-12-18 21:52:36 +00:00
OPTIMIZEVM = -O3 -funroll-loops
2005-10-29 22:05:20 +00:00
ifeq ( $( ARCH) ,sparc)
2009-11-08 17:04:30 +00:00
OPTIMIZEVM += -O3 \
2008-03-28 16:16:38 +00:00
-fstrength-reduce -falign-functions= 2 \
2009-11-08 17:04:30 +00:00
-mtune= ultrasparc3 -mv8plus -mno-faster-structs
2009-05-03 18:49:48 +00:00
HAVE_VM_COMPILED = true
2005-10-29 22:05:20 +00:00
else
2013-03-21 11:22:44 +00:00
ifeq ( $( ARCH) ,x86)
2009-11-08 17:04:30 +00:00
OPTIMIZEVM += -march= i586 -fomit-frame-pointer \
2006-11-30 08:01:43 +00:00
-falign-functions= 2 -fstrength-reduce
HAVE_VM_COMPILED = true
BASE_CFLAGS += -m32
2009-11-08 17:04:30 +00:00
CLIENT_CFLAGS += -I/usr/X11/include/NVIDIA
2007-11-30 15:08:57 +00:00
CLIENT_LDFLAGS += -L/usr/X11/lib/NVIDIA -R/usr/X11/lib/NVIDIA
2005-10-29 22:05:20 +00:00
endif
endif
2013-01-05 15:35:50 +00:00
2009-11-08 17:04:30 +00:00
OPTIMIZE = $( OPTIMIZEVM) -ffast-math
2005-10-29 22:05:20 +00:00
SHLIBEXT = so
SHLIBCFLAGS = -fPIC
SHLIBLDFLAGS = -shared $( LDFLAGS)
2008-11-02 17:32:21 +00:00
THREAD_LIBS = -lpthread
LIBS = -lsocket -lnsl -ldl -lm
2017-06-02 05:39:03 +00:00
AUTOUPDATER_LIBS += -ldl
2005-10-29 22:05:20 +00:00
2006-01-04 03:14:01 +00:00
BOTCFLAGS = -O0
2011-08-01 11:53:59 +00:00
CLIENT_LIBS += $( SDL_LIBS) -lX11 -lXext -liconv -lm
2017-10-01 23:59:01 +00:00
RENDERER_LIBS = $( SDL_LIBS)
2005-10-29 22:05:20 +00:00
2006-04-04 07:12:24 +00:00
e l s e # ifeq sunos
2005-10-29 22:05:20 +00:00
2024-06-06 23:26:07 +00:00
#############################################################################
# SETUP AND BUILD -- emscripten
#############################################################################
i f e q ( $( PLATFORM ) , e m s c r i p t e n )
# 1. Create "baseq3" directory in the same directory as this Makefile.
# 2. Copy pak[0-8].pk3 into the created "baseq3" directory.
2024-06-07 23:00:27 +00:00
# 3. Run `source "/path/to/emsdk_env.sh"` to add emcc to PATH.
2024-06-06 23:26:07 +00:00
# 4. Run `make PLATFORM=emscripten`
# 5. Serve the build/release-emscripten-wasm32/ioquake3_opengl2.{html,js,wasm,data} from a web server.
# 6. Load ioquake3_opengl2.html in a web browser.
2024-06-07 15:28:04 +00:00
ifneq ( $( findstring /emcc,$( CC) ) ,/emcc)
CC = emcc
endif
2024-06-06 23:26:07 +00:00
ARCH = wasm32
2024-06-07 15:27:56 +00:00
BINEXT = .js
2024-06-06 23:26:07 +00:00
# LDFLAGS+=-s MAIN_MODULE is needed for dlopen() in client/server but it causes compile errors
USE_RENDERER_DLOPEN = 0
2024-06-07 15:27:56 +00:00
USE_OPENAL_DLOPEN = 0
USE_CURL = 0
HAVE_VM_COMPILED = false
BUILD_GAME_SO = 0
BUILD_GAME_QVM = 0
# Would be interesting to try to get the server working via WebRTC DataChannel.
# This would enable P2P play, hosting a server in the browser. Also,
# DataChannel is the only way to use UDP in the browser.
BUILD_SERVER = 0
CLIENT_EXTRA_FILES += code/web/ioquake3.html
CLIENT_CFLAGS += -s USE_SDL = 2
CLIENT_LDFLAGS += -s TOTAL_MEMORY = 256mb
CLIENT_LDFLAGS += -s STACK_SIZE = 5MB
# Informing Emscripten which WebGL versions we support makes the JS bundle smaller and faster to load.
CLIENT_LDFLAGS += -s MIN_WEBGL_VERSION = 2
CLIENT_LDFLAGS += -s MAX_WEBGL_VERSION = 2
CLIENT_LDFLAGS += -s FULL_ES2 = 1
# The HTML file can use these functions to load extra files before the game starts.
CLIENT_LDFLAGS += -s EXPORTED_RUNTIME_METHODS = FS,addRunDependency,removeRunDependency
CLIENT_LDFLAGS += -s EXIT_RUNTIME = 1
CLIENT_LDFLAGS += -s EXPORT_ES6
CLIENT_LDFLAGS += -s EXPORT_NAME = ioquake3
# Game data files can be packaged by emcc into a .data file that lives next to the wasm bundle
# and added to the virtual filesystem before the game starts. This requires the game data to be
# present at build time and it can't be changed afterward.
# For more flexibility, game data files can be loaded from a web server at runtime by listing
# them in ioq3-config.json. This way they don't have to be present at build time and can be
# changed later.
ifneq ( $( wildcard $( BASEGAME) /*) ,)
CLIENT_LDFLAGS += --preload-file $( BASEGAME)
EMSCRIPTEN_PRELOAD_FILE = 1
CLIENT_EXTRA_FILES += code/web/empty/ioq3-config.json
else
CLIENT_EXTRA_FILES += code/web/$( BASEGAME) /ioq3-config.json
endif
2024-06-06 23:26:07 +00:00
OPTIMIZEVM = -O3
2024-06-09 06:43:02 +00:00
OPTIMIZE = $( OPTIMIZEVM) -ffast-math
2024-06-06 23:26:07 +00:00
SHLIBEXT = wasm
SHLIBCFLAGS = -fPIC
SHLIBLDFLAGS = -s SIDE_MODULE
e l s e # ifeq emscripten
2005-08-26 17:39:27 +00:00
#############################################################################
# SETUP AND BUILD -- GENERIC
#############################################################################
2011-08-02 22:00:57 +00:00
BASE_CFLAGS =
2009-12-18 21:52:36 +00:00
OPTIMIZE = -O3
2005-08-26 17:39:27 +00:00
2005-09-23 01:59:42 +00:00
SHLIBEXT = so
SHLIBCFLAGS = -fPIC
SHLIBLDFLAGS = -shared
2005-08-26 17:39:27 +00:00
e n d i f #Linux
2005-11-26 07:46:21 +00:00
e n d i f #darwin
2015-01-30 21:52:53 +00:00
e n d i f #MINGW
2005-08-26 17:39:27 +00:00
e n d i f #FreeBSD
2007-10-12 23:27:47 +00:00
e n d i f #OpenBSD
2005-12-27 19:46:01 +00:00
e n d i f #NetBSD
2005-08-26 17:39:27 +00:00
e n d i f #IRIX
2005-10-29 22:05:20 +00:00
e n d i f #SunOS
2024-06-06 23:26:07 +00:00
e n d i f #emscripten
2005-08-26 17:39:27 +00:00
2013-03-25 22:41:15 +00:00
i f n d e f C C
CC = gcc
e n d i f
i f n d e f R A N L I B
2013-03-28 11:13:58 +00:00
RANLIB = ranlib
2013-03-25 22:41:15 +00:00
e n d i f
2011-08-02 22:00:57 +00:00
i f n e q ( $( HAVE_VM_COMPILED ) , t r u e )
BASE_CFLAGS += -DNO_VM_COMPILED
e n d i f
2005-12-30 17:50:47 +00:00
TARGETS =
2009-09-14 23:49:20 +00:00
i f n d e f F U L L B I N E X T
FULLBINEXT = .$( ARCH) $( BINEXT)
e n d i f
i f n d e f S H L I B N A M E
SHLIBNAME = $( ARCH) .$( SHLIBEXT)
e n d i f
2005-12-30 17:50:47 +00:00
i f n e q ( $( BUILD_SERVER ) , 0 )
2011-10-28 19:12:43 +00:00
TARGETS += $( B) /$( SERVERBIN) $( FULLBINEXT)
2024-06-06 23:26:07 +00:00
ifeq ( $( PLATFORM) ,emscripten)
2024-06-07 15:27:56 +00:00
EMSCRIPTENOBJ += $( B) /$( SERVERBIN) .wasm
ifeq ( $( EMSCRIPTEN_PRELOAD_FILE) ,1)
EMSCRIPTENOBJ += $( B) /$( SERVERBIN) .data
endif
2024-06-06 23:26:07 +00:00
endif
2005-11-26 07:46:21 +00:00
e n d i f
2005-12-30 17:50:47 +00:00
i f n e q ( $( BUILD_CLIENT ) , 0 )
2024-06-07 15:27:56 +00:00
ifneq ( $( PLATFORM) ,emscripten)
TARGETS += $( B) /$( CLIENTBIN) $( FULLBINEXT)
2024-06-06 23:26:07 +00:00
endif
2011-08-01 01:19:55 +00:00
ifneq ( $( USE_RENDERER_DLOPEN) ,0)
2024-06-06 23:26:07 +00:00
TARGETS += $( B) /renderer_opengl1_$( SHLIBNAME)
2014-08-26 15:59:33 +00:00
ifneq ( $( BUILD_RENDERER_OPENGL2) ,0)
2013-02-15 23:46:37 +00:00
TARGETS += $( B) /renderer_opengl2_$( SHLIBNAME)
2012-10-26 01:23:06 +00:00
endif
2011-08-01 01:19:55 +00:00
else
2014-08-26 15:59:33 +00:00
ifneq ( $( BUILD_RENDERER_OPENGL2) ,0)
2013-02-15 23:46:37 +00:00
TARGETS += $( B) /$( CLIENTBIN) _opengl2$( FULLBINEXT)
2024-06-06 23:26:07 +00:00
ifeq ( $( PLATFORM) ,emscripten)
2024-06-07 15:27:56 +00:00
EMSCRIPTENOBJ += $( B) /$( CLIENTBIN) _opengl2.wasm32.wasm
ifeq ( $( EMSCRIPTEN_PRELOAD_FILE) ,1)
EMSCRIPTENOBJ += $( B) /$( CLIENTBIN) _opengl2.wasm32.data
endif
2024-06-06 23:26:07 +00:00
endif
2011-08-01 01:19:55 +00:00
endif
2005-12-30 17:50:47 +00:00
endif
2005-11-05 01:06:09 +00:00
e n d i f
2005-12-30 17:50:47 +00:00
i f n e q ( $( BUILD_GAME_SO ) , 0 )
2011-10-28 19:12:43 +00:00
ifneq ( $( BUILD_BASEGAME) ,0)
TARGETS += \
2013-01-05 15:35:50 +00:00
$( B) /$( BASEGAME) /cgame$( SHLIBNAME) \
$( B) /$( BASEGAME) /qagame$( SHLIBNAME) \
$( B) /$( BASEGAME) /ui$( SHLIBNAME)
2011-10-28 19:12:43 +00:00
endif
2008-08-22 22:47:26 +00:00
ifneq ( $( BUILD_MISSIONPACK) ,0)
TARGETS += \
2013-01-05 15:35:50 +00:00
$( B) /$( MISSIONPACK) /cgame$( SHLIBNAME) \
$( B) /$( MISSIONPACK) /qagame$( SHLIBNAME) \
$( B) /$( MISSIONPACK) /ui$( SHLIBNAME)
2008-08-22 22:47:26 +00:00
endif
2005-12-29 00:04:41 +00:00
e n d i f
2005-12-30 17:50:47 +00:00
i f n e q ( $( BUILD_GAME_QVM ) , 0 )
2013-03-24 22:06:45 +00:00
ifneq ( $( BUILD_BASEGAME) ,0)
TARGETS += \
2011-10-28 19:12:43 +00:00
$( B) /$( BASEGAME) /vm/cgame.qvm \
$( B) /$( BASEGAME) /vm/qagame.qvm \
$( B) /$( BASEGAME) /vm/ui.qvm
2013-01-05 15:35:50 +00:00
endif
2013-03-24 22:06:45 +00:00
ifneq ( $( BUILD_MISSIONPACK) ,0)
TARGETS += \
2011-10-28 19:12:43 +00:00
$( B) /$( MISSIONPACK) /vm/cgame.qvm \
2013-03-27 19:26:34 +00:00
$( B) /$( MISSIONPACK) /vm/qagame.qvm \
2011-10-28 19:12:43 +00:00
$( B) /$( MISSIONPACK) /vm/ui.qvm
2005-12-30 17:50:47 +00:00
endif
e n d i f
2017-05-25 18:13:18 +00:00
i f n e q ( $( BUILD_AUTOUPDATER ) , 0 )
2017-06-02 04:49:42 +00:00
# PLEASE NOTE that if you run an exe on Windows Vista or later
# with "setup", "install", "update" or other related terms, it
# will unconditionally trigger a UAC prompt, and in the case of
# ioq3 calling CreateProcess() on it, it'll just fail immediately.
# So don't call this thing "autoupdater" here!
AUTOUPDATER_BIN := autosyncerator$( FULLBINEXT)
2017-05-25 18:13:18 +00:00
TARGETS += $( B) /$( AUTOUPDATER_BIN)
e n d i f
2011-08-02 22:00:57 +00:00
i f e q ( $( USE_OPENAL ) , 1 )
CLIENT_CFLAGS += -DUSE_OPENAL
ifeq ( $( USE_OPENAL_DLOPEN) ,1)
CLIENT_CFLAGS += -DUSE_OPENAL_DLOPEN
endif
e n d i f
i f e q ( $( USE_CURL ) , 1 )
CLIENT_CFLAGS += -DUSE_CURL
ifeq ( $( USE_CURL_DLOPEN) ,1)
CLIENT_CFLAGS += -DUSE_CURL_DLOPEN
endif
e n d i f
2013-12-11 03:14:13 +00:00
i f e q ( $( USE_VOIP ) , 1 )
CLIENT_CFLAGS += -DUSE_VOIP
SERVER_CFLAGS += -DUSE_VOIP
NEED_OPUS = 1
e n d i f
2013-02-18 00:32:05 +00:00
i f e q ( $( USE_CODEC_OPUS ) , 1 )
CLIENT_CFLAGS += -DUSE_CODEC_OPUS
2013-12-11 03:14:13 +00:00
NEED_OPUS = 1
e n d i f
i f e q ( $( NEED_OPUS ) , 1 )
2013-02-18 00:32:05 +00:00
ifeq ( $( USE_INTERNAL_OPUS) ,1)
2017-05-23 15:48:01 +00:00
OPUS_CFLAGS = -DOPUS_BUILD -DHAVE_LRINTF -DFLOATING_POINT -DFLOAT_APPROX -DUSE_ALLOCA \
2013-02-18 00:32:05 +00:00
-I$( OPUSDIR) /include -I$( OPUSDIR) /celt -I$( OPUSDIR) /silk \
2013-05-19 20:02:31 +00:00
-I$( OPUSDIR) /silk/float -I$( OPUSFILEDIR) /include
2013-02-18 00:32:05 +00:00
else
2018-06-12 09:53:27 +00:00
OPUS_CFLAGS ?= $( shell $( PKG_CONFIG) --silence-errors --cflags opusfile opus || true )
OPUS_LIBS ?= $( shell $( PKG_CONFIG) --silence-errors --libs opusfile opus || echo -lopusfile -lopus)
2013-02-18 00:56:06 +00:00
endif
2013-05-19 20:02:31 +00:00
CLIENT_CFLAGS += $( OPUS_CFLAGS)
CLIENT_LIBS += $( OPUS_LIBS)
2013-02-18 00:56:06 +00:00
NEED_OGG = 1
e n d i f
2014-02-08 22:02:24 +00:00
i f e q ( $( USE_CODEC_VORBIS ) , 1 )
2014-07-20 10:58:38 +00:00
CLIENT_CFLAGS += -DUSE_CODEC_VORBIS
2014-02-08 08:26:03 +00:00
ifeq ( $( USE_INTERNAL_VORBIS) ,1)
CLIENT_CFLAGS += -I$( VORBISDIR) /include -I$( VORBISDIR) /lib
2014-07-20 10:58:38 +00:00
else
2018-06-12 09:53:27 +00:00
VORBIS_CFLAGS ?= $( shell $( PKG_CONFIG) --silence-errors --cflags vorbisfile vorbis || true )
VORBIS_LIBS ?= $( shell $( PKG_CONFIG) --silence-errors --libs vorbisfile vorbis || echo -lvorbisfile -lvorbis)
2014-07-20 10:58:38 +00:00
endif
CLIENT_CFLAGS += $( VORBIS_CFLAGS)
CLIENT_LIBS += $( VORBIS_LIBS)
NEED_OGG = 1
e n d i f
2014-02-08 08:26:03 +00:00
2013-02-18 00:56:06 +00:00
i f e q ( $( NEED_OGG ) , 1 )
ifeq ( $( USE_INTERNAL_OGG) ,1)
2013-05-19 20:02:31 +00:00
OGG_CFLAGS = -I$( OGGDIR) /include
2014-02-08 08:26:03 +00:00
else
2018-06-12 09:53:27 +00:00
OGG_CFLAGS ?= $( shell $( PKG_CONFIG) --silence-errors --cflags ogg || true )
OGG_LIBS ?= $( shell $( PKG_CONFIG) --silence-errors --libs ogg || echo -logg)
2014-02-08 08:26:03 +00:00
endif
2013-05-19 20:02:31 +00:00
CLIENT_CFLAGS += $( OGG_CFLAGS)
CLIENT_LIBS += $( OGG_LIBS)
2014-02-08 08:26:03 +00:00
e n d i f
2011-08-02 22:00:57 +00:00
i f e q ( $( USE_RENDERER_DLOPEN ) , 1 )
CLIENT_CFLAGS += -DUSE_RENDERER_DLOPEN
e n d i f
2008-06-02 12:12:00 +00:00
i f e q ( $( USE_MUMBLE ) , 1 )
2009-11-08 17:04:30 +00:00
CLIENT_CFLAGS += -DUSE_MUMBLE
2008-06-02 12:12:00 +00:00
e n d i f
2009-10-19 14:00:16 +00:00
i f e q ( $( USE_INTERNAL_ZLIB ) , 1 )
2013-05-19 20:31:12 +00:00
ZLIB_CFLAGS = -DNO_GZIP -I$( ZDIR)
2009-10-19 14:00:16 +00:00
e l s e
2018-06-12 09:53:27 +00:00
ZLIB_CFLAGS ?= $( shell $( PKG_CONFIG) --silence-errors --cflags zlib || true )
ZLIB_LIBS ?= $( shell $( PKG_CONFIG) --silence-errors --libs zlib || echo -lz)
2009-10-19 14:00:16 +00:00
e n d i f
2013-05-19 20:31:12 +00:00
BASE_CFLAGS += $( ZLIB_CFLAGS)
LIBS += $( ZLIB_LIBS)
2009-10-19 14:00:16 +00:00
2011-03-12 16:45:15 +00:00
i f e q ( $( USE_INTERNAL_JPEG ) , 1 )
BASE_CFLAGS += -DUSE_INTERNAL_JPEG
BASE_CFLAGS += -I$( JPDIR)
e l s e
2015-03-15 12:34:51 +00:00
# IJG libjpeg doesn't have pkg-config, but libjpeg-turbo uses libjpeg.pc;
# we fall back to hard-coded answers if libjpeg.pc is unavailable
2018-06-12 09:53:27 +00:00
JPEG_CFLAGS ?= $( shell $( PKG_CONFIG) --silence-errors --cflags libjpeg || true )
JPEG_LIBS ?= $( shell $( PKG_CONFIG) --silence-errors --libs libjpeg || echo -ljpeg)
2013-05-19 19:58:42 +00:00
BASE_CFLAGS += $( JPEG_CFLAGS)
RENDERER_LIBS += $( JPEG_LIBS)
2011-03-12 16:45:15 +00:00
e n d i f
2012-03-29 04:05:13 +00:00
i f e q ( $( USE_FREETYPE ) , 1 )
2018-06-12 09:53:27 +00:00
FREETYPE_CFLAGS ?= $( shell $( PKG_CONFIG) --silence-errors --cflags freetype2 || true )
FREETYPE_LIBS ?= $( shell $( PKG_CONFIG) --silence-errors --libs freetype2 || echo -lfreetype)
2013-05-19 19:52:23 +00:00
BASE_CFLAGS += -DBUILD_FREETYPE $( FREETYPE_CFLAGS)
RENDERER_LIBS += $( FREETYPE_LIBS)
2012-03-29 04:05:13 +00:00
e n d i f
2017-05-25 18:13:18 +00:00
i f e q ( $( USE_AUTOUPDATER ) , 1 )
CLIENT_CFLAGS += -DUSE_AUTOUPDATER -DAUTOUPDATER_BIN= \\ \" $( AUTOUPDATER_BIN) \\ \"
SERVER_CFLAGS += -DUSE_AUTOUPDATER -DAUTOUPDATER_BIN= \\ \" $( AUTOUPDATER_BIN) \\ \"
e n d i f
2017-06-04 06:21:55 +00:00
i f e q ( $( BUILD_AUTOUPDATER ) , 1 )
AUTOUPDATER_LIBS += $( LIBTOMCRYPTSRCDIR) /libtomcrypt.a $( TOMSFASTMATHSRCDIR) /libtfm.a
e n d i f
2011-10-27 21:32:28 +00:00
i f e q ( "$(CC)" , $( findstring "$ ( CC ) ", "clang " "clang ++") )
BASE_CFLAGS += -Qunused-arguments
e n d i f
2005-08-31 17:43:56 +00:00
i f d e f D E F A U L T _ B A S E D I R
2005-09-23 01:59:42 +00:00
BASE_CFLAGS += -DDEFAULT_BASEDIR= \\ \" $( DEFAULT_BASEDIR) \\ \"
2005-08-31 17:43:56 +00:00
e n d i f
2005-12-01 20:53:28 +00:00
i f e q ( $( USE_LOCAL_HEADERS ) , 1 )
2007-09-22 20:32:11 +00:00
BASE_CFLAGS += -DUSE_LOCAL_HEADERS
2005-12-01 20:53:28 +00:00
e n d i f
2008-04-09 23:43:30 +00:00
i f e q ( $( BUILD_STANDALONE ) , 1 )
BASE_CFLAGS += -DSTANDALONE
e n d i f
2005-09-29 05:25:26 +00:00
i f e q ( $( GENERATE_DEPENDENCIES ) , 1 )
2007-09-14 23:07:28 +00:00
DEPEND_CFLAGS = -MMD
e l s e
DEPEND_CFLAGS =
2005-09-27 16:35:25 +00:00
e n d i f
2009-09-14 23:49:20 +00:00
i f e q ( $( NO_STRIP ) , 1 )
STRIP_FLAG =
e l s e
STRIP_FLAG = -s
e n d i f
2015-04-02 10:10:26 +00:00
# https://reproducible-builds.org/specs/source-date-epoch/
i f d e f S O U R C E _ D A T E _ E P O C H
BASE_CFLAGS += -DPRODUCT_DATE= \\ \" $( shell date --date= " @ $$ SOURCE_DATE_EPOCH " "+%b %_d %Y" | sed -e 's/ /\\\ /' g) \\ \"
e n d i f
2009-09-14 23:49:20 +00:00
2008-05-06 20:24:32 +00:00
BASE_CFLAGS += -DPRODUCT_VERSION= \\ \" $( VERSION) \\ \"
2011-07-18 14:56:57 +00:00
BASE_CFLAGS += -Wformat= 2 -Wno-format-zero-length -Wformat-security -Wno-format-nonliteral
BASE_CFLAGS += -Wstrict-aliasing= 2 -Wmissing-format-attribute
BASE_CFLAGS += -Wdisabled-optimization
BASE_CFLAGS += -Werror-implicit-function-declaration
2006-08-22 16:13:51 +00:00
2007-09-05 18:17:46 +00:00
i f e q ( $( V ) , 1 )
echo_cmd = @:
Q =
e l s e
echo_cmd = @echo
Q = @
e n d i f
2007-09-06 18:21:10 +00:00
d e f i n e D O _ C C
2007-08-27 07:02:54 +00:00
$( echo_cmd ) "CC $<"
2009-11-08 17:36:05 +00:00
$( Q ) $( CC ) $( NOTSHLIBCFLAGS ) $( CFLAGS ) $( CLIENT_CFLAGS ) $( OPTIMIZE ) - o $@ - c $<
2007-07-16 23:30:53 +00:00
e n d e f
2018-05-12 18:14:47 +00:00
d e f i n e D O _ C C _ A L T I V E C
$( echo_cmd ) "CC $<"
$( Q ) $( CC ) $( NOTSHLIBCFLAGS ) $( CFLAGS ) $( CLIENT_CFLAGS ) $( OPTIMIZE ) $( ALTIVEC_CFLAGS ) - o $@ - c $<
e n d e f
2011-08-01 01:19:55 +00:00
d e f i n e D O _ R E F _ C C
$( echo_cmd ) "REF_CC $<"
$( Q ) $( CC ) $( SHLIBCFLAGS ) $( CFLAGS ) $( CLIENT_CFLAGS ) $( OPTIMIZE ) - o $@ - c $<
e n d e f
2018-05-12 18:14:47 +00:00
d e f i n e D O _ R E F _ C C _ A L T I V E C
$( echo_cmd ) "REF_CC $<"
$( Q ) $( CC ) $( SHLIBCFLAGS ) $( CFLAGS ) $( CLIENT_CFLAGS ) $( OPTIMIZE ) $( ALTIVEC_CFLAGS ) - o $@ - c $<
e n d e f
2012-12-04 01:56:52 +00:00
d e f i n e D O _ R E F _ S T R
$( echo_cmd ) "REF_STR $<"
$( Q ) r m - f $@
2020-09-08 10:04:53 +00:00
$( Q ) $( STRINGIFY ) $< $@
2012-12-04 01:56:52 +00:00
e n d e f
2007-07-16 23:30:53 +00:00
d e f i n e D O _ B O T _ C C
2007-08-27 07:02:54 +00:00
$( echo_cmd ) "BOT_CC $<"
2009-11-08 17:36:05 +00:00
$( Q ) $( CC ) $( NOTSHLIBCFLAGS ) $( CFLAGS ) $( BOTCFLAGS ) $( OPTIMIZE ) - D B O T L I B - o $@ - c $<
2007-07-16 23:30:53 +00:00
e n d e f
i f e q ( $( GENERATE_DEPENDENCIES ) , 1 )
DO_QVM_DEP = cat $( @:%.o= %.d) | sed -e 's/\.o/\.asm/g' >> $( @:%.o= %.d)
e n d i f
d e f i n e D O _ S H L I B _ C C
2007-08-27 07:02:54 +00:00
$( echo_cmd ) "SHLIB_CC $<"
2011-10-28 19:12:43 +00:00
$( Q ) $( CC ) $( BASEGAME_CFLAGS ) $( SHLIBCFLAGS ) $( CFLAGS ) $( OPTIMIZEVM ) - o $@ - c $<
2007-08-27 07:02:54 +00:00
$( Q ) $( DO_QVM_DEP )
2007-07-16 23:30:53 +00:00
e n d e f
2008-03-17 16:47:40 +00:00
d e f i n e D O _ G A M E _ C C
$( echo_cmd ) "GAME_CC $<"
2011-10-28 19:12:43 +00:00
$( Q ) $( CC ) $( BASEGAME_CFLAGS ) - D Q A G A M E $( SHLIBCFLAGS ) $( CFLAGS ) $( OPTIMIZEVM ) - o $@ - c $<
2008-03-17 16:47:40 +00:00
$( Q ) $( DO_QVM_DEP )
e n d e f
d e f i n e D O _ C G A M E _ C C
$( echo_cmd ) "CGAME_CC $<"
2011-10-28 19:12:43 +00:00
$( Q ) $( CC ) $( BASEGAME_CFLAGS ) - D C G A M E $( SHLIBCFLAGS ) $( CFLAGS ) $( OPTIMIZEVM ) - o $@ - c $<
2008-03-17 16:47:40 +00:00
$( Q ) $( DO_QVM_DEP )
e n d e f
d e f i n e D O _ U I _ C C
$( echo_cmd ) "UI_CC $<"
2011-10-28 19:12:43 +00:00
$( Q ) $( CC ) $( BASEGAME_CFLAGS ) - D U I $( SHLIBCFLAGS ) $( CFLAGS ) $( OPTIMIZEVM ) - o $@ - c $<
2008-03-17 16:47:40 +00:00
$( Q ) $( DO_QVM_DEP )
e n d e f
2007-07-16 23:30:53 +00:00
d e f i n e D O _ S H L I B _ C C _ M I S S I O N P A C K
2007-08-27 07:02:54 +00:00
$( echo_cmd ) "SHLIB_CC_MISSIONPACK $<"
2011-10-28 19:12:43 +00:00
$( Q ) $( CC ) $( MISSIONPACK_CFLAGS ) $( SHLIBCFLAGS ) $( CFLAGS ) $( OPTIMIZEVM ) - o $@ - c $<
2007-08-27 07:02:54 +00:00
$( Q ) $( DO_QVM_DEP )
2007-07-16 23:30:53 +00:00
e n d e f
2008-03-17 16:47:40 +00:00
d e f i n e D O _ G A M E _ C C _ M I S S I O N P A C K
$( echo_cmd ) "GAME_CC_MISSIONPACK $<"
2011-10-28 19:12:43 +00:00
$( Q ) $( CC ) $( MISSIONPACK_CFLAGS ) - D Q A G A M E $( SHLIBCFLAGS ) $( CFLAGS ) $( OPTIMIZEVM ) - o $@ - c $<
2008-03-17 16:47:40 +00:00
$( Q ) $( DO_QVM_DEP )
e n d e f
d e f i n e D O _ C G A M E _ C C _ M I S S I O N P A C K
$( echo_cmd ) "CGAME_CC_MISSIONPACK $<"
2011-10-28 19:12:43 +00:00
$( Q ) $( CC ) $( MISSIONPACK_CFLAGS ) - D C G A M E $( SHLIBCFLAGS ) $( CFLAGS ) $( OPTIMIZEVM ) - o $@ - c $<
2008-03-17 16:47:40 +00:00
$( Q ) $( DO_QVM_DEP )
e n d e f
d e f i n e D O _ U I _ C C _ M I S S I O N P A C K
$( echo_cmd ) "UI_CC_MISSIONPACK $<"
2011-10-28 19:12:43 +00:00
$( Q ) $( CC ) $( MISSIONPACK_CFLAGS ) - D U I $( SHLIBCFLAGS ) $( CFLAGS ) $( OPTIMIZEVM ) - o $@ - c $<
2008-03-17 16:47:40 +00:00
$( Q ) $( DO_QVM_DEP )
e n d e f
2007-07-16 23:30:53 +00:00
d e f i n e D O _ A S
2007-08-27 07:02:54 +00:00
$( echo_cmd ) "AS $<"
2009-11-08 17:36:05 +00:00
$( Q ) $( CC ) $( CFLAGS ) $( OPTIMIZE ) - x a s s e m b l e r - w i t h - c p p - o $@ - c $<
2007-07-16 23:30:53 +00:00
e n d e f
d e f i n e D O _ D E D _ C C
2007-08-27 07:02:54 +00:00
$( echo_cmd ) "DED_CC $<"
2009-11-08 17:36:05 +00:00
$( Q ) $( CC ) $( NOTSHLIBCFLAGS ) - D D E D I C A T E D $( CFLAGS ) $( SERVER_CFLAGS ) $( OPTIMIZE ) - o $@ - c $<
2007-07-16 23:30:53 +00:00
e n d e f
d e f i n e D O _ W I N D R E S
2007-08-27 07:02:54 +00:00
$( echo_cmd ) "WINDRES $<"
$( Q ) $( WINDRES ) - i $< - o $@
2007-07-16 23:30:53 +00:00
e n d e f
2005-08-26 17:39:27 +00:00
2005-10-04 23:54:51 +00:00
#############################################################################
# MAIN TARGETS
#############################################################################
2005-08-26 17:39:27 +00:00
2007-07-16 21:34:05 +00:00
default : release
all : debug release
debug :
2009-11-08 17:36:05 +00:00
@$( MAKE) targets B = $( BD) CFLAGS = " $( CFLAGS) $( BASE_CFLAGS) $( DEPEND_CFLAGS) " \
2009-11-08 17:04:30 +00:00
OPTIMIZE = " $( DEBUG_CFLAGS) " OPTIMIZEVM = " $( DEBUG_CFLAGS) " \
CLIENT_CFLAGS = " $( CLIENT_CFLAGS) " SERVER_CFLAGS = " $( SERVER_CFLAGS) " V = $( V)
2007-07-16 21:34:05 +00:00
release :
2009-11-08 17:36:05 +00:00
@$( MAKE) targets B = $( BR) CFLAGS = " $( CFLAGS) $( BASE_CFLAGS) $( DEPEND_CFLAGS) " \
2009-12-18 21:52:36 +00:00
OPTIMIZE = " -DNDEBUG $( OPTIMIZE) " OPTIMIZEVM = " -DNDEBUG $( OPTIMIZEVM) " \
2009-11-08 17:04:30 +00:00
CLIENT_CFLAGS = " $( CLIENT_CFLAGS) " SERVER_CFLAGS = " $( SERVER_CFLAGS) " V = $( V)
2007-07-16 21:34:05 +00:00
2013-03-26 23:12:17 +00:00
i f n e q ( $( call bin_path , tput ) , )
2015-07-22 07:15:18 +00:00
TERM_COLUMNS = $( shell if c = ` tput cols` ; then echo $$ ( ( $$ c-4) ) ; else echo 76; fi )
2013-03-26 23:12:17 +00:00
e l s e
TERM_COLUMNS = 76
e n d i f
2014-08-26 15:59:33 +00:00
d e f i n e A D D _ C O P Y _ T A R G E T
TARGETS += $2
$2 : $1
$( echo_cmd) " CP $$ < "
@cp $1 $2
e n d e f
# These functions allow us to generate rules for copying a list of files
# into the base directory of the build; this is useful for bundling libs,
# README files or whatever else
d e f i n e G E N E R A T E _ C O P Y _ T A R G E T S
$( foreach FILE ,$ 1, \
$( eval $( call ADD_COPY_TARGET, \
$( FILE) , \
$( addprefix $( B) /,$( notdir $( FILE) ) ) ) ) )
e n d e f
$( call GENERATE_COPY_TARGETS ,$ ( EXTRA_FILES ) )
i f n e q ( $( BUILD_CLIENT ) , 0 )
$( call GENERATE_COPY_TARGETS,$( CLIENT_EXTRA_FILES) )
e n d i f
2013-03-26 23:12:17 +00:00
NAKED_TARGETS = $( shell echo $( TARGETS) | sed -e " s! $( B) /!!g " )
2024-06-07 15:27:56 +00:00
NAKED_EMSCRIPTENOBJ = $( shell echo $( EMSCRIPTENOBJ) | sed -e " s! $( B) /!!g " )
2013-03-26 23:12:17 +00:00
2015-09-30 06:26:27 +00:00
print_list = -@for i in $( 1) ; \
2013-03-26 23:12:17 +00:00
do \
echo " $$ i " ; \
done
i f n e q ( $( call bin_path , fmt ) , )
print_wrapped = @echo $( 1) | fmt -w $( TERM_COLUMNS) | sed -e " s/^\(.*\) $$ / \1/ "
e l s e
print_wrapped = $( print_list)
e n d i f
2007-09-12 23:37:33 +00:00
# Create the build directories, check libraries and print out
2007-07-16 21:34:05 +00:00
# an informational message, then start building
2007-11-25 23:41:01 +00:00
targets : makedirs
2007-07-16 21:34:05 +00:00
@echo ""
2013-03-26 23:12:17 +00:00
@echo " Building in $( B) : "
2007-08-28 16:42:13 +00:00
@echo " PLATFORM: $( PLATFORM) "
2007-08-27 07:02:54 +00:00
@echo " ARCH: $( ARCH) "
2008-05-06 20:24:32 +00:00
@echo " VERSION: $( VERSION) "
2007-08-27 07:02:54 +00:00
@echo " COMPILE_PLATFORM: $( COMPILE_PLATFORM) "
@echo " COMPILE_ARCH: $( COMPILE_ARCH) "
2014-10-23 11:00:17 +00:00
@echo " HAVE_VM_COMPILED: $( HAVE_VM_COMPILED) "
2018-10-02 04:48:36 +00:00
@echo " PKG_CONFIG: $( PKG_CONFIG) "
2007-07-16 21:34:05 +00:00
@echo " CC: $( CC) "
2013-03-22 14:26:29 +00:00
i f e q ( $( PLATFORM ) , m i n g w 3 2 )
@echo " WINDRES: $( WINDRES) "
e n d i f
2007-07-16 21:34:05 +00:00
@echo ""
@echo " CFLAGS:"
2013-03-26 23:12:17 +00:00
$( call print_wrapped, $( CFLAGS) $( OPTIMIZE) )
2009-11-08 17:36:05 +00:00
@echo ""
@echo " CLIENT_CFLAGS:"
2013-03-26 23:12:17 +00:00
$( call print_wrapped, $( CLIENT_CFLAGS) )
2009-11-08 17:36:05 +00:00
@echo ""
@echo " SERVER_CFLAGS:"
2013-03-26 23:12:17 +00:00
$( call print_wrapped, $( SERVER_CFLAGS) )
2007-07-16 21:34:05 +00:00
@echo ""
2020-12-25 20:28:14 +00:00
@echo " TOOLS_CFLAGS:"
$( call print_wrapped, $( TOOLS_CFLAGS) )
@echo ""
2008-01-03 19:04:23 +00:00
@echo " LDFLAGS:"
2013-03-26 23:12:17 +00:00
$( call print_wrapped, $( LDFLAGS) )
2008-01-03 19:04:23 +00:00
@echo ""
2008-11-02 17:32:21 +00:00
@echo " LIBS:"
2013-03-26 23:12:17 +00:00
$( call print_wrapped, $( LIBS) )
2008-11-02 17:32:21 +00:00
@echo ""
2009-05-03 18:49:48 +00:00
@echo " CLIENT_LIBS:"
2013-03-26 23:12:17 +00:00
$( call print_wrapped, $( CLIENT_LIBS) )
2009-05-03 18:49:48 +00:00
@echo ""
2017-06-02 04:49:42 +00:00
@echo " AUTOUPDATER_LIBS:"
$( call print_wrapped, $( AUTOUPDATER_LIBS) )
@echo ""
2007-07-16 21:34:05 +00:00
@echo " Output:"
2013-03-26 23:12:17 +00:00
$( call print_list, $( NAKED_TARGETS) )
2024-06-07 15:27:56 +00:00
$( call print_list, $( NAKED_EMSCRIPTENOBJ) )
@echo ""
i f e q ( $( PLATFORM ) , e m s c r i p t e n )
i f n e q ( $( EMSCRIPTEN_PRELOAD_FILE ) , 1 )
@echo " Warning: Game files not found in ' $( BASEGAME) '. "
@echo " They will not be packaged by Emscripten or preloaded."
@echo " To run this build you must serve the game files from a web server"
@echo " and list their paths in ioq3-config.json."
@echo " To make a build that automatically loads the game files, create a"
@echo " directory called ' $( BASEGAME) ' and copy your game files into it, then "
@echo " 'emmake make clean' and rebuild."
2007-07-16 21:34:05 +00:00
@echo ""
2024-06-07 15:27:56 +00:00
e n d i f
e n d i f
2008-07-05 22:34:23 +00:00
i f n e q ( $( TARGETS ) , )
2013-03-22 13:42:11 +00:00
ifndef DEBUG_MAKEFILE
2013-03-27 14:35:11 +00:00
@$( MAKE) $( TARGETS) $( B) .zip V = $( V)
2013-03-22 13:42:11 +00:00
endif
2008-07-05 22:34:23 +00:00
e n d i f
2005-08-26 17:39:27 +00:00
2013-03-27 14:35:11 +00:00
$(B).zip : $( TARGETS )
2013-07-18 05:11:10 +00:00
i f e q ( $( PLATFORM ) , d a r w i n )
ifdef ARCHIVE
2013-07-18 16:29:23 +00:00
@( "./make-macosx-app.sh" release $( ARCH) ; if [ " $$ ? " -eq 0 ] && [ -d " $( B) /ioquake3.app " ] ; then rm -f $@ ; cd $( B) && zip --symlinks -r9 ../../$@ ` find "ioquake3.app" -print | sed -e " s! $( B) /!!g " ` ; else rm -f $@ ; cd $( B) && zip -r9 ../../$@ $( NAKED_TARGETS) ; fi )
2013-07-18 05:11:10 +00:00
endif
e n d i f
i f n e q ( $( PLATFORM ) , d a r w i n )
ifdef ARCHIVE
2013-03-27 14:35:11 +00:00
@rm -f $@
2024-06-07 15:27:56 +00:00
@( cd $( B) && zip -r9 ../../$@ $( NAKED_TARGETS) $( NAKED_EMSCRIPTENOBJ) )
2013-07-18 05:11:10 +00:00
endif
2008-07-05 22:34:23 +00:00
e n d i f
2024-06-07 15:28:01 +00:00
@:
2005-08-26 17:39:27 +00:00
makedirs :
2017-10-16 14:44:06 +00:00
@$( MKDIR) $( B) /autoupdater
@$( MKDIR) $( B) /client/opus
@$( MKDIR) $( B) /client/vorbis
@$( MKDIR) $( B) /renderergl1
@$( MKDIR) $( B) /renderergl2
@$( MKDIR) $( B) /renderergl2/glsl
@$( MKDIR) $( B) /ded
@$( MKDIR) $( B) /$( BASEGAME) /cgame
@$( MKDIR) $( B) /$( BASEGAME) /game
@$( MKDIR) $( B) /$( BASEGAME) /ui
@$( MKDIR) $( B) /$( BASEGAME) /qcommon
@$( MKDIR) $( B) /$( BASEGAME) /vm
@$( MKDIR) $( B) /$( MISSIONPACK) /cgame
@$( MKDIR) $( B) /$( MISSIONPACK) /game
@$( MKDIR) $( B) /$( MISSIONPACK) /ui
@$( MKDIR) $( B) /$( MISSIONPACK) /qcommon
@$( MKDIR) $( B) /$( MISSIONPACK) /vm
@$( MKDIR) $( B) /tools/asm
@$( MKDIR) $( B) /tools/etc
@$( MKDIR) $( B) /tools/rcc
@$( MKDIR) $( B) /tools/cpp
@$( MKDIR) $( B) /tools/lburg
2005-08-26 17:39:27 +00:00
2005-10-08 14:36:15 +00:00
#############################################################################
# QVM BUILD TOOLS
#############################################################################
2013-03-24 22:06:45 +00:00
i f n d e f T O O L S _ C C
# A compiler which probably produces native binaries
TOOLS_CC = gcc
e n d i f
2016-06-15 17:17:58 +00:00
i f n d e f Y A C C
YACC = yacc
e n d i f
2010-02-26 16:32:49 +00:00
TOOLS_OPTIMIZE = -g -Wall -fno-strict-aliasing
2009-09-15 01:36:17 +00:00
TOOLS_CFLAGS += $( TOOLS_OPTIMIZE) \
-DTEMPDIR= \" $( TEMPDIR) \" -DSYSTEM= \" \" \
-I$( Q3LCCSRCDIR) \
-I$( LBURGDIR)
2008-11-02 17:32:21 +00:00
TOOLS_LIBS =
2007-09-12 23:37:33 +00:00
TOOLS_LDFLAGS =
2005-10-08 14:36:15 +00:00
2007-10-23 13:35:31 +00:00
i f e q ( $( GENERATE_DEPENDENCIES ) , 1 )
2013-01-05 15:35:50 +00:00
TOOLS_CFLAGS += -MMD
2007-10-23 13:35:31 +00:00
e n d i f
2016-06-15 17:17:58 +00:00
d e f i n e D O _ Y A C C
$( echo_cmd ) "YACC $<"
$( Q ) $( YACC ) $<
$( Q ) m v - f y . t a b . c $@
e n d e f
2007-09-12 23:37:33 +00:00
d e f i n e D O _ T O O L S _ C C
$( echo_cmd ) "TOOLS_CC $<"
2013-03-24 22:06:45 +00:00
$( Q ) $( TOOLS_CC ) $( TOOLS_CFLAGS ) - o $@ - c $<
2007-09-12 23:37:33 +00:00
e n d e f
d e f i n e D O _ T O O L S _ C C _ D A G C H E C K
$( echo_cmd ) "TOOLS_CC_DAGCHECK $<"
2013-03-24 22:06:45 +00:00
$( Q ) $( TOOLS_CC ) $( TOOLS_CFLAGS ) - W n o - u n u s e d - o $@ - c $<
2007-09-12 23:37:33 +00:00
e n d e f
2013-03-24 22:06:45 +00:00
LBURG = $( B) /tools/lburg/lburg$( TOOLS_BINEXT)
2007-09-12 23:37:33 +00:00
DAGCHECK_C = $( B) /tools/rcc/dagcheck.c
2013-03-24 22:06:45 +00:00
Q3RCC = $( B) /tools/q3rcc$( TOOLS_BINEXT)
Q3CPP = $( B) /tools/q3cpp$( TOOLS_BINEXT)
Q3LCC = $( B) /tools/q3lcc$( TOOLS_BINEXT)
Q3ASM = $( B) /tools/q3asm$( TOOLS_BINEXT)
2020-09-08 10:04:53 +00:00
STRINGIFY = $( B) /tools/stringify$( TOOLS_BINEXT)
2007-09-12 23:37:33 +00:00
LBURGOBJ = \
2013-01-05 15:35:50 +00:00
$( B) /tools/lburg/lburg.o \
$( B) /tools/lburg/gram.o
2007-09-12 23:37:33 +00:00
2016-06-15 17:17:58 +00:00
# override GNU Make built-in rule for converting gram.y to gram.c
%.c : %.y
i f e q ( $( USE_YACC ) , 1 )
$( DO_YACC)
e n d i f
2007-09-12 23:37:33 +00:00
$(B)/tools/lburg/%.o : $( LBURGDIR ) /%.c
$( DO_TOOLS_CC)
$(LBURG) : $( LBURGOBJ )
$( echo_cmd) " LD $@ "
2013-03-24 22:06:45 +00:00
$( Q) $( TOOLS_CC) $( TOOLS_CFLAGS) $( TOOLS_LDFLAGS) -o $@ $^ $( TOOLS_LIBS)
2007-09-12 23:37:33 +00:00
Q3RCCOBJ = \
$( B) /tools/rcc/alloc.o \
$( B) /tools/rcc/bind.o \
$( B) /tools/rcc/bytecode.o \
$( B) /tools/rcc/dag.o \
$( B) /tools/rcc/dagcheck.o \
$( B) /tools/rcc/decl.o \
$( B) /tools/rcc/enode.o \
$( B) /tools/rcc/error.o \
$( B) /tools/rcc/event.o \
$( B) /tools/rcc/expr.o \
$( B) /tools/rcc/gen.o \
$( B) /tools/rcc/init.o \
$( B) /tools/rcc/inits.o \
$( B) /tools/rcc/input.o \
$( B) /tools/rcc/lex.o \
$( B) /tools/rcc/list.o \
$( B) /tools/rcc/main.o \
$( B) /tools/rcc/null.o \
$( B) /tools/rcc/output.o \
$( B) /tools/rcc/prof.o \
$( B) /tools/rcc/profio.o \
$( B) /tools/rcc/simp.o \
$( B) /tools/rcc/stmt.o \
$( B) /tools/rcc/string.o \
$( B) /tools/rcc/sym.o \
$( B) /tools/rcc/symbolic.o \
$( B) /tools/rcc/trace.o \
$( B) /tools/rcc/tree.o \
$( B) /tools/rcc/types.o
$(DAGCHECK_C) : $( LBURG ) $( Q 3LCCSRCDIR ) /dagcheck .md
$( echo_cmd) " LBURG $( Q3LCCSRCDIR) /dagcheck.md "
$( Q) $( LBURG) $( Q3LCCSRCDIR) /dagcheck.md $@
$(B)/tools/rcc/dagcheck.o : $( DAGCHECK_C )
$( DO_TOOLS_CC_DAGCHECK)
$(B)/tools/rcc/%.o : $( Q 3LCCSRCDIR ) /%.c
$( DO_TOOLS_CC)
$(Q3RCC) : $( Q 3RCCOBJ )
$( echo_cmd) " LD $@ "
2013-03-24 22:06:45 +00:00
$( Q) $( TOOLS_CC) $( TOOLS_CFLAGS) $( TOOLS_LDFLAGS) -o $@ $^ $( TOOLS_LIBS)
2007-09-12 23:37:33 +00:00
Q3CPPOBJ = \
2013-01-05 15:35:50 +00:00
$( B) /tools/cpp/cpp.o \
$( B) /tools/cpp/lex.o \
$( B) /tools/cpp/nlist.o \
$( B) /tools/cpp/tokens.o \
$( B) /tools/cpp/macro.o \
$( B) /tools/cpp/eval.o \
$( B) /tools/cpp/include.o \
$( B) /tools/cpp/hideset.o \
$( B) /tools/cpp/getopt.o \
$( B) /tools/cpp/unix.o
2007-09-12 23:37:33 +00:00
$(B)/tools/cpp/%.o : $( Q 3CPPDIR ) /%.c
$( DO_TOOLS_CC)
$(Q3CPP) : $( Q 3CPPOBJ )
$( echo_cmd) " LD $@ "
2013-03-24 22:06:45 +00:00
$( Q) $( TOOLS_CC) $( TOOLS_CFLAGS) $( TOOLS_LDFLAGS) -o $@ $^ $( TOOLS_LIBS)
2007-09-12 23:37:33 +00:00
Q3LCCOBJ = \
$( B) /tools/etc/lcc.o \
$( B) /tools/etc/bytecode.o
$(B)/tools/etc/%.o : $( Q 3LCCETCDIR ) /%.c
$( DO_TOOLS_CC)
$(Q3LCC) : $( Q 3LCCOBJ ) $( Q 3RCC ) $( Q 3CPP )
$( echo_cmd) " LD $@ "
2013-03-24 22:06:45 +00:00
$( Q) $( TOOLS_CC) $( TOOLS_CFLAGS) $( TOOLS_LDFLAGS) -o $@ $( Q3LCCOBJ) $( TOOLS_LIBS)
2005-10-08 14:36:15 +00:00
2020-09-08 10:04:53 +00:00
$(STRINGIFY) : $( TOOLSDIR ) /stringify .c
2020-12-25 21:34:49 +00:00
$( echo_cmd) " TOOLS_CC $@ "
2020-09-08 10:04:53 +00:00
$( Q) $( TOOLS_CC) $( TOOLS_CFLAGS) $( TOOLS_LDFLAGS) -o $@ $( TOOLSDIR) /stringify.c $( TOOLS_LIBS)
2007-07-16 23:30:53 +00:00
d e f i n e D O _ Q 3 L C C
2007-08-27 07:02:54 +00:00
$( echo_cmd ) "Q3LCC $<"
2011-10-28 19:12:43 +00:00
$( Q ) $( Q 3LCC ) $( BASEGAME_CFLAGS ) - o $@ $<
2007-07-16 23:30:53 +00:00
e n d e f
2008-03-17 16:47:40 +00:00
d e f i n e D O _ C G A M E _ Q 3 L C C
$( echo_cmd ) "CGAME_Q3LCC $<"
2011-10-28 19:12:43 +00:00
$( Q ) $( Q 3LCC ) $( BASEGAME_CFLAGS ) - D C G A M E - o $@ $<
2008-03-17 16:47:40 +00:00
e n d e f
d e f i n e D O _ G A M E _ Q 3 L C C
$( echo_cmd ) "GAME_Q3LCC $<"
2011-10-28 19:12:43 +00:00
$( Q ) $( Q 3LCC ) $( BASEGAME_CFLAGS ) - D Q A G A M E - o $@ $<
2008-03-17 16:47:40 +00:00
e n d e f
d e f i n e D O _ U I _ Q 3 L C C
$( echo_cmd ) "UI_Q3LCC $<"
2011-10-28 19:12:43 +00:00
$( Q ) $( Q 3LCC ) $( BASEGAME_CFLAGS ) - D U I - o $@ $<
2008-03-17 16:47:40 +00:00
e n d e f
2007-07-16 23:30:53 +00:00
d e f i n e D O _ Q 3 L C C _ M I S S I O N P A C K
2007-08-27 07:02:54 +00:00
$( echo_cmd ) "Q3LCC_MISSIONPACK $<"
2011-10-28 19:12:43 +00:00
$( Q ) $( Q 3LCC ) $( MISSIONPACK_CFLAGS ) - o $@ $<
2007-07-16 23:30:53 +00:00
e n d e f
2008-03-17 16:47:40 +00:00
d e f i n e D O _ C G A M E _ Q 3 L C C _ M I S S I O N P A C K
$( echo_cmd ) "CGAME_Q3LCC_MISSIONPACK $<"
2011-10-28 19:12:43 +00:00
$( Q ) $( Q 3LCC ) $( MISSIONPACK_CFLAGS ) - D C G A M E - o $@ $<
2008-03-17 16:47:40 +00:00
e n d e f
d e f i n e D O _ G A M E _ Q 3 L C C _ M I S S I O N P A C K
$( echo_cmd ) "GAME_Q3LCC_MISSIONPACK $<"
2011-10-28 19:12:43 +00:00
$( Q ) $( Q 3LCC ) $( MISSIONPACK_CFLAGS ) - D Q A G A M E - o $@ $<
2008-03-17 16:47:40 +00:00
e n d e f
d e f i n e D O _ U I _ Q 3 L C C _ M I S S I O N P A C K
$( echo_cmd ) "UI_Q3LCC_MISSIONPACK $<"
2011-10-28 19:12:43 +00:00
$( Q ) $( Q 3LCC ) $( MISSIONPACK_CFLAGS ) - D U I - o $@ $<
2008-03-17 16:47:40 +00:00
e n d e f
2005-10-08 14:36:15 +00:00
2007-09-12 23:37:33 +00:00
Q3ASMOBJ = \
$( B) /tools/asm/q3asm.o \
$( B) /tools/asm/cmdlib.o
$(B)/tools/asm/%.o : $( Q 3ASMDIR ) /%.c
$( DO_TOOLS_CC)
$(Q3ASM) : $( Q 3ASMOBJ )
$( echo_cmd) " LD $@ "
2013-03-24 22:06:45 +00:00
$( Q) $( TOOLS_CC) $( TOOLS_CFLAGS) $( TOOLS_LDFLAGS) -o $@ $^ $( TOOLS_LIBS)
2007-09-12 23:37:33 +00:00
2017-05-25 18:13:18 +00:00
#############################################################################
# AUTOUPDATER
#############################################################################
d e f i n e D O _ A U T O U P D A T E R _ C C
$( echo_cmd ) "AUTOUPDATER_CC $<"
2017-06-04 05:16:37 +00:00
$( Q ) $( CC ) $( CFLAGS ) - I $( LIBTOMCRYPTSRCDIR ) / s r c / h e a d e r s - I $( TOMSFASTMATHSRCDIR ) / s r c / h e a d e r s $( CURL_CFLAGS ) - o $@ - c $<
2017-05-25 18:13:18 +00:00
e n d e f
Q3AUTOUPDATEROBJ = \
2017-06-04 20:43:50 +00:00
$( B) /autoupdater/autoupdater.o
2017-05-25 18:13:18 +00:00
$(B)/autoupdater/%.o : $( AUTOUPDATERSRCDIR ) /%.c
$( DO_AUTOUPDATER_CC)
$(B)/$(AUTOUPDATER_BIN) : $( Q 3AUTOUPDATEROBJ )
$( echo_cmd) " AUTOUPDATER_LD $@ "
2017-06-02 04:49:42 +00:00
$( Q) $( CC) $( LDFLAGS) -o $@ $( Q3AUTOUPDATEROBJ) $( AUTOUPDATER_LIBS)
2017-05-25 18:13:18 +00:00
2005-08-26 17:39:27 +00:00
#############################################################################
# CLIENT/SERVER
#############################################################################
Q3OBJ = \
2005-09-23 01:59:42 +00:00
$( B) /client/cl_cgame.o \
$( B) /client/cl_cin.o \
$( B) /client/cl_console.o \
$( B) /client/cl_input.o \
$( B) /client/cl_keys.o \
$( B) /client/cl_main.o \
$( B) /client/cl_net_chan.o \
$( B) /client/cl_parse.o \
$( B) /client/cl_scrn.o \
$( B) /client/cl_ui.o \
2006-01-04 03:12:12 +00:00
$( B) /client/cl_avi.o \
2005-09-23 01:59:42 +00:00
\
$( B) /client/cm_load.o \
$( B) /client/cm_patch.o \
$( B) /client/cm_polylib.o \
$( B) /client/cm_test.o \
$( B) /client/cm_trace.o \
\
$( B) /client/cmd.o \
$( B) /client/common.o \
$( B) /client/cvar.o \
$( B) /client/files.o \
$( B) /client/md4.o \
2006-04-22 22:21:56 +00:00
$( B) /client/md5.o \
2005-09-23 01:59:42 +00:00
$( B) /client/msg.o \
$( B) /client/net_chan.o \
2007-08-28 16:42:13 +00:00
$( B) /client/net_ip.o \
2005-09-23 01:59:42 +00:00
$( B) /client/huffman.o \
\
2018-05-12 18:14:47 +00:00
$( B) /client/snd_altivec.o \
2005-09-23 01:59:42 +00:00
$( B) /client/snd_adpcm.o \
$( B) /client/snd_dma.o \
$( B) /client/snd_mem.o \
$( B) /client/snd_mix.o \
$( B) /client/snd_wavelet.o \
\
2005-11-13 18:58:14 +00:00
$( B) /client/snd_main.o \
$( B) /client/snd_codec.o \
$( B) /client/snd_codec_wav.o \
2006-01-06 17:36:03 +00:00
$( B) /client/snd_codec_ogg.o \
2013-02-18 00:32:05 +00:00
$( B) /client/snd_codec_opus.o \
2005-11-13 18:58:14 +00:00
\
$( B) /client/qal.o \
$( B) /client/snd_openal.o \
\
2006-09-11 16:41:55 +00:00
$( B) /client/cl_curl.o \
\
2005-09-23 01:59:42 +00:00
$( B) /client/sv_bot.o \
$( B) /client/sv_ccmds.o \
$( B) /client/sv_client.o \
$( B) /client/sv_game.o \
$( B) /client/sv_init.o \
$( B) /client/sv_main.o \
$( B) /client/sv_net_chan.o \
$( B) /client/sv_snapshot.o \
$( B) /client/sv_world.o \
\
$( B) /client/q_math.o \
$( B) /client/q_shared.o \
\
$( B) /client/unzip.o \
2009-10-19 14:00:16 +00:00
$( B) /client/ioapi.o \
2007-08-23 17:23:15 +00:00
$( B) /client/puff.o \
2005-09-23 01:59:42 +00:00
$( B) /client/vm.o \
$( B) /client/vm_interpreted.o \
\
$( B) /client/be_aas_bspq3.o \
$( B) /client/be_aas_cluster.o \
$( B) /client/be_aas_debug.o \
$( B) /client/be_aas_entity.o \
$( B) /client/be_aas_file.o \
$( B) /client/be_aas_main.o \
$( B) /client/be_aas_move.o \
$( B) /client/be_aas_optimize.o \
$( B) /client/be_aas_reach.o \
$( B) /client/be_aas_route.o \
$( B) /client/be_aas_routealt.o \
$( B) /client/be_aas_sample.o \
$( B) /client/be_ai_char.o \
$( B) /client/be_ai_chat.o \
$( B) /client/be_ai_gen.o \
$( B) /client/be_ai_goal.o \
$( B) /client/be_ai_move.o \
$( B) /client/be_ai_weap.o \
$( B) /client/be_ai_weight.o \
$( B) /client/be_ea.o \
$( B) /client/be_interface.o \
$( B) /client/l_crc.o \
$( B) /client/l_libvar.o \
$( B) /client/l_log.o \
$( B) /client/l_memory.o \
$( B) /client/l_precomp.o \
$( B) /client/l_script.o \
$( B) /client/l_struct.o \
2007-09-05 18:17:46 +00:00
\
$( B) /client/sdl_input.o \
$( B) /client/sdl_snd.o \
\
2007-11-30 18:32:52 +00:00
$( B) /client/con_log.o \
2017-05-31 05:21:21 +00:00
$( B) /client/sys_autoupdater.o \
2007-09-05 18:17:46 +00:00
$( B) /client/sys_main.o
2005-09-23 01:59:42 +00:00
2015-01-30 21:52:53 +00:00
i f d e f M I N G W
2012-02-06 21:05:57 +00:00
Q3OBJ += \
2013-01-05 15:35:50 +00:00
$( B) /client/con_passive.o
2024-06-06 23:26:07 +00:00
e l s e
i f e q ( $( PLATFORM ) , e m s c r i p t e n )
Q3OBJ += \
$( B) /client/con_passive.o
2012-02-06 21:05:57 +00:00
e l s e
Q3OBJ += \
2013-01-05 15:35:50 +00:00
$( B) /client/con_tty.o
2012-02-06 21:05:57 +00:00
e n d i f
2024-06-06 23:26:07 +00:00
e n d i f
2012-02-06 21:05:57 +00:00
2012-10-26 01:23:06 +00:00
Q3R2OBJ = \
2013-02-15 23:46:37 +00:00
$( B) /renderergl2/tr_animation.o \
$( B) /renderergl2/tr_backend.o \
$( B) /renderergl2/tr_bsp.o \
$( B) /renderergl2/tr_cmds.o \
$( B) /renderergl2/tr_curve.o \
2016-01-18 12:46:01 +00:00
$( B) /renderergl2/tr_dsa.o \
2013-02-15 23:46:37 +00:00
$( B) /renderergl2/tr_extramath.o \
$( B) /renderergl2/tr_extensions.o \
$( B) /renderergl2/tr_fbo.o \
$( B) /renderergl2/tr_flares.o \
$( B) /renderergl2/tr_font.o \
$( B) /renderergl2/tr_glsl.o \
$( B) /renderergl2/tr_image.o \
$( B) /renderergl2/tr_image_bmp.o \
2015-06-12 19:31:58 +00:00
$( B) /renderergl2/tr_image_jpg.o \
2013-02-15 23:46:37 +00:00
$( B) /renderergl2/tr_image_pcx.o \
2015-06-12 19:31:58 +00:00
$( B) /renderergl2/tr_image_png.o \
$( B) /renderergl2/tr_image_tga.o \
2015-12-18 14:53:20 +00:00
$( B) /renderergl2/tr_image_dds.o \
2013-02-15 23:46:37 +00:00
$( B) /renderergl2/tr_init.o \
$( B) /renderergl2/tr_light.o \
$( B) /renderergl2/tr_main.o \
$( B) /renderergl2/tr_marks.o \
$( B) /renderergl2/tr_mesh.o \
$( B) /renderergl2/tr_model.o \
$( B) /renderergl2/tr_model_iqm.o \
$( B) /renderergl2/tr_noise.o \
$( B) /renderergl2/tr_postprocess.o \
$( B) /renderergl2/tr_scene.o \
$( B) /renderergl2/tr_shade.o \
$( B) /renderergl2/tr_shade_calc.o \
$( B) /renderergl2/tr_shader.o \
$( B) /renderergl2/tr_shadows.o \
$( B) /renderergl2/tr_sky.o \
$( B) /renderergl2/tr_surface.o \
$( B) /renderergl2/tr_vbo.o \
$( B) /renderergl2/tr_world.o \
2012-10-26 01:23:06 +00:00
\
2013-02-15 23:46:37 +00:00
$( B) /renderergl1/sdl_gamma.o \
$( B) /renderergl1/sdl_glimp.o
2013-01-05 15:35:50 +00:00
2012-12-04 01:56:52 +00:00
Q3R2STRINGOBJ = \
2013-02-15 23:46:37 +00:00
$( B) /renderergl2/glsl/bokeh_fp.o \
$( B) /renderergl2/glsl/bokeh_vp.o \
$( B) /renderergl2/glsl/calclevels4x_fp.o \
$( B) /renderergl2/glsl/calclevels4x_vp.o \
$( B) /renderergl2/glsl/depthblur_fp.o \
$( B) /renderergl2/glsl/depthblur_vp.o \
$( B) /renderergl2/glsl/dlight_fp.o \
$( B) /renderergl2/glsl/dlight_vp.o \
$( B) /renderergl2/glsl/down4x_fp.o \
$( B) /renderergl2/glsl/down4x_vp.o \
$( B) /renderergl2/glsl/fogpass_fp.o \
$( B) /renderergl2/glsl/fogpass_vp.o \
$( B) /renderergl2/glsl/generic_fp.o \
$( B) /renderergl2/glsl/generic_vp.o \
$( B) /renderergl2/glsl/lightall_fp.o \
$( B) /renderergl2/glsl/lightall_vp.o \
$( B) /renderergl2/glsl/pshadow_fp.o \
$( B) /renderergl2/glsl/pshadow_vp.o \
$( B) /renderergl2/glsl/shadowfill_fp.o \
$( B) /renderergl2/glsl/shadowfill_vp.o \
$( B) /renderergl2/glsl/shadowmask_fp.o \
$( B) /renderergl2/glsl/shadowmask_vp.o \
$( B) /renderergl2/glsl/ssao_fp.o \
$( B) /renderergl2/glsl/ssao_vp.o \
$( B) /renderergl2/glsl/texturecolor_fp.o \
$( B) /renderergl2/glsl/texturecolor_vp.o \
$( B) /renderergl2/glsl/tonemap_fp.o \
$( B) /renderergl2/glsl/tonemap_vp.o
2012-10-26 01:23:06 +00:00
2011-08-01 01:19:55 +00:00
Q3ROBJ = \
2018-05-12 18:14:47 +00:00
$( B) /renderergl1/tr_altivec.o \
2013-02-15 23:46:37 +00:00
$( B) /renderergl1/tr_animation.o \
$( B) /renderergl1/tr_backend.o \
$( B) /renderergl1/tr_bsp.o \
$( B) /renderergl1/tr_cmds.o \
$( B) /renderergl1/tr_curve.o \
$( B) /renderergl1/tr_flares.o \
$( B) /renderergl1/tr_font.o \
$( B) /renderergl1/tr_image.o \
$( B) /renderergl1/tr_image_bmp.o \
2015-06-12 19:31:58 +00:00
$( B) /renderergl1/tr_image_jpg.o \
2013-02-15 23:46:37 +00:00
$( B) /renderergl1/tr_image_pcx.o \
2015-06-12 19:31:58 +00:00
$( B) /renderergl1/tr_image_png.o \
$( B) /renderergl1/tr_image_tga.o \
2013-02-15 23:46:37 +00:00
$( B) /renderergl1/tr_init.o \
$( B) /renderergl1/tr_light.o \
$( B) /renderergl1/tr_main.o \
$( B) /renderergl1/tr_marks.o \
$( B) /renderergl1/tr_mesh.o \
$( B) /renderergl1/tr_model.o \
$( B) /renderergl1/tr_model_iqm.o \
$( B) /renderergl1/tr_noise.o \
$( B) /renderergl1/tr_scene.o \
$( B) /renderergl1/tr_shade.o \
$( B) /renderergl1/tr_shade_calc.o \
$( B) /renderergl1/tr_shader.o \
$( B) /renderergl1/tr_shadows.o \
$( B) /renderergl1/tr_sky.o \
$( B) /renderergl1/tr_surface.o \
$( B) /renderergl1/tr_world.o \
2011-08-01 01:19:55 +00:00
\
2013-02-15 23:46:37 +00:00
$( B) /renderergl1/sdl_gamma.o \
$( B) /renderergl1/sdl_glimp.o
2012-10-28 20:56:26 +00:00
2011-08-01 01:19:55 +00:00
i f n e q ( $( USE_RENDERER_DLOPEN ) , 0 )
Q3ROBJ += \
2013-02-15 23:46:37 +00:00
$( B) /renderergl1/q_shared.o \
$( B) /renderergl1/puff.o \
$( B) /renderergl1/q_math.o \
$( B) /renderergl1/tr_subs.o
2012-10-26 01:23:06 +00:00
Q3R2OBJ += \
2013-02-15 23:46:37 +00:00
$( B) /renderergl1/q_shared.o \
$( B) /renderergl1/puff.o \
$( B) /renderergl1/q_math.o \
$( B) /renderergl1/tr_subs.o
2011-08-01 01:19:55 +00:00
e n d i f
2011-03-12 16:45:15 +00:00
i f n e q ( $( USE_INTERNAL_JPEG ) , 0 )
2012-10-26 01:23:06 +00:00
JPGOBJ = \
2013-02-15 23:46:37 +00:00
$( B) /renderergl1/jaricom.o \
$( B) /renderergl1/jcapimin.o \
$( B) /renderergl1/jcapistd.o \
$( B) /renderergl1/jcarith.o \
$( B) /renderergl1/jccoefct.o \
$( B) /renderergl1/jccolor.o \
$( B) /renderergl1/jcdctmgr.o \
$( B) /renderergl1/jchuff.o \
$( B) /renderergl1/jcinit.o \
$( B) /renderergl1/jcmainct.o \
$( B) /renderergl1/jcmarker.o \
$( B) /renderergl1/jcmaster.o \
$( B) /renderergl1/jcomapi.o \
$( B) /renderergl1/jcparam.o \
$( B) /renderergl1/jcprepct.o \
$( B) /renderergl1/jcsample.o \
$( B) /renderergl1/jctrans.o \
$( B) /renderergl1/jdapimin.o \
$( B) /renderergl1/jdapistd.o \
$( B) /renderergl1/jdarith.o \
$( B) /renderergl1/jdatadst.o \
$( B) /renderergl1/jdatasrc.o \
$( B) /renderergl1/jdcoefct.o \
$( B) /renderergl1/jdcolor.o \
$( B) /renderergl1/jddctmgr.o \
$( B) /renderergl1/jdhuff.o \
$( B) /renderergl1/jdinput.o \
$( B) /renderergl1/jdmainct.o \
$( B) /renderergl1/jdmarker.o \
$( B) /renderergl1/jdmaster.o \
$( B) /renderergl1/jdmerge.o \
$( B) /renderergl1/jdpostct.o \
$( B) /renderergl1/jdsample.o \
$( B) /renderergl1/jdtrans.o \
$( B) /renderergl1/jerror.o \
$( B) /renderergl1/jfdctflt.o \
$( B) /renderergl1/jfdctfst.o \
$( B) /renderergl1/jfdctint.o \
$( B) /renderergl1/jidctflt.o \
$( B) /renderergl1/jidctfst.o \
$( B) /renderergl1/jidctint.o \
$( B) /renderergl1/jmemmgr.o \
$( B) /renderergl1/jmemnobs.o \
$( B) /renderergl1/jquant1.o \
$( B) /renderergl1/jquant2.o \
$( B) /renderergl1/jutils.o
2005-09-23 01:59:42 +00:00
e n d i f
2011-03-12 16:45:15 +00:00
2005-09-23 01:59:42 +00:00
i f e q ( $( ARCH ) , x 8 6 )
2006-01-06 00:33:24 +00:00
Q3OBJ += \
$( B) /client/snd_mixa.o \
$( B) /client/matha.o \
2011-06-13 09:56:39 +00:00
$( B) /client/snapvector.o \
$( B) /client/ftola.o
e n d i f
i f e q ( $( ARCH ) , x 8 6 _ 6 4 )
Q3OBJ += \
$( B) /client/snapvector.o \
$( B) /client/ftola.o
e n d i f
2005-09-23 01:59:42 +00:00
2013-12-11 03:14:13 +00:00
i f e q ( $( NEED_OPUS ) , 1 )
2013-02-18 00:32:05 +00:00
i f e q ( $( USE_INTERNAL_OPUS ) , 1 )
Q3OBJ += \
2014-02-08 03:21:02 +00:00
$( B) /client/opus/analysis.o \
$( B) /client/opus/mlp.o \
$( B) /client/opus/mlp_data.o \
2013-02-18 00:32:05 +00:00
$( B) /client/opus/opus.o \
$( B) /client/opus/opus_decoder.o \
$( B) /client/opus/opus_encoder.o \
$( B) /client/opus/opus_multistream.o \
2014-02-08 03:21:02 +00:00
$( B) /client/opus/opus_multistream_encoder.o \
$( B) /client/opus/opus_multistream_decoder.o \
2013-02-18 00:32:05 +00:00
$( B) /client/opus/repacketizer.o \
\
$( B) /client/opus/bands.o \
$( B) /client/opus/celt.o \
$( B) /client/opus/cwrs.o \
$( B) /client/opus/entcode.o \
$( B) /client/opus/entdec.o \
$( B) /client/opus/entenc.o \
$( B) /client/opus/kiss_fft.o \
$( B) /client/opus/laplace.o \
$( B) /client/opus/mathops.o \
$( B) /client/opus/mdct.o \
$( B) /client/opus/modes.o \
$( B) /client/opus/pitch.o \
2014-02-08 03:21:02 +00:00
$( B) /client/opus/celt_encoder.o \
$( B) /client/opus/celt_decoder.o \
2013-02-18 00:32:05 +00:00
$( B) /client/opus/celt_lpc.o \
$( B) /client/opus/quant_bands.o \
$( B) /client/opus/rate.o \
$( B) /client/opus/vq.o \
\
$( B) /client/opus/CNG.o \
$( B) /client/opus/code_signs.o \
$( B) /client/opus/init_decoder.o \
$( B) /client/opus/decode_core.o \
$( B) /client/opus/decode_frame.o \
$( B) /client/opus/decode_parameters.o \
$( B) /client/opus/decode_indices.o \
$( B) /client/opus/decode_pulses.o \
$( B) /client/opus/decoder_set_fs.o \
$( B) /client/opus/dec_API.o \
$( B) /client/opus/enc_API.o \
$( B) /client/opus/encode_indices.o \
$( B) /client/opus/encode_pulses.o \
$( B) /client/opus/gain_quant.o \
$( B) /client/opus/interpolate.o \
$( B) /client/opus/LP_variable_cutoff.o \
$( B) /client/opus/NLSF_decode.o \
$( B) /client/opus/NSQ.o \
$( B) /client/opus/NSQ_del_dec.o \
$( B) /client/opus/PLC.o \
$( B) /client/opus/shell_coder.o \
$( B) /client/opus/tables_gain.o \
$( B) /client/opus/tables_LTP.o \
$( B) /client/opus/tables_NLSF_CB_NB_MB.o \
$( B) /client/opus/tables_NLSF_CB_WB.o \
$( B) /client/opus/tables_other.o \
$( B) /client/opus/tables_pitch_lag.o \
$( B) /client/opus/tables_pulses_per_block.o \
$( B) /client/opus/VAD.o \
$( B) /client/opus/control_audio_bandwidth.o \
$( B) /client/opus/quant_LTP_gains.o \
$( B) /client/opus/VQ_WMat_EC.o \
$( B) /client/opus/HP_variable_cutoff.o \
$( B) /client/opus/NLSF_encode.o \
$( B) /client/opus/NLSF_VQ.o \
$( B) /client/opus/NLSF_unpack.o \
$( B) /client/opus/NLSF_del_dec_quant.o \
$( B) /client/opus/process_NLSFs.o \
$( B) /client/opus/stereo_LR_to_MS.o \
$( B) /client/opus/stereo_MS_to_LR.o \
$( B) /client/opus/check_control_input.o \
$( B) /client/opus/control_SNR.o \
$( B) /client/opus/init_encoder.o \
$( B) /client/opus/control_codec.o \
$( B) /client/opus/A2NLSF.o \
$( B) /client/opus/ana_filt_bank_1.o \
$( B) /client/opus/biquad_alt.o \
$( B) /client/opus/bwexpander_32.o \
$( B) /client/opus/bwexpander.o \
$( B) /client/opus/debug.o \
$( B) /client/opus/decode_pitch.o \
$( B) /client/opus/inner_prod_aligned.o \
$( B) /client/opus/lin2log.o \
$( B) /client/opus/log2lin.o \
$( B) /client/opus/LPC_analysis_filter.o \
2018-03-16 18:03:37 +00:00
$( B) /client/opus/LPC_fit.o \
2013-02-18 00:32:05 +00:00
$( B) /client/opus/LPC_inv_pred_gain.o \
$( B) /client/opus/table_LSF_cos.o \
$( B) /client/opus/NLSF2A.o \
$( B) /client/opus/NLSF_stabilize.o \
$( B) /client/opus/NLSF_VQ_weights_laroia.o \
$( B) /client/opus/pitch_est_tables.o \
$( B) /client/opus/resampler.o \
$( B) /client/opus/resampler_down2_3.o \
$( B) /client/opus/resampler_down2.o \
$( B) /client/opus/resampler_private_AR2.o \
$( B) /client/opus/resampler_private_down_FIR.o \
$( B) /client/opus/resampler_private_IIR_FIR.o \
$( B) /client/opus/resampler_private_up2_HQ.o \
$( B) /client/opus/resampler_rom.o \
$( B) /client/opus/sigm_Q15.o \
$( B) /client/opus/sort.o \
$( B) /client/opus/sum_sqr_shift.o \
$( B) /client/opus/stereo_decode_pred.o \
$( B) /client/opus/stereo_encode_pred.o \
$( B) /client/opus/stereo_find_predictor.o \
$( B) /client/opus/stereo_quant_pred.o \
\
$( B) /client/opus/apply_sine_window_FLP.o \
$( B) /client/opus/corrMatrix_FLP.o \
$( B) /client/opus/encode_frame_FLP.o \
$( B) /client/opus/find_LPC_FLP.o \
$( B) /client/opus/find_LTP_FLP.o \
$( B) /client/opus/find_pitch_lags_FLP.o \
$( B) /client/opus/find_pred_coefs_FLP.o \
$( B) /client/opus/LPC_analysis_filter_FLP.o \
$( B) /client/opus/LTP_analysis_filter_FLP.o \
$( B) /client/opus/LTP_scale_ctrl_FLP.o \
$( B) /client/opus/noise_shape_analysis_FLP.o \
$( B) /client/opus/process_gains_FLP.o \
$( B) /client/opus/regularize_correlations_FLP.o \
$( B) /client/opus/residual_energy_FLP.o \
$( B) /client/opus/warped_autocorrelation_FLP.o \
$( B) /client/opus/wrappers_FLP.o \
$( B) /client/opus/autocorrelation_FLP.o \
$( B) /client/opus/burg_modified_FLP.o \
$( B) /client/opus/bwexpander_FLP.o \
$( B) /client/opus/energy_FLP.o \
$( B) /client/opus/inner_product_FLP.o \
$( B) /client/opus/k2a_FLP.o \
$( B) /client/opus/LPC_inv_pred_gain_FLP.o \
$( B) /client/opus/pitch_analysis_core_FLP.o \
$( B) /client/opus/scale_copy_vector_FLP.o \
$( B) /client/opus/scale_vector_FLP.o \
$( B) /client/opus/schur_FLP.o \
$( B) /client/opus/sort_FLP.o \
\
$( B) /client/http.o \
$( B) /client/info.o \
$( B) /client/internal.o \
$( B) /client/opusfile.o \
2014-02-08 03:29:10 +00:00
$( B) /client/stream.o \
$( B) /client/wincerts.o
2013-02-18 00:32:05 +00:00
e n d i f
e n d i f
2013-02-18 00:56:06 +00:00
i f e q ( $( NEED_OGG ) , 1 )
i f e q ( $( USE_INTERNAL_OGG ) , 1 )
Q3OBJ += \
$( B) /client/bitwise.o \
$( B) /client/framing.o
e n d i f
e n d i f
2014-02-08 22:02:24 +00:00
i f e q ( $( USE_CODEC_VORBIS ) , 1 )
2014-02-08 08:26:03 +00:00
i f e q ( $( USE_INTERNAL_VORBIS ) , 1 )
Q3OBJ += \
$( B) /client/vorbis/analysis.o \
$( B) /client/vorbis/bitrate.o \
$( B) /client/vorbis/block.o \
$( B) /client/vorbis/codebook.o \
$( B) /client/vorbis/envelope.o \
$( B) /client/vorbis/floor0.o \
$( B) /client/vorbis/floor1.o \
$( B) /client/vorbis/info.o \
$( B) /client/vorbis/lookup.o \
$( B) /client/vorbis/lpc.o \
$( B) /client/vorbis/lsp.o \
$( B) /client/vorbis/mapping0.o \
$( B) /client/vorbis/mdct.o \
$( B) /client/vorbis/psy.o \
$( B) /client/vorbis/registry.o \
$( B) /client/vorbis/res0.o \
$( B) /client/vorbis/smallft.o \
$( B) /client/vorbis/sharedbook.o \
$( B) /client/vorbis/synthesis.o \
$( B) /client/vorbis/vorbisfile.o \
$( B) /client/vorbis/window.o
e n d i f
e n d i f
2009-10-19 14:00:16 +00:00
i f e q ( $( USE_INTERNAL_ZLIB ) , 1 )
Q3OBJ += \
$( B) /client/adler32.o \
$( B) /client/crc32.o \
$( B) /client/inffast.o \
$( B) /client/inflate.o \
$( B) /client/inftrees.o \
$( B) /client/zutil.o
e n d i f
2008-06-02 06:46:41 +00:00
2006-06-06 18:09:09 +00:00
i f e q ( $( HAVE_VM_COMPILED ) , t r u e )
2013-03-21 11:22:44 +00:00
ifneq ( $( findstring $( ARCH) ,x86 x86_64) ,)
2011-06-01 15:17:18 +00:00
Q3OBJ += \
2011-06-13 09:56:39 +00:00
$( B) /client/vm_x86.o
2006-06-06 18:09:09 +00:00
endif
2013-03-21 11:22:44 +00:00
ifneq ( $( findstring $( ARCH) ,ppc ppc64) ,)
2008-11-10 09:46:41 +00:00
Q3OBJ += $( B) /client/vm_powerpc.o $( B) /client/vm_powerpc_asm.o
2005-09-23 01:59:42 +00:00
endif
2009-03-02 17:29:46 +00:00
ifeq ( $( ARCH) ,sparc)
Q3OBJ += $( B) /client/vm_sparc.o
endif
2014-10-23 11:00:17 +00:00
ifeq ( $( ARCH) ,armv7l)
Q3OBJ += $( B) /client/vm_armv7l.o
endif
2005-09-23 01:59:42 +00:00
e n d i f
2005-08-26 17:39:27 +00:00
2015-01-30 21:52:53 +00:00
i f d e f M I N G W
2005-12-30 17:50:47 +00:00
Q3OBJ += \
2007-09-05 18:17:46 +00:00
$( B) /client/win_resource.o \
$( B) /client/sys_win32.o
2005-09-22 03:21:33 +00:00
e l s e
2006-01-04 03:40:49 +00:00
Q3OBJ += \
2007-09-05 18:17:46 +00:00
$( B) /client/sys_unix.o
e n d i f
2005-11-26 07:46:21 +00:00
2009-09-15 05:38:27 +00:00
i f e q ( $( PLATFORM ) , d a r w i n )
Q3OBJ += \
2010-02-15 16:20:33 +00:00
$( B) /client/sys_osx.o
2009-09-15 05:38:27 +00:00
e n d i f
2008-05-30 17:19:31 +00:00
i f e q ( $( USE_MUMBLE ) , 1 )
Q3OBJ += \
$( B) /client/libmumblelink.o
e n d i f
2011-08-01 01:19:55 +00:00
i f n e q ( $( USE_RENDERER_DLOPEN ) , 0 )
2011-10-28 19:12:43 +00:00
$(B)/$(CLIENTBIN)$(FULLBINEXT) : $( Q 3OBJ ) $( LIBSDLMAIN )
2007-08-27 07:02:54 +00:00
$( echo_cmd) " LD $@ "
2016-03-21 08:55:23 +00:00
$( Q) $( CC) $( CLIENT_CFLAGS) $( CFLAGS) $( CLIENT_LDFLAGS) $( LDFLAGS) $( NOTSHLIBLDFLAGS) \
2011-08-01 01:19:55 +00:00
-o $@ $( Q3OBJ) \
2008-11-02 17:32:21 +00:00
$( LIBSDLMAIN) $( CLIENT_LIBS) $( LIBS)
2005-09-23 01:59:42 +00:00
2013-01-24 22:53:08 +00:00
$(B)/renderer_opengl1_$(SHLIBNAME) : $( Q 3ROBJ ) $( JPGOBJ )
2012-10-26 01:23:06 +00:00
$( echo_cmd) " LD $@ "
2013-01-24 22:53:08 +00:00
$( Q) $( CC) $( CFLAGS) $( SHLIBLDFLAGS) -o $@ $( Q3ROBJ) $( JPGOBJ) \
2012-10-26 01:23:06 +00:00
$( THREAD_LIBS) $( LIBSDLMAIN) $( RENDERER_LIBS) $( LIBS)
2013-02-15 23:46:37 +00:00
$(B)/renderer_opengl2_$(SHLIBNAME) : $( Q 3R 2OBJ ) $( Q 3R 2STRINGOBJ ) $( JPGOBJ )
2011-08-01 01:19:55 +00:00
$( echo_cmd) " LD $@ "
2013-01-24 22:53:08 +00:00
$( Q) $( CC) $( CFLAGS) $( SHLIBLDFLAGS) -o $@ $( Q3R2OBJ) $( Q3R2STRINGOBJ) $( JPGOBJ) \
2011-08-01 11:53:59 +00:00
$( THREAD_LIBS) $( LIBSDLMAIN) $( RENDERER_LIBS) $( LIBS)
2011-08-01 01:19:55 +00:00
e l s e
2013-01-24 22:53:08 +00:00
$(B)/$(CLIENTBIN)$(FULLBINEXT) : $( Q 3OBJ ) $( Q 3ROBJ ) $( JPGOBJ ) $( LIBSDLMAIN )
2012-10-28 21:04:41 +00:00
$( echo_cmd) " LD $@ "
2016-03-21 08:55:23 +00:00
$( Q) $( CC) $( CLIENT_CFLAGS) $( CFLAGS) $( CLIENT_LDFLAGS) $( LDFLAGS) $( NOTSHLIBLDFLAGS) \
2013-01-24 22:53:08 +00:00
-o $@ $( Q3OBJ) $( Q3ROBJ) $( JPGOBJ) \
2012-10-28 21:04:41 +00:00
$( LIBSDLMAIN) $( CLIENT_LIBS) $( RENDERER_LIBS) $( LIBS)
2013-02-15 23:46:37 +00:00
$(B)/$(CLIENTBIN)_opengl2$(FULLBINEXT) : $( Q 3OBJ ) $( Q 3R 2OBJ ) $( Q 3R 2STRINGOBJ ) $( JPGOBJ ) $( LIBSDLMAIN )
2011-08-01 01:19:55 +00:00
$( echo_cmd) " LD $@ "
2016-03-21 08:55:23 +00:00
$( Q) $( CC) $( CLIENT_CFLAGS) $( CFLAGS) $( CLIENT_LDFLAGS) $( LDFLAGS) $( NOTSHLIBLDFLAGS) \
2013-01-24 22:53:08 +00:00
-o $@ $( Q3OBJ) $( Q3R2OBJ) $( Q3R2STRINGOBJ) $( JPGOBJ) \
2011-08-01 13:10:35 +00:00
$( LIBSDLMAIN) $( CLIENT_LIBS) $( RENDERER_LIBS) $( LIBS)
2011-08-01 01:19:55 +00:00
e n d i f
2005-11-26 07:46:21 +00:00
i f n e q ( $( strip $ ( LIBSDLMAIN ) ) , )
i f n e q ( $( strip $ ( LIBSDLMAINSRC ) ) , )
$(LIBSDLMAIN) : $( LIBSDLMAINSRC )
2021-10-24 08:38:34 +00:00
i f e q ( $( PLATFORM ) , d a r w i n )
$( LIPO) -extract $( MACOSX_ARCH) $< -o $@
e l s e
2005-11-26 07:46:21 +00:00
cp $< $@
2021-10-24 08:38:34 +00:00
e n d i f
2013-03-25 22:41:15 +00:00
$( RANLIB) $@
2005-11-26 07:46:21 +00:00
e n d i f
e n d i f
2005-09-23 01:59:42 +00:00
2005-08-26 17:39:27 +00:00
#############################################################################
2005-09-23 01:59:42 +00:00
# DEDICATED SERVER
2005-08-26 17:39:27 +00:00
#############################################################################
Q3DOBJ = \
2005-09-23 01:59:42 +00:00
$( B) /ded/sv_bot.o \
$( B) /ded/sv_client.o \
$( B) /ded/sv_ccmds.o \
$( B) /ded/sv_game.o \
$( B) /ded/sv_init.o \
$( B) /ded/sv_main.o \
$( B) /ded/sv_net_chan.o \
$( B) /ded/sv_snapshot.o \
$( B) /ded/sv_world.o \
\
$( B) /ded/cm_load.o \
$( B) /ded/cm_patch.o \
$( B) /ded/cm_polylib.o \
$( B) /ded/cm_test.o \
$( B) /ded/cm_trace.o \
$( B) /ded/cmd.o \
$( B) /ded/common.o \
$( B) /ded/cvar.o \
$( B) /ded/files.o \
$( B) /ded/md4.o \
$( B) /ded/msg.o \
$( B) /ded/net_chan.o \
2007-08-28 16:42:13 +00:00
$( B) /ded/net_ip.o \
2005-09-23 01:59:42 +00:00
$( B) /ded/huffman.o \
\
$( B) /ded/q_math.o \
$( B) /ded/q_shared.o \
\
$( B) /ded/unzip.o \
2009-10-19 14:00:16 +00:00
$( B) /ded/ioapi.o \
2005-09-23 01:59:42 +00:00
$( B) /ded/vm.o \
$( B) /ded/vm_interpreted.o \
\
$( B) /ded/be_aas_bspq3.o \
$( B) /ded/be_aas_cluster.o \
$( B) /ded/be_aas_debug.o \
$( B) /ded/be_aas_entity.o \
$( B) /ded/be_aas_file.o \
$( B) /ded/be_aas_main.o \
$( B) /ded/be_aas_move.o \
$( B) /ded/be_aas_optimize.o \
$( B) /ded/be_aas_reach.o \
$( B) /ded/be_aas_route.o \
$( B) /ded/be_aas_routealt.o \
$( B) /ded/be_aas_sample.o \
$( B) /ded/be_ai_char.o \
$( B) /ded/be_ai_chat.o \
$( B) /ded/be_ai_gen.o \
$( B) /ded/be_ai_goal.o \
$( B) /ded/be_ai_move.o \
$( B) /ded/be_ai_weap.o \
$( B) /ded/be_ai_weight.o \
$( B) /ded/be_ea.o \
$( B) /ded/be_interface.o \
$( B) /ded/l_crc.o \
$( B) /ded/l_libvar.o \
$( B) /ded/l_log.o \
$( B) /ded/l_memory.o \
$( B) /ded/l_precomp.o \
$( B) /ded/l_script.o \
$( B) /ded/l_struct.o \
\
$( B) /ded/null_client.o \
$( B) /ded/null_input.o \
2007-09-05 18:17:46 +00:00
$( B) /ded/null_snddma.o \
\
2007-11-30 18:32:52 +00:00
$( B) /ded/con_log.o \
2017-05-31 05:21:21 +00:00
$( B) /ded/sys_autoupdater.o \
2007-09-05 18:17:46 +00:00
$( B) /ded/sys_main.o
2005-08-26 17:39:27 +00:00
2006-08-02 04:01:36 +00:00
i f e q ( $( ARCH ) , x 8 6 )
Q3DOBJ += \
2011-06-13 09:56:39 +00:00
$( B) /ded/matha.o \
$( B) /ded/snapvector.o \
2013-01-05 15:35:50 +00:00
$( B) /ded/ftola.o
2011-06-13 09:56:39 +00:00
e n d i f
2013-03-21 11:22:44 +00:00
i f e q ( $( ARCH ) , x 8 6 _ 6 4 )
2011-06-13 09:56:39 +00:00
Q3DOBJ += \
$( B) /ded/snapvector.o \
2013-01-05 15:35:50 +00:00
$( B) /ded/ftola.o
2006-08-02 04:01:36 +00:00
e n d i f
2005-08-26 17:39:27 +00:00
2009-10-19 14:00:16 +00:00
i f e q ( $( USE_INTERNAL_ZLIB ) , 1 )
Q3DOBJ += \
$( B) /ded/adler32.o \
$( B) /ded/crc32.o \
$( B) /ded/inffast.o \
$( B) /ded/inflate.o \
$( B) /ded/inftrees.o \
$( B) /ded/zutil.o
e n d i f
2006-06-06 18:09:09 +00:00
i f e q ( $( HAVE_VM_COMPILED ) , t r u e )
2013-03-21 11:22:44 +00:00
ifneq ( $( findstring $( ARCH) ,x86 x86_64) ,)
2011-06-01 15:17:18 +00:00
Q3DOBJ += \
2011-06-13 09:56:39 +00:00
$( B) /ded/vm_x86.o
2006-06-06 18:09:09 +00:00
endif
2013-03-21 11:22:44 +00:00
ifneq ( $( findstring $( ARCH) ,ppc ppc64) ,)
2008-11-10 09:46:41 +00:00
Q3DOBJ += $( B) /ded/vm_powerpc.o $( B) /ded/vm_powerpc_asm.o
2005-08-26 17:39:27 +00:00
endif
2009-03-02 17:29:46 +00:00
ifeq ( $( ARCH) ,sparc)
Q3DOBJ += $( B) /ded/vm_sparc.o
endif
2014-10-23 11:00:17 +00:00
ifeq ( $( ARCH) ,armv7l)
Q3DOBJ += $( B) /client/vm_armv7l.o
endif
2005-08-26 17:39:27 +00:00
e n d i f
2015-01-30 21:52:53 +00:00
i f d e f M I N G W
2007-09-06 20:31:30 +00:00
Q3DOBJ += \
$( B) /ded/win_resource.o \
$( B) /ded/sys_win32.o \
$( B) /ded/con_win32.o
e l s e
Q3DOBJ += \
$( B) /ded/sys_unix.o \
$( B) /ded/con_tty.o
e n d i f
2010-02-15 16:20:33 +00:00
i f e q ( $( PLATFORM ) , d a r w i n )
Q3DOBJ += \
$( B) /ded/sys_osx.o
e n d i f
2009-09-15 05:38:27 +00:00
2011-10-28 19:12:43 +00:00
$(B)/$(SERVERBIN)$(FULLBINEXT) : $( Q 3DOBJ )
2007-08-27 07:02:54 +00:00
$( echo_cmd) " LD $@ "
2016-03-21 08:55:23 +00:00
$( Q) $( CC) $( CFLAGS) $( LDFLAGS) $( NOTSHLIBLDFLAGS) -o $@ $( Q3DOBJ) $( LIBS)
2005-08-26 17:39:27 +00:00
#############################################################################
## BASEQ3 CGAME
#############################################################################
2005-10-04 23:54:51 +00:00
Q3CGOBJ_ = \
2011-10-28 19:12:43 +00:00
$( B) /$( BASEGAME) /cgame/cg_main.o \
$( B) /$( BASEGAME) /cgame/bg_misc.o \
$( B) /$( BASEGAME) /cgame/bg_pmove.o \
$( B) /$( BASEGAME) /cgame/bg_slidemove.o \
$( B) /$( BASEGAME) /cgame/bg_lib.o \
$( B) /$( BASEGAME) /cgame/cg_consolecmds.o \
$( B) /$( BASEGAME) /cgame/cg_draw.o \
$( B) /$( BASEGAME) /cgame/cg_drawtools.o \
$( B) /$( BASEGAME) /cgame/cg_effects.o \
$( B) /$( BASEGAME) /cgame/cg_ents.o \
$( B) /$( BASEGAME) /cgame/cg_event.o \
$( B) /$( BASEGAME) /cgame/cg_info.o \
$( B) /$( BASEGAME) /cgame/cg_localents.o \
$( B) /$( BASEGAME) /cgame/cg_marks.o \
$( B) /$( BASEGAME) /cgame/cg_particles.o \
$( B) /$( BASEGAME) /cgame/cg_players.o \
$( B) /$( BASEGAME) /cgame/cg_playerstate.o \
$( B) /$( BASEGAME) /cgame/cg_predict.o \
$( B) /$( BASEGAME) /cgame/cg_scoreboard.o \
$( B) /$( BASEGAME) /cgame/cg_servercmds.o \
$( B) /$( BASEGAME) /cgame/cg_snapshot.o \
$( B) /$( BASEGAME) /cgame/cg_view.o \
$( B) /$( BASEGAME) /cgame/cg_weapons.o \
2005-10-26 19:45:21 +00:00
\
2011-10-28 19:12:43 +00:00
$( B) /$( BASEGAME) /qcommon/q_math.o \
$( B) /$( BASEGAME) /qcommon/q_shared.o
2005-08-26 17:39:27 +00:00
2011-10-28 19:12:43 +00:00
Q3CGOBJ = $( Q3CGOBJ_) $( B) /$( BASEGAME) /cgame/cg_syscalls.o
2007-09-22 20:32:11 +00:00
Q3CGVMOBJ = $( Q3CGOBJ_:%.o= %.asm)
2005-10-04 23:54:51 +00:00
2011-10-28 19:12:43 +00:00
$(B)/$(BASEGAME)/cgame$(SHLIBNAME) : $( Q 3CGOBJ )
2007-08-27 07:02:54 +00:00
$( echo_cmd) " LD $@ "
2008-11-02 17:32:21 +00:00
$( Q) $( CC) $( CFLAGS) $( SHLIBLDFLAGS) -o $@ $( Q3CGOBJ)
2005-08-26 17:39:27 +00:00
2011-10-28 19:12:43 +00:00
$(B)/$(BASEGAME)/vm/cgame.qvm : $( Q 3CGVMOBJ ) $( CGDIR ) /cg_syscalls .asm $( Q 3ASM )
2007-08-27 07:02:54 +00:00
$( echo_cmd) " Q3ASM $@ "
$( Q) $( Q3ASM) -o $@ $( Q3CGVMOBJ) $( CGDIR) /cg_syscalls.asm
2005-10-04 23:54:51 +00:00
2005-08-26 17:39:27 +00:00
#############################################################################
## MISSIONPACK CGAME
#############################################################################
2005-10-04 23:54:51 +00:00
MPCGOBJ_ = \
2011-10-28 19:12:43 +00:00
$( B) /$( MISSIONPACK) /cgame/cg_main.o \
$( B) /$( MISSIONPACK) /cgame/bg_misc.o \
$( B) /$( MISSIONPACK) /cgame/bg_pmove.o \
$( B) /$( MISSIONPACK) /cgame/bg_slidemove.o \
$( B) /$( MISSIONPACK) /cgame/bg_lib.o \
$( B) /$( MISSIONPACK) /cgame/cg_consolecmds.o \
$( B) /$( MISSIONPACK) /cgame/cg_newdraw.o \
$( B) /$( MISSIONPACK) /cgame/cg_draw.o \
$( B) /$( MISSIONPACK) /cgame/cg_drawtools.o \
$( B) /$( MISSIONPACK) /cgame/cg_effects.o \
$( B) /$( MISSIONPACK) /cgame/cg_ents.o \
$( B) /$( MISSIONPACK) /cgame/cg_event.o \
$( B) /$( MISSIONPACK) /cgame/cg_info.o \
$( B) /$( MISSIONPACK) /cgame/cg_localents.o \
$( B) /$( MISSIONPACK) /cgame/cg_marks.o \
$( B) /$( MISSIONPACK) /cgame/cg_particles.o \
$( B) /$( MISSIONPACK) /cgame/cg_players.o \
$( B) /$( MISSIONPACK) /cgame/cg_playerstate.o \
$( B) /$( MISSIONPACK) /cgame/cg_predict.o \
$( B) /$( MISSIONPACK) /cgame/cg_scoreboard.o \
$( B) /$( MISSIONPACK) /cgame/cg_servercmds.o \
$( B) /$( MISSIONPACK) /cgame/cg_snapshot.o \
$( B) /$( MISSIONPACK) /cgame/cg_view.o \
$( B) /$( MISSIONPACK) /cgame/cg_weapons.o \
$( B) /$( MISSIONPACK) /ui/ui_shared.o \
2005-10-26 19:45:21 +00:00
\
2011-10-28 19:12:43 +00:00
$( B) /$( MISSIONPACK) /qcommon/q_math.o \
$( B) /$( MISSIONPACK) /qcommon/q_shared.o
2005-08-26 17:39:27 +00:00
2011-10-28 19:12:43 +00:00
MPCGOBJ = $( MPCGOBJ_) $( B) /$( MISSIONPACK) /cgame/cg_syscalls.o
2007-09-22 20:32:11 +00:00
MPCGVMOBJ = $( MPCGOBJ_:%.o= %.asm)
2005-10-04 23:54:51 +00:00
2011-10-28 19:12:43 +00:00
$(B)/$(MISSIONPACK)/cgame$(SHLIBNAME) : $( MPCGOBJ )
2007-08-27 07:02:54 +00:00
$( echo_cmd) " LD $@ "
2008-11-02 17:32:21 +00:00
$( Q) $( CC) $( CFLAGS) $( SHLIBLDFLAGS) -o $@ $( MPCGOBJ)
2005-08-26 17:39:27 +00:00
2011-10-28 19:12:43 +00:00
$(B)/$(MISSIONPACK)/vm/cgame.qvm : $( MPCGVMOBJ ) $( CGDIR ) /cg_syscalls .asm $( Q 3ASM )
2007-08-27 07:02:54 +00:00
$( echo_cmd) " Q3ASM $@ "
$( Q) $( Q3ASM) -o $@ $( MPCGVMOBJ) $( CGDIR) /cg_syscalls.asm
2005-10-04 23:54:51 +00:00
2005-08-26 17:39:27 +00:00
#############################################################################
## BASEQ3 GAME
#############################################################################
2005-10-04 23:54:51 +00:00
Q3GOBJ_ = \
2011-10-28 19:12:43 +00:00
$( B) /$( BASEGAME) /game/g_main.o \
$( B) /$( BASEGAME) /game/ai_chat.o \
$( B) /$( BASEGAME) /game/ai_cmd.o \
$( B) /$( BASEGAME) /game/ai_dmnet.o \
$( B) /$( BASEGAME) /game/ai_dmq3.o \
$( B) /$( BASEGAME) /game/ai_main.o \
$( B) /$( BASEGAME) /game/ai_team.o \
$( B) /$( BASEGAME) /game/ai_vcmd.o \
$( B) /$( BASEGAME) /game/bg_misc.o \
$( B) /$( BASEGAME) /game/bg_pmove.o \
$( B) /$( BASEGAME) /game/bg_slidemove.o \
$( B) /$( BASEGAME) /game/bg_lib.o \
$( B) /$( BASEGAME) /game/g_active.o \
$( B) /$( BASEGAME) /game/g_arenas.o \
$( B) /$( BASEGAME) /game/g_bot.o \
$( B) /$( BASEGAME) /game/g_client.o \
$( B) /$( BASEGAME) /game/g_cmds.o \
$( B) /$( BASEGAME) /game/g_combat.o \
$( B) /$( BASEGAME) /game/g_items.o \
$( B) /$( BASEGAME) /game/g_mem.o \
$( B) /$( BASEGAME) /game/g_misc.o \
$( B) /$( BASEGAME) /game/g_missile.o \
$( B) /$( BASEGAME) /game/g_mover.o \
$( B) /$( BASEGAME) /game/g_session.o \
$( B) /$( BASEGAME) /game/g_spawn.o \
$( B) /$( BASEGAME) /game/g_svcmds.o \
$( B) /$( BASEGAME) /game/g_target.o \
$( B) /$( BASEGAME) /game/g_team.o \
$( B) /$( BASEGAME) /game/g_trigger.o \
$( B) /$( BASEGAME) /game/g_utils.o \
$( B) /$( BASEGAME) /game/g_weapon.o \
2005-09-23 01:59:42 +00:00
\
2011-10-28 19:12:43 +00:00
$( B) /$( BASEGAME) /qcommon/q_math.o \
$( B) /$( BASEGAME) /qcommon/q_shared.o
2005-08-26 17:39:27 +00:00
2011-10-28 19:12:43 +00:00
Q3GOBJ = $( Q3GOBJ_) $( B) /$( BASEGAME) /game/g_syscalls.o
2007-09-22 20:32:11 +00:00
Q3GVMOBJ = $( Q3GOBJ_:%.o= %.asm)
2005-10-04 23:54:51 +00:00
2011-10-28 19:12:43 +00:00
$(B)/$(BASEGAME)/qagame$(SHLIBNAME) : $( Q 3GOBJ )
2007-08-27 07:02:54 +00:00
$( echo_cmd) " LD $@ "
2008-11-02 17:32:21 +00:00
$( Q) $( CC) $( CFLAGS) $( SHLIBLDFLAGS) -o $@ $( Q3GOBJ)
2005-08-26 17:39:27 +00:00
2011-10-28 19:12:43 +00:00
$(B)/$(BASEGAME)/vm/qagame.qvm : $( Q 3GVMOBJ ) $( GDIR ) /g_syscalls .asm $( Q 3ASM )
2007-08-27 07:02:54 +00:00
$( echo_cmd) " Q3ASM $@ "
$( Q) $( Q3ASM) -o $@ $( Q3GVMOBJ) $( GDIR) /g_syscalls.asm
2005-10-04 23:54:51 +00:00
2005-08-26 17:39:27 +00:00
#############################################################################
## MISSIONPACK GAME
#############################################################################
2005-10-04 23:54:51 +00:00
MPGOBJ_ = \
2011-10-28 19:12:43 +00:00
$( B) /$( MISSIONPACK) /game/g_main.o \
$( B) /$( MISSIONPACK) /game/ai_chat.o \
$( B) /$( MISSIONPACK) /game/ai_cmd.o \
$( B) /$( MISSIONPACK) /game/ai_dmnet.o \
$( B) /$( MISSIONPACK) /game/ai_dmq3.o \
$( B) /$( MISSIONPACK) /game/ai_main.o \
$( B) /$( MISSIONPACK) /game/ai_team.o \
$( B) /$( MISSIONPACK) /game/ai_vcmd.o \
$( B) /$( MISSIONPACK) /game/bg_misc.o \
$( B) /$( MISSIONPACK) /game/bg_pmove.o \
$( B) /$( MISSIONPACK) /game/bg_slidemove.o \
$( B) /$( MISSIONPACK) /game/bg_lib.o \
$( B) /$( MISSIONPACK) /game/g_active.o \
$( B) /$( MISSIONPACK) /game/g_arenas.o \
$( B) /$( MISSIONPACK) /game/g_bot.o \
$( B) /$( MISSIONPACK) /game/g_client.o \
$( B) /$( MISSIONPACK) /game/g_cmds.o \
$( B) /$( MISSIONPACK) /game/g_combat.o \
$( B) /$( MISSIONPACK) /game/g_items.o \
$( B) /$( MISSIONPACK) /game/g_mem.o \
$( B) /$( MISSIONPACK) /game/g_misc.o \
$( B) /$( MISSIONPACK) /game/g_missile.o \
$( B) /$( MISSIONPACK) /game/g_mover.o \
$( B) /$( MISSIONPACK) /game/g_session.o \
$( B) /$( MISSIONPACK) /game/g_spawn.o \
$( B) /$( MISSIONPACK) /game/g_svcmds.o \
$( B) /$( MISSIONPACK) /game/g_target.o \
$( B) /$( MISSIONPACK) /game/g_team.o \
$( B) /$( MISSIONPACK) /game/g_trigger.o \
$( B) /$( MISSIONPACK) /game/g_utils.o \
$( B) /$( MISSIONPACK) /game/g_weapon.o \
2005-09-23 01:59:42 +00:00
\
2011-10-28 19:12:43 +00:00
$( B) /$( MISSIONPACK) /qcommon/q_math.o \
$( B) /$( MISSIONPACK) /qcommon/q_shared.o
2005-08-26 17:39:27 +00:00
2011-10-28 19:12:43 +00:00
MPGOBJ = $( MPGOBJ_) $( B) /$( MISSIONPACK) /game/g_syscalls.o
2007-09-22 20:32:11 +00:00
MPGVMOBJ = $( MPGOBJ_:%.o= %.asm)
2005-10-04 23:54:51 +00:00
2011-10-28 19:12:43 +00:00
$(B)/$(MISSIONPACK)/qagame$(SHLIBNAME) : $( MPGOBJ )
2007-08-27 07:02:54 +00:00
$( echo_cmd) " LD $@ "
2008-11-02 17:32:21 +00:00
$( Q) $( CC) $( CFLAGS) $( SHLIBLDFLAGS) -o $@ $( MPGOBJ)
2005-08-26 17:39:27 +00:00
2011-10-28 19:12:43 +00:00
$(B)/$(MISSIONPACK)/vm/qagame.qvm : $( MPGVMOBJ ) $( GDIR ) /g_syscalls .asm $( Q 3ASM )
2007-08-27 07:02:54 +00:00
$( echo_cmd) " Q3ASM $@ "
$( Q) $( Q3ASM) -o $@ $( MPGVMOBJ) $( GDIR) /g_syscalls.asm
2005-10-04 23:54:51 +00:00
2005-08-26 17:39:27 +00:00
#############################################################################
## BASEQ3 UI
#############################################################################
2005-10-04 23:54:51 +00:00
Q3UIOBJ_ = \
2011-10-28 19:12:43 +00:00
$( B) /$( BASEGAME) /ui/ui_main.o \
$( B) /$( BASEGAME) /ui/bg_misc.o \
$( B) /$( BASEGAME) /ui/bg_lib.o \
$( B) /$( BASEGAME) /ui/ui_addbots.o \
$( B) /$( BASEGAME) /ui/ui_atoms.o \
$( B) /$( BASEGAME) /ui/ui_cdkey.o \
$( B) /$( BASEGAME) /ui/ui_cinematics.o \
$( B) /$( BASEGAME) /ui/ui_confirm.o \
$( B) /$( BASEGAME) /ui/ui_connect.o \
$( B) /$( BASEGAME) /ui/ui_controls2.o \
$( B) /$( BASEGAME) /ui/ui_credits.o \
$( B) /$( BASEGAME) /ui/ui_demo2.o \
$( B) /$( BASEGAME) /ui/ui_display.o \
$( B) /$( BASEGAME) /ui/ui_gameinfo.o \
$( B) /$( BASEGAME) /ui/ui_ingame.o \
$( B) /$( BASEGAME) /ui/ui_loadconfig.o \
$( B) /$( BASEGAME) /ui/ui_menu.o \
$( B) /$( BASEGAME) /ui/ui_mfield.o \
$( B) /$( BASEGAME) /ui/ui_mods.o \
$( B) /$( BASEGAME) /ui/ui_network.o \
$( B) /$( BASEGAME) /ui/ui_options.o \
$( B) /$( BASEGAME) /ui/ui_playermodel.o \
$( B) /$( BASEGAME) /ui/ui_players.o \
$( B) /$( BASEGAME) /ui/ui_playersettings.o \
$( B) /$( BASEGAME) /ui/ui_preferences.o \
$( B) /$( BASEGAME) /ui/ui_qmenu.o \
$( B) /$( BASEGAME) /ui/ui_removebots.o \
$( B) /$( BASEGAME) /ui/ui_saveconfig.o \
$( B) /$( BASEGAME) /ui/ui_serverinfo.o \
$( B) /$( BASEGAME) /ui/ui_servers2.o \
$( B) /$( BASEGAME) /ui/ui_setup.o \
$( B) /$( BASEGAME) /ui/ui_sound.o \
$( B) /$( BASEGAME) /ui/ui_sparena.o \
$( B) /$( BASEGAME) /ui/ui_specifyserver.o \
$( B) /$( BASEGAME) /ui/ui_splevel.o \
$( B) /$( BASEGAME) /ui/ui_sppostgame.o \
$( B) /$( BASEGAME) /ui/ui_spskill.o \
$( B) /$( BASEGAME) /ui/ui_startserver.o \
$( B) /$( BASEGAME) /ui/ui_team.o \
$( B) /$( BASEGAME) /ui/ui_teamorders.o \
$( B) /$( BASEGAME) /ui/ui_video.o \
2005-10-04 23:54:51 +00:00
\
2011-10-28 19:12:43 +00:00
$( B) /$( BASEGAME) /qcommon/q_math.o \
$( B) /$( BASEGAME) /qcommon/q_shared.o
2005-10-04 23:54:51 +00:00
2011-10-28 19:12:43 +00:00
Q3UIOBJ = $( Q3UIOBJ_) $( B) /$( MISSIONPACK) /ui/ui_syscalls.o
2007-09-22 20:32:11 +00:00
Q3UIVMOBJ = $( Q3UIOBJ_:%.o= %.asm)
2005-08-26 17:39:27 +00:00
2011-10-28 19:12:43 +00:00
$(B)/$(BASEGAME)/ui$(SHLIBNAME) : $( Q 3UIOBJ )
2007-08-27 07:02:54 +00:00
$( echo_cmd) " LD $@ "
$( Q) $( CC) $( CFLAGS) $( SHLIBLDFLAGS) -o $@ $( Q3UIOBJ)
2005-08-26 17:39:27 +00:00
2011-10-28 19:12:43 +00:00
$(B)/$(BASEGAME)/vm/ui.qvm : $( Q 3UIVMOBJ ) $( UIDIR ) /ui_syscalls .asm $( Q 3ASM )
2007-08-27 07:02:54 +00:00
$( echo_cmd) " Q3ASM $@ "
$( Q) $( Q3ASM) -o $@ $( Q3UIVMOBJ) $( UIDIR) /ui_syscalls.asm
2005-10-04 23:54:51 +00:00
2005-08-26 17:39:27 +00:00
#############################################################################
## MISSIONPACK UI
#############################################################################
2005-10-04 23:54:51 +00:00
MPUIOBJ_ = \
2011-10-28 19:12:43 +00:00
$( B) /$( MISSIONPACK) /ui/ui_main.o \
$( B) /$( MISSIONPACK) /ui/ui_atoms.o \
$( B) /$( MISSIONPACK) /ui/ui_gameinfo.o \
$( B) /$( MISSIONPACK) /ui/ui_players.o \
$( B) /$( MISSIONPACK) /ui/ui_shared.o \
2005-09-23 01:59:42 +00:00
\
2011-10-28 19:12:43 +00:00
$( B) /$( MISSIONPACK) /ui/bg_misc.o \
$( B) /$( MISSIONPACK) /ui/bg_lib.o \
2005-09-23 01:59:42 +00:00
\
2011-10-28 19:12:43 +00:00
$( B) /$( MISSIONPACK) /qcommon/q_math.o \
$( B) /$( MISSIONPACK) /qcommon/q_shared.o
2005-08-26 17:39:27 +00:00
2011-10-28 19:12:43 +00:00
MPUIOBJ = $( MPUIOBJ_) $( B) /$( MISSIONPACK) /ui/ui_syscalls.o
2007-09-22 20:32:11 +00:00
MPUIVMOBJ = $( MPUIOBJ_:%.o= %.asm)
2005-10-04 23:54:51 +00:00
2011-10-28 19:12:43 +00:00
$(B)/$(MISSIONPACK)/ui$(SHLIBNAME) : $( MPUIOBJ )
2007-08-27 07:02:54 +00:00
$( echo_cmd) " LD $@ "
$( Q) $( CC) $( CFLAGS) $( SHLIBLDFLAGS) -o $@ $( MPUIOBJ)
2005-08-26 17:39:27 +00:00
2011-10-28 19:12:43 +00:00
$(B)/$(MISSIONPACK)/vm/ui.qvm : $( MPUIVMOBJ ) $( UIDIR ) /ui_syscalls .asm $( Q 3ASM )
2007-08-27 07:02:54 +00:00
$( echo_cmd) " Q3ASM $@ "
$( Q) $( Q3ASM) -o $@ $( MPUIVMOBJ) $( UIDIR) /ui_syscalls.asm
2005-10-04 23:54:51 +00:00
2005-08-26 17:39:27 +00:00
2007-07-14 23:57:04 +00:00
#############################################################################
## CLIENT/SERVER RULES
#############################################################################
2007-09-05 18:17:46 +00:00
$(B)/client/%.o : $( ASMDIR ) /%.s
2007-07-14 23:57:04 +00:00
$( DO_AS)
2011-06-13 09:56:39 +00:00
# k8 so inline assembler knows about SSE
$(B)/client/%.o : $( ASMDIR ) /%.c
$( DO_CC) -march= k8
2018-05-12 18:14:47 +00:00
$(B)/client/snd_altivec.o : $( CDIR ) /snd_altivec .c
$( DO_CC_ALTIVEC)
2007-07-14 23:57:04 +00:00
$(B)/client/%.o : $( CDIR ) /%.c
$( DO_CC)
$(B)/client/%.o : $( SDIR ) /%.c
$( DO_CC)
$(B)/client/%.o : $( CMDIR ) /%.c
$( DO_CC)
$(B)/client/%.o : $( BLIBDIR ) /%.c
$( DO_BOT_CC)
2013-02-18 00:56:06 +00:00
$(B)/client/%.o : $( OGGDIR ) /src /%.c
$( DO_CC)
2014-02-08 08:26:03 +00:00
$(B)/client/vorbis/%.o : $( VORBISDIR ) /lib /%.c
$( DO_CC)
2013-02-18 00:32:05 +00:00
$(B)/client/opus/%.o : $( OPUSDIR ) /src /%.c
$( DO_CC)
$(B)/client/opus/%.o : $( OPUSDIR ) /celt /%.c
$( DO_CC)
$(B)/client/opus/%.o : $( OPUSDIR ) /silk /%.c
$( DO_CC)
$(B)/client/opus/%.o : $( OPUSDIR ) /silk /float /%.c
$( DO_CC)
$(B)/client/%.o : $( OPUSFILEDIR ) /src /%.c
$( DO_CC)
2009-10-19 14:00:16 +00:00
$(B)/client/%.o : $( ZDIR ) /%.c
$( DO_CC)
2007-09-05 18:17:46 +00:00
$(B)/client/%.o : $( SDLDIR ) /%.c
2007-07-14 23:57:04 +00:00
$( DO_CC)
2007-09-05 18:17:46 +00:00
$(B)/client/%.o : $( SYSDIR ) /%.c
2007-07-14 23:57:04 +00:00
$( DO_CC)
2009-09-15 05:38:27 +00:00
$(B)/client/%.o : $( SYSDIR ) /%.m
$( DO_CC)
2017-09-08 02:01:23 +00:00
$(B)/client/win_resource.o : $( SYSDIR ) /win_resource .rc $( SYSDIR ) /win_manifest .xml
2007-07-14 23:57:04 +00:00
$( DO_WINDRES)
2013-02-15 23:46:37 +00:00
$(B)/renderergl1/%.o : $( CMDIR ) /%.c
2011-08-01 01:19:55 +00:00
$( DO_REF_CC)
2013-02-15 23:46:37 +00:00
$(B)/renderergl1/%.o : $( SDLDIR ) /%.c
2011-08-01 01:19:55 +00:00
$( DO_REF_CC)
2013-02-15 23:46:37 +00:00
$(B)/renderergl1/%.o : $( JPDIR ) /%.c
2011-08-01 01:19:55 +00:00
$( DO_REF_CC)
2013-02-16 12:14:48 +00:00
$(B)/renderergl1/%.o : $( RCOMMONDIR ) /%.c
2011-08-01 01:19:55 +00:00
$( DO_REF_CC)
2013-02-15 23:46:37 +00:00
$(B)/renderergl1/%.o : $( RGL 1DIR ) /%.c
2011-08-01 01:19:55 +00:00
$( DO_REF_CC)
2012-12-04 01:56:52 +00:00
2018-05-12 18:14:47 +00:00
$(B)/renderergl1/tr_altivec.o : $( RGL 1DIR ) /tr_altivec .c
$( DO_REF_CC_ALTIVEC)
2020-09-08 10:04:53 +00:00
$(B)/renderergl2/glsl/%.c : $( RGL 2DIR ) /glsl /%.glsl $( STRINGIFY )
2012-12-04 01:56:52 +00:00
$( DO_REF_STR)
2013-02-15 23:46:37 +00:00
$(B)/renderergl2/glsl/%.o : $( B ) /renderergl 2/glsl /%.c
2012-12-04 01:56:52 +00:00
$( DO_REF_CC)
2013-02-16 12:14:48 +00:00
$(B)/renderergl2/%.o : $( RCOMMONDIR ) /%.c
2012-12-04 01:56:52 +00:00
$( DO_REF_CC)
2013-02-15 23:46:37 +00:00
$(B)/renderergl2/%.o : $( RGL 2DIR ) /%.c
2012-10-26 01:23:06 +00:00
$( DO_REF_CC)
2011-08-01 01:19:55 +00:00
2007-09-05 18:17:46 +00:00
$(B)/ded/%.o : $( ASMDIR ) /%.s
2007-07-14 23:57:04 +00:00
$( DO_AS)
2011-06-13 09:56:39 +00:00
# k8 so inline assembler knows about SSE
$(B)/ded/%.o : $( ASMDIR ) /%.c
$( DO_CC) -march= k8
2007-07-14 23:57:04 +00:00
$(B)/ded/%.o : $( SDIR ) /%.c
$( DO_DED_CC)
$(B)/ded/%.o : $( CMDIR ) /%.c
$( DO_DED_CC)
2009-10-19 14:00:16 +00:00
$(B)/ded/%.o : $( ZDIR ) /%.c
$( DO_DED_CC)
2007-07-14 23:57:04 +00:00
$(B)/ded/%.o : $( BLIBDIR ) /%.c
$( DO_BOT_CC)
2007-09-05 18:17:46 +00:00
$(B)/ded/%.o : $( SYSDIR ) /%.c
2007-07-14 23:57:04 +00:00
$( DO_DED_CC)
2009-09-15 05:38:27 +00:00
$(B)/ded/%.o : $( SYSDIR ) /%.m
$( DO_DED_CC)
2017-09-08 02:01:23 +00:00
$(B)/ded/win_resource.o : $( SYSDIR ) /win_resource .rc $( SYSDIR ) /win_manifest .xml
2007-09-06 20:31:30 +00:00
$( DO_WINDRES)
2007-07-14 23:57:04 +00:00
$(B)/ded/%.o : $( NDIR ) /%.c
$( DO_DED_CC)
2013-01-03 21:08:28 +00:00
# Extra dependencies to ensure the git version is incorporated
i f e q ( $( USE_GIT ) , 1 )
2017-03-30 21:04:53 +00:00
$( B) /client/cl_console.o : .git
$( B) /client/common.o : .git
$( B) /ded/common.o : .git
2007-07-14 23:57:04 +00:00
e n d i f
2005-10-04 17:45:22 +00:00
#############################################################################
## GAME MODULE RULES
#############################################################################
2011-10-28 19:12:43 +00:00
$(B)/$(BASEGAME)/cgame/bg_%.o : $( GDIR ) /bg_ %.c
2008-03-17 16:47:40 +00:00
$( DO_CGAME_CC)
2011-10-28 19:12:43 +00:00
$(B)/$(BASEGAME)/cgame/%.o : $( CGDIR ) /%.c
2008-03-17 16:47:40 +00:00
$( DO_CGAME_CC)
2011-10-28 19:12:43 +00:00
$(B)/$(BASEGAME)/cgame/bg_%.asm : $( GDIR ) /bg_ %.c $( Q 3LCC )
2008-03-17 16:47:40 +00:00
$( DO_CGAME_Q3LCC)
2005-10-04 17:45:22 +00:00
2011-10-28 19:12:43 +00:00
$(B)/$(BASEGAME)/cgame/%.asm : $( CGDIR ) /%.c $( Q 3LCC )
2008-03-17 16:47:40 +00:00
$( DO_CGAME_Q3LCC)
2011-10-28 19:12:43 +00:00
$(B)/$(MISSIONPACK)/cgame/bg_%.o : $( GDIR ) /bg_ %.c
2008-03-17 16:47:40 +00:00
$( DO_CGAME_CC_MISSIONPACK)
2005-10-04 23:54:51 +00:00
2011-10-28 19:12:43 +00:00
$(B)/$(MISSIONPACK)/cgame/%.o : $( CGDIR ) /%.c
2008-03-17 16:47:40 +00:00
$( DO_CGAME_CC_MISSIONPACK)
2011-10-28 19:12:43 +00:00
$(B)/$(MISSIONPACK)/cgame/bg_%.asm : $( GDIR ) /bg_ %.c $( Q 3LCC )
2008-03-17 16:47:40 +00:00
$( DO_CGAME_Q3LCC_MISSIONPACK)
2005-10-04 17:45:22 +00:00
2011-10-28 19:12:43 +00:00
$(B)/$(MISSIONPACK)/cgame/%.asm : $( CGDIR ) /%.c $( Q 3LCC )
2008-03-17 16:47:40 +00:00
$( DO_CGAME_Q3LCC_MISSIONPACK)
2005-10-04 23:54:51 +00:00
2011-10-28 19:12:43 +00:00
$(B)/$(BASEGAME)/game/%.o : $( GDIR ) /%.c
2008-03-17 16:47:40 +00:00
$( DO_GAME_CC)
2005-10-04 17:45:22 +00:00
2011-10-28 19:12:43 +00:00
$(B)/$(BASEGAME)/game/%.asm : $( GDIR ) /%.c $( Q 3LCC )
2008-03-17 16:47:40 +00:00
$( DO_GAME_Q3LCC)
2005-10-04 23:54:51 +00:00
2011-10-28 19:12:43 +00:00
$(B)/$(MISSIONPACK)/game/%.o : $( GDIR ) /%.c
2008-03-17 16:47:40 +00:00
$( DO_GAME_CC_MISSIONPACK)
2005-10-04 17:45:22 +00:00
2011-10-28 19:12:43 +00:00
$(B)/$(MISSIONPACK)/game/%.asm : $( GDIR ) /%.c $( Q 3LCC )
2008-03-17 16:47:40 +00:00
$( DO_GAME_Q3LCC_MISSIONPACK)
2005-10-04 23:54:51 +00:00
2011-10-28 19:12:43 +00:00
$(B)/$(BASEGAME)/ui/bg_%.o : $( GDIR ) /bg_ %.c
2008-03-17 16:47:40 +00:00
$( DO_UI_CC)
2005-10-04 23:54:51 +00:00
2011-10-28 19:12:43 +00:00
$(B)/$(BASEGAME)/ui/%.o : $( Q 3UIDIR ) /%.c
2008-03-17 16:47:40 +00:00
$( DO_UI_CC)
2011-10-28 19:12:43 +00:00
$(B)/$(BASEGAME)/ui/bg_%.asm : $( GDIR ) /bg_ %.c $( Q 3LCC )
2008-03-17 16:47:40 +00:00
$( DO_UI_Q3LCC)
2005-10-04 17:45:22 +00:00
2011-10-28 19:12:43 +00:00
$(B)/$(BASEGAME)/ui/%.asm : $( Q 3UIDIR ) /%.c $( Q 3LCC )
2008-03-17 16:47:40 +00:00
$( DO_UI_Q3LCC)
2011-10-28 19:12:43 +00:00
$(B)/$(MISSIONPACK)/ui/bg_%.o : $( GDIR ) /bg_ %.c
2008-03-17 16:47:40 +00:00
$( DO_UI_CC_MISSIONPACK)
2005-10-04 23:54:51 +00:00
2011-10-28 19:12:43 +00:00
$(B)/$(MISSIONPACK)/ui/%.o : $( UIDIR ) /%.c
2008-03-17 16:47:40 +00:00
$( DO_UI_CC_MISSIONPACK)
2011-10-28 19:12:43 +00:00
$(B)/$(MISSIONPACK)/ui/bg_%.asm : $( GDIR ) /bg_ %.c $( Q 3LCC )
2008-03-17 16:47:40 +00:00
$( DO_UI_Q3LCC_MISSIONPACK)
2005-10-04 17:45:22 +00:00
2011-10-28 19:12:43 +00:00
$(B)/$(MISSIONPACK)/ui/%.asm : $( UIDIR ) /%.c $( Q 3LCC )
2008-03-17 16:47:40 +00:00
$( DO_UI_Q3LCC_MISSIONPACK)
2005-10-04 23:54:51 +00:00
2005-10-04 17:45:22 +00:00
2011-10-28 19:12:43 +00:00
$(B)/$(BASEGAME)/qcommon/%.o : $( CMDIR ) /%.c
2005-10-26 19:45:21 +00:00
$( DO_SHLIB_CC)
2011-10-28 19:12:43 +00:00
$(B)/$(BASEGAME)/qcommon/%.asm : $( CMDIR ) /%.c $( Q 3LCC )
2005-10-26 19:45:21 +00:00
$( DO_Q3LCC)
2011-10-28 19:12:43 +00:00
$(B)/$(MISSIONPACK)/qcommon/%.o : $( CMDIR ) /%.c
2007-07-16 23:30:53 +00:00
$( DO_SHLIB_CC_MISSIONPACK)
2005-10-26 19:45:21 +00:00
2011-10-28 19:12:43 +00:00
$(B)/$(MISSIONPACK)/qcommon/%.asm : $( CMDIR ) /%.c $( Q 3LCC )
2007-07-16 23:30:53 +00:00
$( DO_Q3LCC_MISSIONPACK)
2005-10-26 19:45:21 +00:00
2005-08-26 17:39:27 +00:00
#############################################################################
# MISC
#############################################################################
2013-01-24 22:53:08 +00:00
OBJ = $( Q3OBJ) $( Q3ROBJ) $( Q3R2OBJ) $( Q3DOBJ) $( JPGOBJ) \
2007-09-12 23:37:33 +00:00
$( MPGOBJ) $( Q3GOBJ) $( Q3CGOBJ) $( MPCGOBJ) $( Q3UIOBJ) $( MPUIOBJ) \
$( MPGVMOBJ) $( Q3GVMOBJ) $( Q3CGVMOBJ) $( MPCGVMOBJ) $( Q3UIVMOBJ) $( MPUIVMOBJ)
TOOLSOBJ = $( LBURGOBJ) $( Q3CPPOBJ) $( Q3RCCOBJ) $( Q3LCCOBJ) $( Q3ASMOBJ)
2012-12-04 01:56:52 +00:00
STRINGOBJ = $( Q3R2STRINGOBJ)
2007-09-12 23:37:33 +00:00
2007-07-16 21:34:05 +00:00
copyfiles : release
2011-12-10 00:37:59 +00:00
@if [ ! -d $( COPYDIR) /$( BASEGAME) ] ; then echo "You need to set COPYDIR to where your Quake3 data is!" ; fi
2011-08-11 05:51:08 +00:00
i f n e q ( $( BUILD_GAME_SO ) , 0 )
2011-10-28 19:12:43 +00:00
ifneq ( $( BUILD_BASEGAME) ,0)
2017-10-16 14:44:06 +00:00
-$( MKDIR) -m 0755 $( COPYDIR) /$( BASEGAME)
2011-10-28 19:12:43 +00:00
endif
2011-08-11 05:51:08 +00:00
ifneq ( $( BUILD_MISSIONPACK) ,0)
2017-10-16 14:44:06 +00:00
-$( MKDIR) -m 0755 $( COPYDIR) /$( MISSIONPACK)
2011-08-11 05:51:08 +00:00
endif
e n d i f
2006-04-29 19:11:37 +00:00
i f n e q ( $( BUILD_CLIENT ) , 0 )
2011-10-28 19:12:43 +00:00
$( INSTALL) $( STRIP_FLAG) -m 0755 $( BR) /$( CLIENTBIN) $( FULLBINEXT) $( COPYBINDIR) /$( CLIENTBIN) $( FULLBINEXT)
2011-08-11 05:51:08 +00:00
ifneq ( $( USE_RENDERER_DLOPEN) ,0)
2011-08-01 01:19:55 +00:00
$( INSTALL) $( STRIP_FLAG) -m 0755 $( BR) /renderer_opengl1_$( SHLIBNAME) $( COPYBINDIR) /renderer_opengl1_$( SHLIBNAME)
2013-02-15 23:46:37 +00:00
ifneq ( $( BUILD_RENDERER_OPENGL2) ,0)
$( INSTALL) $( STRIP_FLAG) -m 0755 $( BR) /renderer_opengl2_$( SHLIBNAME) $( COPYBINDIR) /renderer_opengl2_$( SHLIBNAME)
2012-10-26 01:23:06 +00:00
endif
2013-12-16 16:00:06 +00:00
else
ifneq ( $( BUILD_RENDERER_OPENGL2) ,0)
$( INSTALL) $( STRIP_FLAG) -m 0755 $( BR) /$( CLIENTBIN) _opengl2$( FULLBINEXT) $( COPYBINDIR) /$( CLIENTBIN) _opengl2$( FULLBINEXT)
endif
2011-08-11 05:51:08 +00:00
endif
2006-04-29 19:11:37 +00:00
e n d i f
2005-12-13 02:35:00 +00:00
2006-04-29 19:11:37 +00:00
i f n e q ( $( BUILD_SERVER ) , 0 )
2011-10-28 19:12:43 +00:00
@if [ -f $( BR) /$( SERVERBIN) $( FULLBINEXT) ] ; then \
$( INSTALL) $( STRIP_FLAG) -m 0755 $( BR) /$( SERVERBIN) $( FULLBINEXT) $( COPYBINDIR) /$( SERVERBIN) $( FULLBINEXT) ; \
2006-04-29 19:11:37 +00:00
fi
e n d i f
2007-07-14 23:57:04 +00:00
i f n e q ( $( BUILD_GAME_SO ) , 0 )
2011-10-28 19:12:43 +00:00
ifneq ( $( BUILD_BASEGAME) ,0)
$( INSTALL) $( STRIP_FLAG) -m 0755 $( BR) /$( BASEGAME) /cgame$( SHLIBNAME) \
$( COPYDIR) /$( BASEGAME) /.
$( INSTALL) $( STRIP_FLAG) -m 0755 $( BR) /$( BASEGAME) /qagame$( SHLIBNAME) \
$( COPYDIR) /$( BASEGAME) /.
$( INSTALL) $( STRIP_FLAG) -m 0755 $( BR) /$( BASEGAME) /ui$( SHLIBNAME) \
$( COPYDIR) /$( BASEGAME) /.
endif
2008-08-22 22:47:26 +00:00
ifneq ( $( BUILD_MISSIONPACK) ,0)
2011-10-28 19:12:43 +00:00
$( INSTALL) $( STRIP_FLAG) -m 0755 $( BR) /$( MISSIONPACK) /cgame$( SHLIBNAME) \
$( COPYDIR) /$( MISSIONPACK) /.
$( INSTALL) $( STRIP_FLAG) -m 0755 $( BR) /$( MISSIONPACK) /qagame$( SHLIBNAME) \
$( COPYDIR) /$( MISSIONPACK) /.
$( INSTALL) $( STRIP_FLAG) -m 0755 $( BR) /$( MISSIONPACK) /ui$( SHLIBNAME) \
$( COPYDIR) /$( MISSIONPACK) /.
2008-08-22 22:47:26 +00:00
endif
2006-04-29 19:11:37 +00:00
e n d i f
2006-03-24 21:48:44 +00:00
clean : clean -debug clean -release
2008-04-15 14:19:03 +00:00
i f e q ( $( PLATFORM ) , m i n g w 3 2 )
@$( MAKE) -C $( NSISDIR) clean
e l s e
2007-07-15 12:08:11 +00:00
@$( MAKE) -C $( LOKISETUPDIR) clean
2008-04-15 14:19:03 +00:00
e n d i f
2005-08-26 17:39:27 +00:00
clean-debug :
2007-07-16 21:34:05 +00:00
@$( MAKE) clean2 B = $( BD)
2005-08-26 17:39:27 +00:00
clean-release :
2007-07-16 21:34:05 +00:00
@$( MAKE) clean2 B = $( BR)
2005-08-26 17:39:27 +00:00
2007-09-12 23:37:33 +00:00
clean2 :
@echo " CLEAN $( B) "
@rm -f $( OBJ)
@rm -f $( OBJ_D_FILES)
2012-12-04 01:56:52 +00:00
@rm -f $( STRINGOBJ)
2024-06-06 23:26:07 +00:00
@rm -f $( EMSCRIPTENOBJ)
2007-09-12 23:37:33 +00:00
@rm -f $( TARGETS)
toolsclean : toolsclean -debug toolsclean -release
toolsclean-debug :
@$( MAKE) toolsclean2 B = $( BD)
toolsclean-release :
@$( MAKE) toolsclean2 B = $( BR)
toolsclean2 :
@echo " TOOLS_CLEAN $( B) "
@rm -f $( TOOLSOBJ)
@rm -f $( TOOLSOBJ_D_FILES)
2020-09-08 10:04:53 +00:00
@rm -f $( LBURG) $( DAGCHECK_C) $( Q3RCC) $( Q3CPP) $( Q3LCC) $( Q3ASM) $( STRINGIFY)
2005-10-04 23:54:51 +00:00
2006-01-18 16:51:47 +00:00
distclean : clean toolsclean
2007-07-15 12:08:11 +00:00
@rm -rf $( BUILD_DIR)
2006-01-18 16:51:47 +00:00
2007-07-16 21:34:05 +00:00
installer : release
2015-01-30 21:52:53 +00:00
i f d e f M I N G W
2011-08-29 15:17:47 +00:00
@$( MAKE) VERSION = $( VERSION) -C $( NSISDIR) V = $( V) \
2012-02-07 09:29:13 +00:00
SDLDLL = $( SDLDLL) \
2011-08-29 15:17:47 +00:00
USE_RENDERER_DLOPEN = $( USE_RENDERER_DLOPEN) \
USE_OPENAL_DLOPEN = $( USE_OPENAL_DLOPEN) \
USE_CURL_DLOPEN = $( USE_CURL_DLOPEN) \
2013-02-18 00:32:05 +00:00
USE_INTERNAL_OPUS = $( USE_INTERNAL_OPUS) \
2011-08-29 15:17:47 +00:00
USE_INTERNAL_ZLIB = $( USE_INTERNAL_ZLIB) \
USE_INTERNAL_JPEG = $( USE_INTERNAL_JPEG)
2008-04-15 14:19:03 +00:00
e l s e
2007-08-27 07:02:54 +00:00
@$( MAKE) VERSION = $( VERSION) -C $( LOKISETUPDIR) V = $( V)
2008-04-15 14:19:03 +00:00
e n d i f
2006-01-15 21:45:57 +00:00
dist :
2013-01-05 15:35:32 +00:00
git archive --format zip --output $( CLIENTBIN) -$( VERSION) .zip HEAD
2005-11-27 15:34:16 +00:00
2005-09-27 16:35:25 +00:00
#############################################################################
2005-09-29 05:25:26 +00:00
# DEPENDENCIES
2005-09-27 16:35:25 +00:00
#############################################################################
2009-10-13 15:22:43 +00:00
i f n e q ( $( B ) , )
OBJ_D_FILES = $( filter %.d,$( OBJ:%.o= %.d) )
TOOLSOBJ_D_FILES = $( filter %.d,$( TOOLSOBJ:%.o= %.d) )
-include $( OBJ_D_FILES) $( TOOLSOBJ_D_FILES)
e n d i f
2006-01-15 21:45:57 +00:00
2007-07-16 21:34:05 +00:00
.PHONY : all clean clean 2 clean -debug clean -release copyfiles \
2007-11-25 23:41:01 +00:00
debug default dist distclean installer makedirs \
2007-09-12 23:37:33 +00:00
release targets \
2009-10-13 15:22:43 +00:00
toolsclean toolsclean2 toolsclean-debug toolsclean-release \
$( OBJ_D_FILES) $( TOOLSOBJ_D_FILES)
2013-03-26 20:58:55 +00:00
# If the target name contains "clean", don't do a parallel build
i f n e q ( $( findstring clean , $ ( MAKECMDGOALS ) ) , )
.NOTPARALLEL :
e n d i f