From 32625ef4e2f4b4fa1109c0c26103f3727c79167c Mon Sep 17 00:00:00 2001 From: myT Date: Fri, 30 Dec 2016 23:50:10 +0100 Subject: [PATCH] using the QUAKE3DIR env var to locate the output/debug directory removed the legacy id build files and renamed the sys directory to build the makefiles and intermediate build files are now under the build directory --- .gitignore | 8 +- Makefile | 1428 ----------------------------------- SConstruct | 732 ------------------ {sys => build}/premake5.lua | 69 +- sys/scons/SConscript.game | 35 - sys/scons/SConscript.idlib | 50 -- sys/scons/scons_utils.py | 205 ----- 7 files changed, 33 insertions(+), 2494 deletions(-) delete mode 100644 Makefile delete mode 100644 SConstruct rename {sys => build}/premake5.lua (84%) delete mode 100644 sys/scons/SConscript.game delete mode 100644 sys/scons/SConscript.idlib delete mode 100644 sys/scons/scons_utils.py diff --git a/.gitignore b/.gitignore index bfc00ab..8809938 100644 --- a/.gitignore +++ b/.gitignore @@ -6,10 +6,8 @@ *.ncb *.pdb *.idb -code/freetype/objs/ -code/freetype/builds/ code/qcommon/git.h -code/win32/msvc*/build/ -code/win32/msvc*/*user* -code/win32/msvc*/*sdf code/win32/winquake.res +build/vs*/*sdf +build/vs*/*.user +build/*/obj \ No newline at end of file diff --git a/Makefile b/Makefile deleted file mode 100644 index b7867b8..0000000 --- a/Makefile +++ /dev/null @@ -1,1428 +0,0 @@ -# -# Quake3 Unix Makefile -# -# GNU Make required -# - -COMPILE_PLATFORM=$(shell uname|sed -e s/_.*//|tr '[:upper:]' '[:lower:]'|sed -e 's/\//_/g') - -COMPILE_ARCH=$(shell uname -m | sed -e s/i.86/i386/) - -ifeq ($(COMPILE_PLATFORM),sunos) - # Solaris uname and GNU uname differ - COMPILE_ARCH=$(shell uname -p | sed -e s/i.86/i386/) -endif -ifeq ($(COMPILE_PLATFORM),darwin) - # Apple does some things a little differently... - COMPILE_ARCH=$(shell uname -p | sed -e s/i.86/i386/) -endif - -ifeq ($(COMPILE_PLATFORM),mingw32) - ifeq ($(COMPILE_ARCH),i386) - COMPILE_ARCH=x86 - endif -endif - -BUILD_SERVER = -BUILD_CLIENT = - -# needs stl, cbf to fight with gcc -BUILD_TOOLS = 0 - -# this should probably be deleted/merged anyway -BUILD_CLIENT_SMP = 0 - - -############################################################################# -# -# If you require a different configuration from the defaults below, create a -# 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. -# -############################################################################# --include Makefile.local - -ifndef PLATFORM -PLATFORM=$(COMPILE_PLATFORM) -endif -export PLATFORM - -ifndef ARCH -ARCH=$(COMPILE_ARCH) -endif - -ifeq ($(ARCH),powerpc) - ARCH=ppc -endif -export ARCH - -ifneq ($(PLATFORM),$(COMPILE_PLATFORM)) - CROSS_COMPILING=1 -else - CROSS_COMPILING=0 - - ifneq ($(ARCH),$(COMPILE_ARCH)) - CROSS_COMPILING=1 - endif -endif -export CROSS_COMPILING - -ifndef COPYDIR -COPYDIR="/usr/local/games/quake3" -endif - -ifndef COPYBINDIR -COPYBINDIR=$(COPYDIR) -endif - -ifndef MOUNT_DIR -MOUNT_DIR=code -endif - -ifndef BUILD_DIR -BUILD_DIR=build -endif - -ifndef TEMPDIR -TEMPDIR=/tmp -endif - -ifndef GENERATE_DEPENDENCIES -GENERATE_DEPENDENCIES=1 -endif - -ifndef USE_CCACHE -USE_CCACHE=0 -endif -export USE_CCACHE - -ifndef USE_SDL -USE_SDL=1 -endif - -ifndef USE_CURL -USE_CURL=0 -endif - -ifndef USE_CURL_DLOPEN - ifeq ($(PLATFORM),mingw32) - USE_CURL_DLOPEN=0 - else - USE_CURL_DLOPEN=1 - endif -endif - -ifndef USE_CODEC_VORBIS -USE_CODEC_VORBIS=0 -endif - -############################################################################# - -BD=$(BUILD_DIR)/debug-$(PLATFORM)-$(ARCH) -BR=$(BUILD_DIR)/release-$(PLATFORM)-$(ARCH) -CDIR=$(MOUNT_DIR)/client -SDIR=$(MOUNT_DIR)/server -RDIR=$(MOUNT_DIR)/renderer -CMDIR=$(MOUNT_DIR)/qcommon -UDIR=$(MOUNT_DIR)/unix -W32DIR=$(MOUNT_DIR)/win32 -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 -JPDIR=$(MOUNT_DIR)/jpeg-6 -TOOLSDIR=$(MOUNT_DIR)/tools -LOKISETUPDIR=$(UDIR)/setup -SDLHDIR=$(MOUNT_DIR)/SDL12 -LIBSDIR=$(MOUNT_DIR)/libs - -# extract version info -VERSION=$(shell grep Q3_VERSION $(CMDIR)/q_shared.h | \ - sed -e 's/.*".* \([^ ]*\)"/\1/') - -ifeq ($(wildcard .svn),.svn) - SVN_VERSION=$(VERSION)_SVN$(shell LANG=C svnversion .) -else - SVN_VERSION=$(VERSION) -endif - - -############################################################################# -# SETUP AND BUILD -- LINUX -############################################################################# - -## Defaults -VM_PPC= - -LIB=lib - -INSTALL=install -MKDIR=mkdir - -ifeq ($(PLATFORM),linux) - - CC=g++ - - ifeq ($(ARCH),alpha) - ARCH=axp - else - ifeq ($(ARCH),x86_64) - ARCH=i386 - else - ifeq ($(ARCH),ppc64) - LIB=lib64 - else - ifeq ($(ARCH),s390x) - LIB=lib64 - endif - endif - endif - endif - - BASE_CFLAGS = -Wall -Weffc++ -fno-operator-names -fno-strict-aliasing -Wimplicit -pipe - BASE_CFLAGS += $(shell freetype-config --cflags) - CLIENT_LDFLAGS += -lfreetype $(shell freetype-config --libs) - - ifeq ($(USE_CURL),1) - BASE_CFLAGS += -DUSE_CURL=1 - ifeq ($(USE_CURL_DLOPEN),1) - BASE_CFLAGS += -DUSE_CURL_DLOPEN=1 - endif - endif - - ifeq ($(USE_CODEC_VORBIS),1) - BASE_CFLAGS += -DUSE_CODEC_VORBIS=1 - endif - - ifeq ($(USE_SDL),1) - BASE_CFLAGS += -DUSE_SDL_VIDEO=1 -DUSE_SDL_SOUND=1 $(shell sdl-config --cflags) - GL_CFLAGS = - else - GL_CFLAGS = -I/usr/X11R6/include - endif - - OPTIMIZE = -O2 -ffast-math -funroll-loops -fomit-frame-pointer - - ifeq ($(ARCH),x86_64) - OPTIMIZE = -O2 -fomit-frame-pointer -ffast-math -funroll-loops \ - -falign-loops=2 -falign-jumps=2 -falign-functions=2 \ - -fstrength-reduce - # experimental x86_64 jit compiler! you need GNU as - HAVE_VM_COMPILED = true - else - ifeq ($(ARCH),i386) - OPTIMIZE = -O2 -march=i586 -fomit-frame-pointer -ffast-math \ - -funroll-loops -falign-loops=2 -falign-jumps=2 \ - -falign-functions=2 -fstrength-reduce - HAVE_VM_COMPILED=true - else - ifeq ($(ARCH),ppc) - BASE_CFLAGS += -maltivec - ifneq ($(VM_PPC),) - HAVE_VM_COMPILED=true - endif - endif - endif - endif - - # -fomit-frame-pointer on g++ causes crashes, ty Timbo - OPTIMIZE = -O2 -march=i586 -ffast-math -funroll-loops - - ifneq ($(HAVE_VM_COMPILED),true) - BASE_CFLAGS += -DNO_VM_COMPILED - endif - - DEBUG_CFLAGS = $(BASE_CFLAGS) -g -O0 - - RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG $(OPTIMIZE) - - SHLIBEXT=so - SHLIBCFLAGS=-fPIC - SHLIBLDFLAGS=-shared $(LDFLAGS) - - THREAD_LDFLAGS=-lpthread - LDFLAGS=-ldl -lm -lGL - - ifeq ($(USE_SDL),1) - CLIENT_LDFLAGS += $(shell sdl-config --libs) - else - CLIENT_LDFLAGS += -L/usr/X11R6/$(LIB) -lX11 -lXext -lXxf86dga -lXxf86vm - endif - - ifeq ($(USE_CURL),1) - ifneq ($(USE_CURL_DLOPEN),1) - CLIENT_LDFLAGS += -lcurl - endif - endif - - ifeq ($(USE_CODEC_VORBIS),1) - CLIENT_LDFLAGS += -lvorbisfile -lvorbis -logg - endif - - ifeq ($(ARCH),i386) - # linux32 make ... - BASE_CFLAGS += -m32 - LDFLAGS+=-m32 - endif - -else # ifeq Linux - -############################################################################# -# SETUP AND BUILD -- MAC OS X -############################################################################# - -ifeq ($(PLATFORM),darwin) - CC=gcc - - # !!! FIXME: calling conventions are still broken! See Bugzilla #2519 - VM_PPC=vm_ppc_new - - BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes - BASE_CFLAGS += -DMACOS_X -fno-common -pipe - - # Always include debug symbols...you can strip the binary later... - BASE_CFLAGS += -gfull - - ifeq ($(USE_CURL),1) - BASE_CFLAGS += -DUSE_CURL=1 - ifneq ($(USE_CURL_DLOPEN),1) - CLIENT_LDFLAGS += -lcurl - else - BASE_CFLAGS += -DUSE_CURL_DLOPEN=1 - endif - endif - - ifeq ($(USE_CODEC_VORBIS),1) - BASE_CFLAGS += -DUSE_CODEC_VORBIS=1 - endif - - ifeq ($(USE_SDL),1) - BASE_CFLAGS += -DUSE_SDL_VIDEO=1 -DUSE_SDL_SOUND=1 -D_THREAD_SAFE=1 -I$(SDLHDIR)/include - GL_CFLAGS = - endif - - OPTIMIZE = -O2 -ffast-math -falign-loops=16 - - ifeq ($(ARCH),ppc) - BASE_CFLAGS += -faltivec - ifneq ($(VM_PPC),) - HAVE_VM_COMPILED=true - endif - endif - - ifeq ($(ARCH),i386) - # !!! FIXME: x86-specific flags here... - endif - - ifneq ($(HAVE_VM_COMPILED),true) - BASE_CFLAGS += -DNO_VM_COMPILED - endif - - DEBUG_CFLAGS = $(BASE_CFLAGS) -g -O0 - - RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG $(OPTIMIZE) - - SHLIBEXT=dylib - SHLIBCFLAGS=-fPIC -fno-common - SHLIBLDFLAGS=-dynamiclib $(LDFLAGS) - - NOTSHLIBCFLAGS=-mdynamic-no-pic - - #THREAD_LDFLAGS=-lpthread - #LDFLAGS=-ldl -lm - LDFLAGS += -framework Carbon - - ifeq ($(USE_SDL),1) - # We copy sdlmain before ranlib'ing it so that subversion doesn't think - # the file has been modified by each build. - LIBSDLMAIN=$(B)/libSDLmain.a - LIBSDLMAINSRC=$(LIBSDIR)/macosx/libSDLmain.a - CLIENT_LDFLAGS=-framework Cocoa -framework OpenGL $(LIBSDIR)/macosx/libSDL-1.2.0.dylib - else - # !!! FIXME: frameworks: OpenGL, Carbon, etc... - #CLIENT_LDFLAGS=-L/usr/X11R6/$(LIB) -lX11 -lXext -lXxf86dga -lXxf86vm - endif - - # -framework OpenAL requires 10.4 or later...for builds shipping to the - # public, you'll want to use USE_OPENAL_DLOPEN and ship your own OpenAL - # library (http://openal.org/ or http://icculus.org/al_osx/) - ifeq ($(USE_OPENAL),1) - ifneq ($(USE_OPENAL_DLOPEN),1) - CLIENT_LDFLAGS += -framework OpenAL - endif - endif - - ifeq ($(USE_CODEC_VORBIS),1) - CLIENT_LDFLAGS += -lvorbisfile -lvorbis -logg - endif - -else # ifeq darwin - - -############################################################################# -# SETUP AND BUILD -- MINGW32 -############################################################################# - -ifeq ($(PLATFORM),mingw32) - - CC=gcc - WINDRES=windres - - ARCH=x86 - - BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes - - ifeq ($(USE_CURL),1) - BASE_CFLAGS += -DUSE_CURL=1 - ifneq ($(USE_CURL_DLOPEN),1) - BASE_CFLAGS += -DCURL_STATICLIB - endif - endif - - ifeq ($(USE_CODEC_VORBIS),1) - BASE_CFLAGS += -DUSE_CODEC_VORBIS=1 - endif - - GL_CFLAGS = - MINGW_CFLAGS = -DDONT_TYPEDEF_INT32 - - OPTIMIZE = -O2 -march=i586 -fomit-frame-pointer -ffast-math -falign-loops=2 \ - -funroll-loops -falign-jumps=2 -falign-functions=2 -fstrength-reduce - - HAVE_VM_COMPILED = true - - DEBUG_CFLAGS=$(BASE_CFLAGS) -g -O0 - - RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG $(OPTIMIZE) - - SHLIBEXT=dll - SHLIBCFLAGS= - SHLIBLDFLAGS=-shared $(LDFLAGS) - - BINEXT=.exe - - LDFLAGS= -mwindows -lwsock32 -lgdi32 -lwinmm -lole32 - CLIENT_LDFLAGS= - - ifeq ($(USE_CURL),1) - ifneq ($(USE_CURL_DLOPEN),1) - CLIENT_LDFLAGS += $(LIBSDIR)/win32/libcurl.a - endif - endif - - ifeq ($(USE_CODEC_VORBIS),1) - CLIENT_LDFLAGS += -lvorbisfile -lvorbis -logg - endif - - ifeq ($(ARCH),x86) - # build 32bit - BASE_CFLAGS += -m32 - LDFLAGS+=-m32 - endif - - BUILD_SERVER = 0 - BUILD_CLIENT_SMP = 0 - -else # ifeq mingw32 - -############################################################################# -# SETUP AND BUILD -- FREEBSD -############################################################################# - -ifeq ($(PLATFORM),freebsd) - - ifneq (,$(findstring alpha,$(shell uname -m))) - ARCH=axp - else #default to i386 - ARCH=i386 - endif #alpha test - - - BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes - - GL_CFLAGS = -I/usr/X11R6/include - - DEBUG_CFLAGS=$(BASE_CFLAGS) -g - - ifeq ($(USE_OPENAL),1) - BASE_CFLAGS += -DUSE_OPENAL=1 - ifeq ($(USE_OPENAL_DLOPEN),1) - BASE_CFLAGS += -DUSE_OPENAL_DLOPEN=1 - endif - endif - - ifeq ($(USE_CODEC_VORBIS),1) - BASE_CFLAGS += -DUSE_CODEC_VORBIS=1 - endif - - ifeq ($(USE_SDL),1) - BASE_CFLAGS += $(shell sdl-config --cflags) -DUSE_SDL_VIDEO=1 -DUSE_SDL_SOUND=1 - endif - - ifeq ($(ARCH),axp) - CC=gcc - BASE_CFLAGS += -DNO_VM_COMPILED - RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG -O2 -ffast-math -funroll-loops \ - -fomit-frame-pointer -fexpensive-optimizations - else - ifeq ($(ARCH),i386) - CC=gcc - RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG -O2 -mtune=pentiumpro \ - -march=pentium -fomit-frame-pointer -pipe -ffast-math \ - -falign-loops=2 -falign-jumps=2 -falign-functions=2 \ - -funroll-loops -fstrength-reduce - HAVE_VM_COMPILED=true - else - BASE_CFLAGS += -DNO_VM_COMPILED - endif - endif - - SHLIBEXT=so - SHLIBCFLAGS=-fPIC - SHLIBLDFLAGS=-shared $(LDFLAGS) - - THREAD_LDFLAGS=-lpthread - # don't need -ldl (FreeBSD) - LDFLAGS=-lm - - CLIENT_LDFLAGS = - - ifeq ($(USE_SDL),1) - CLIENT_LDFLAGS += $(shell sdl-config --libs) - else - CLIENT_LDFLAGS += -L/usr/X11R6/$(LIB) -lGL -lX11 -lXext -lXxf86dga -lXxf86vm - endif - - ifeq ($(USE_OPENAL),1) - ifneq ($(USE_OPENAL_DLOPEN),1) - CLIENT_LDFLAGS += $(THREAD_LDFLAGS) -lopenal - endif - endif - - ifeq ($(USE_CODEC_VORBIS),1) - CLIENT_LDFLAGS += -lvorbisfile -lvorbis -logg - endif - - -else # ifeq freebsd -############################################################################# -# SETUP AND BUILD -- OPENBSD -############################################################################# - -ifeq ($(PLATFORM),openbsd) - - #default to i386, no tests done on anything else - ARCH=i386 - - - BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \ - -DUSE_ICON $(shell sdl-config --cflags) - - ifeq ($(USE_OPENAL),1) - BASE_CFLAGS += -DUSE_OPENAL - ifeq ($(USE_OPENAL_DLOPEN),1) - BASE_CFLAGS += -DUSE_OPENAL_DLOPEN - endif - endif - - ifeq ($(USE_CODEC_VORBIS),1) - BASE_CFLAGS += -DUSE_CODEC_VORBIS - endif - - BASE_CFLAGS += -DNO_VM_COMPILED -I/usr/X11R6/include -I/usr/local/include - RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG -O3 \ - -march=pentium -fomit-frame-pointer -pipe -ffast-math \ - -falign-loops=2 -falign-jumps=2 -falign-functions=2 \ - -funroll-loops -fstrength-reduce - HAVE_VM_COMPILED=false - - DEBUG_CFLAGS=$(BASE_CFLAGS) -g - - SHLIBEXT=so - SHLIBCFLAGS=-fPIC - SHLIBLDFLAGS=-shared $(LDFLAGS) - - THREAD_LDFLAGS=-lpthread - LDFLAGS=-lm - - CLIENT_LDFLAGS = - - CLIENT_LDFLAGS += $(shell sdl-config --libs) -lGL - - ifeq ($(USE_OPENAL),1) - ifneq ($(USE_OPENAL_DLOPEN),1) - CLIENT_LDFLAGS += $(THREAD_LDFLAGS) -lopenal - endif - endif - - ifeq ($(USE_CODEC_VORBIS),1) - CLIENT_LDFLAGS += -lvorbisfile -lvorbis -logg - endif - - -else # ifeq openbsd - -############################################################################# -# SETUP AND BUILD -- NETBSD -############################################################################# - -ifeq ($(PLATFORM),netbsd) - - ifeq ($(shell uname -m),i386) - ARCH=i386 - endif - - CC=gcc - LDFLAGS=-lm - SHLIBEXT=so - SHLIBCFLAGS=-fPIC - SHLIBLDFLAGS=-shared $(LDFLAGS) - THREAD_LDFLAGS=-lpthread - - BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes - DEBUG_CFLAGS=$(BASE_CFLAGS) -g - - ifneq ($(ARCH),i386) - BASE_CFLAGS += -DNO_VM_COMPILED - endif - - BUILD_CLIENT = 0 - -else # ifeq netbsd - -############################################################################# -# SETUP AND BUILD -- IRIX -############################################################################# - -ifeq ($(PLATFORM),irix) - - ARCH=mips #default to MIPS - - CC=cc - BASE_CFLAGS=-Dstricmp=strcasecmp -Xcpluscomm -woff 1185 -mips3 \ - -nostdinc -I. -I$(ROOT)/usr/include -DNO_VM_COMPILED - RELEASE_CFLAGS=$(BASE_CFLAGS) -O2 - DEBUG_CFLAGS=$(BASE_CFLAGS) -g - - SHLIBEXT=so - SHLIBCFLAGS= - SHLIBLDFLAGS=-shared - - LDFLAGS=-ldl -lm - CLIENT_LDFLAGS=-L/usr/X11/$(LIB) -lGL -lX11 -lXext -lm - -else # ifeq IRIX - -############################################################################# -# SETUP AND BUILD -- SunOS -############################################################################# - -ifeq ($(PLATFORM),sunos) - - CC=gcc - INSTALL=ginstall - MKDIR=gmkdir - COPYDIR="/usr/local/share/games/quake3" - - ifneq (,$(findstring i86pc,$(shell uname -m))) - ARCH=i386 - else #default to sparc - ARCH=sparc - endif - - ifneq ($(ARCH),i386) - ifneq ($(ARCH),sparc) - $(error arch $(ARCH) is currently not supported) - endif - endif - - - BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes -pipe - - ifeq ($(USE_SDL),1) - BASE_CFLAGS += -DUSE_SDL_SOUND=1 $(shell sdl-config --cflags) - GL_CFLAGS = - else - GL_CFLAGS = -I/usr/openwin/include - endif - - OPTIMIZE = -O2 -ffast-math -funroll-loops - - ifeq ($(ARCH),sparc) - OPTIMIZE = -O2 -ffast-math -falign-loops=2 \ - -falign-jumps=2 -falign-functions=2 -fstrength-reduce \ - -mtune=ultrasparc -mv8plus -mno-faster-structs \ - -funroll-loops - BASE_CFLAGS += -DNO_VM_COMPILED - else - ifeq ($(ARCH),i386) - OPTIMIZE = -O2 -march=i586 -ffast-math \ - -falign-loops=2 -falign-jumps=2 -falign-functions=2 \ - -funroll-loops -fstrength-reduce - endif - endif - - DEBUG_CFLAGS = $(BASE_CFLAGS) -ggdb -O0 - - RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG $(OPTIMIZE) - - SHLIBEXT=so - SHLIBCFLAGS=-fPIC - SHLIBLDFLAGS=-shared $(LDFLAGS) - - THREAD_LDFLAGS=-lpthread - LDFLAGS=-lsocket -lnsl -ldl -lm - - BOTCFLAGS=-O0 - - ifeq ($(USE_SDL),1) - CLIENT_LDFLAGS=$(shell sdl-config --libs) -L/usr/X11/lib -lGLU -lX11 -lXext - else - CLIENT_LDFLAGS=-L/usr/openwin/$(LIB) -L/usr/X11/lib -lGLU -lX11 -lXext - endif - - ifeq ($(ARCH),i386) - # Solarix x86 make ... - BASE_CFLAGS += -m32 - LDFLAGS+=-m32 - endif - -else # ifeq sunos - -############################################################################# -# SETUP AND BUILD -- GENERIC -############################################################################# - CC=cc - BASE_CFLAGS=-DNO_VM_COMPILED - DEBUG_CFLAGS=$(BASE_CFLAGS) -g - RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG -O2 - - SHLIBEXT=so - SHLIBCFLAGS=-fPIC - SHLIBLDFLAGS=-shared - -endif #Linux -endif #darwin -endif #mingw32 -endif #FreeBSD -endif #OpenBSD -endif #NetBSD -endif #IRIX -endif #SunOS - -TARGETS = - -ifneq ($(BUILD_SERVER),0) - TARGETS += $(B)/cnq3ded.$(ARCH)$(BINEXT) -endif - -ifneq ($(BUILD_CLIENT),0) - TARGETS += $(B)/cnq3.$(ARCH)$(BINEXT) -endif - -ifneq ($(BUILD_TOOLS),0) - TARGETS += tools -endif - -ifeq ($(USE_CCACHE),1) - CC := ccache $(CC) -endif - -ifdef DEFAULT_BASEDIR - BASE_CFLAGS += -DDEFAULT_BASEDIR=\\\"$(DEFAULT_BASEDIR)\\\" -endif - -ifeq ($(GENERATE_DEPENDENCIES),1) - ifeq ($(CC),gcc) - DEPEND_CFLAGS=-MMD - endif -endif - -DO_CC=$(CC) $(NOTSHLIBCFLAGS) $(CFLAGS) -o $@ -c $< -DO_SMP_CC=$(CC) $(NOTSHLIBCFLAGS) $(CFLAGS) -DSMP -o $@ -c $< -DO_BOT_CC=$(CC) $(NOTSHLIBCFLAGS) $(CFLAGS) $(BOTCFLAGS) -DBOTLIB -o $@ -c $< # $(SHLIBCFLAGS) # bk001212 -DO_DEBUG_CC=$(CC) $(NOTSHLIBCFLAGS) $(DEBUG_CFLAGS) -o $@ -c $< -DO_SHLIB_CC=$(CC) $(CFLAGS) $(SHLIBCFLAGS) -o $@ -c $< -DO_SHLIB_DEBUG_CC=$(CC) $(DEBUG_CFLAGS) $(SHLIBCFLAGS) -o $@ -c $< -DO_AS=$(CC) $(CFLAGS) -DELF -x assembler-with-cpp -o $@ -c $< -DO_DED_CC=$(CC) $(NOTSHLIBCFLAGS) -DDEDICATED $(CFLAGS) -o $@ -c $< -DO_WINDRES=$(WINDRES) -i $< -o $@ - -############################################################################# -# MAIN TARGETS -############################################################################# - -default:build_release - -debug: build_debug -release: build_release - -build_debug: B=$(BD) -build_debug: makedirs - $(MAKE) targets B=$(BD) CFLAGS="$(CFLAGS) $(DEBUG_CFLAGS) $(DEPEND_CFLAGS)" - -build_release: B=$(BR) -build_release: makedirs - $(MAKE) targets B=$(BR) CFLAGS="$(CFLAGS) $(RELEASE_CFLAGS) $(DEPEND_CFLAGS)" - -#Build both debug and release builds -all:build_debug build_release - -targets: $(TARGETS) - -makedirs: - @if [ ! -d $(BUILD_DIR) ];then $(MKDIR) $(BUILD_DIR);fi - @if [ ! -d $(B) ];then $(MKDIR) $(B);fi - @if [ ! -d $(B)/client ];then $(MKDIR) $(B)/client;fi - @if [ ! -d $(B)/ded ];then $(MKDIR) $(B)/ded;fi - -############################################################################# -# QVM BUILD TOOLS -############################################################################# - -Q3LCC=$(TOOLSDIR)/q3lcc$(BINEXT) -Q3ASM=$(TOOLSDIR)/q3asm$(BINEXT) - -ifneq ($(BUILD_TOOLS),0) - ifeq ($(CROSS_COMPILING),1) - tools: - echo QVM tools not built when cross-compiling - else - tools: - $(MAKE) -C $(TOOLSDIR)/lcc install - $(MAKE) -C $(TOOLSDIR)/asm install - endif -endif - -DO_Q3LCC=$(Q3LCC) -o $@ $< - -############################################################################# -# CLIENT/SERVER -############################################################################# - -Q3OBJ = \ - $(B)/client/cl_browser.o \ - $(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 \ - $(B)/client/cl_avi.o \ - \ - $(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 \ - $(B)/client/md5.o \ - $(B)/client/msg.o \ - $(B)/client/net_chan.o \ - $(B)/client/net_ip.o \ - $(B)/client/huffman.o \ - \ - $(B)/client/snd_dma.o \ - $(B)/client/snd_mem.o \ - $(B)/client/snd_mix.o \ - \ - $(B)/client/snd_main.o \ - $(B)/client/snd_codec.o \ - $(B)/client/snd_codec_wav.o \ - $(B)/client/snd_codec_ogg.o \ - \ - $(B)/client/cl_curl.o \ - \ - $(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 \ - $(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 \ - \ - $(B)/client/jcapimin.o \ - $(B)/client/jchuff.o \ - $(B)/client/jcinit.o \ - $(B)/client/jccoefct.o \ - $(B)/client/jccolor.o \ - $(B)/client/jfdctflt.o \ - $(B)/client/jcdctmgr.o \ - $(B)/client/jcphuff.o \ - $(B)/client/jcmainct.o \ - $(B)/client/jcmarker.o \ - $(B)/client/jcmaster.o \ - $(B)/client/jcomapi.o \ - $(B)/client/jcparam.o \ - $(B)/client/jcprepct.o \ - $(B)/client/jcsample.o \ - $(B)/client/jdapimin.o \ - $(B)/client/jdapistd.o \ - $(B)/client/jdatasrc.o \ - $(B)/client/jdcoefct.o \ - $(B)/client/jdcolor.o \ - $(B)/client/jddctmgr.o \ - $(B)/client/jdhuff.o \ - $(B)/client/jdinput.o \ - $(B)/client/jdmainct.o \ - $(B)/client/jdmarker.o \ - $(B)/client/jdmaster.o \ - $(B)/client/jdpostct.o \ - $(B)/client/jdsample.o \ - $(B)/client/jdtrans.o \ - $(B)/client/jerror.o \ - $(B)/client/jidctflt.o \ - $(B)/client/jmemmgr.o \ - $(B)/client/jmemnobs.o \ - $(B)/client/jutils.o \ - \ - $(B)/client/tr_extensions.o \ - $(B)/client/tr_arb.o \ - $(B)/client/tr_backend.o \ - $(B)/client/tr_bsp.o \ - $(B)/client/tr_cmds.o \ - $(B)/client/tr_curve.o \ - $(B)/client/tr_flares.o \ - $(B)/client/tr_font.o \ - $(B)/client/tr_image.o \ - $(B)/client/tr_init.o \ - $(B)/client/tr_light.o \ - $(B)/client/tr_main.o \ - $(B)/client/tr_marks.o \ - $(B)/client/tr_mesh.o \ - $(B)/client/tr_model.o \ - $(B)/client/tr_noise.o \ - $(B)/client/tr_scene.o \ - $(B)/client/tr_shade.o \ - $(B)/client/tr_shade_calc.o \ - $(B)/client/tr_shader.o \ - $(B)/client/tr_sky.o \ - $(B)/client/tr_surface.o \ - $(B)/client/tr_world.o \ - -ifeq ($(ARCH),i386) - Q3OBJ += \ - $(B)/client/matha.o \ - $(B)/client/ftola.o -endif -ifeq ($(ARCH),x86) - Q3OBJ += \ - $(B)/client/matha.o \ - $(B)/client/ftola.o -endif - -ifeq ($(HAVE_VM_COMPILED),true) - ifeq ($(ARCH),i386) - Q3OBJ += $(B)/client/vm_x86.o - endif - ifeq ($(ARCH),x86) - Q3OBJ += $(B)/client/vm_x86.o - endif - ifeq ($(ARCH),ppc) - Q3OBJ += $(B)/client/$(VM_PPC).o - endif -endif - -ifeq ($(PLATFORM),mingw32) - Q3OBJ += \ - $(B)/client/win_gamma.o \ - $(B)/client/win_glimp.o \ - $(B)/client/win_input.o \ - $(B)/client/win_main.o \ - $(B)/client/win_net.o \ - $(B)/client/win_qgl.o \ - $(B)/client/win_shared.o \ - $(B)/client/win_snd.o \ - $(B)/client/win_syscon.o \ - $(B)/client/win_wndproc.o \ - $(B)/client/win_resource.o -else - Q3OBJ += \ - $(B)/client/unix_main.o \ - $(B)/client/unix_shared.o \ - $(B)/client/linux_signals.o \ - $(B)/client/linux_qgl.o \ - $(B)/client/linux_snd.o \ - $(B)/client/sdl_snd.o - - ifeq ($(PLATFORM),linux) - Q3OBJ += $(B)/client/linux_joystick.o - endif - - BUILD_CLIENT_SMP = 0 - - Q3POBJ = \ - $(B)/client/linux_glimp.o \ - $(B)/client/sdl_glimp.o - -endif - -$(B)/cnq3.$(ARCH)$(BINEXT): $(Q3OBJ) $(Q3POBJ) $(LIBSDLMAIN) - $(CC) -o $@ $(Q3OBJ) $(Q3POBJ) $(CLIENT_LDFLAGS) $(LDFLAGS) $(LIBSDLMAIN) - - -ifneq ($(strip $(LIBSDLMAIN)),) -ifneq ($(strip $(LIBSDLMAINSRC)),) -$(LIBSDLMAIN) : $(LIBSDLMAINSRC) - cp $< $@ - ranlib $@ -endif -endif - -$(B)/client/cl_browser.o : $(CDIR)/cl_browser.cpp; $(DO_CC) -$(B)/client/cl_cgame.o : $(CDIR)/cl_cgame.cpp; $(DO_CC) -$(B)/client/cl_cin.o : $(CDIR)/cl_cin.cpp; $(DO_CC) -$(B)/client/cl_console.o : $(CDIR)/cl_console.cpp; $(DO_CC) -$(B)/client/cl_input.o : $(CDIR)/cl_input.cpp; $(DO_CC) -$(B)/client/cl_keys.o : $(CDIR)/cl_keys.cpp; $(DO_CC) -$(B)/client/cl_main.o : $(CDIR)/cl_main.cpp; $(DO_CC) -$(B)/client/cl_net_chan.o : $(CDIR)/cl_net_chan.cpp; $(DO_CC) -$(B)/client/cl_parse.o : $(CDIR)/cl_parse.cpp; $(DO_CC) -$(B)/client/cl_scrn.o : $(CDIR)/cl_scrn.cpp; $(DO_CC) -$(B)/client/cl_ui.o : $(CDIR)/cl_ui.cpp; $(DO_CC) -$(B)/client/cl_avi.o : $(CDIR)/cl_avi.cpp; $(DO_CC) -$(B)/client/snd_dma.o : $(CDIR)/snd_dma.cpp; $(DO_CC) -$(B)/client/snd_mem.o : $(CDIR)/snd_mem.cpp; $(DO_CC) -$(B)/client/snd_mix.o : $(CDIR)/snd_mix.cpp; $(DO_CC) - -$(B)/client/snd_main.o : $(CDIR)/snd_main.cpp; $(DO_CC) -$(B)/client/snd_codec.o : $(CDIR)/snd_codec.cpp; $(DO_CC) -$(B)/client/snd_codec_wav.o : $(CDIR)/snd_codec_wav.cpp; $(DO_CC) -$(B)/client/snd_codec_ogg.o : $(CDIR)/snd_codec_ogg.cpp; $(DO_CC) - -$(B)/client/cl_curl.o : $(CDIR)/cl_curl.cpp; $(DO_CC) - -$(B)/client/sv_bot.o : $(SDIR)/sv_bot.cpp; $(DO_CC) -$(B)/client/sv_client.o : $(SDIR)/sv_client.cpp; $(DO_CC) -$(B)/client/sv_ccmds.o : $(SDIR)/sv_ccmds.cpp; $(DO_CC) -$(B)/client/sv_game.o : $(SDIR)/sv_game.cpp; $(DO_CC) -$(B)/client/sv_init.o : $(SDIR)/sv_init.cpp; $(DO_CC) -$(B)/client/sv_main.o : $(SDIR)/sv_main.cpp; $(DO_CC) -$(B)/client/sv_net_chan.o : $(SDIR)/sv_net_chan.cpp; $(DO_CC) -$(B)/client/sv_snapshot.o : $(SDIR)/sv_snapshot.cpp; $(DO_CC) -$(B)/client/sv_world.o : $(SDIR)/sv_world.cpp; $(DO_CC) -$(B)/client/cm_trace.o : $(CMDIR)/cm_trace.cpp; $(DO_CC) -$(B)/client/cm_load.o : $(CMDIR)/cm_load.cpp; $(DO_CC) -$(B)/client/cm_test.o : $(CMDIR)/cm_test.cpp; $(DO_CC) -$(B)/client/cm_patch.o : $(CMDIR)/cm_patch.cpp; $(DO_CC) -$(B)/client/cm_polylib.o : $(CMDIR)/cm_polylib.cpp; $(DO_CC) -$(B)/client/cmd.o : $(CMDIR)/cmd.cpp; $(DO_CC) -$(B)/client/common.o : $(CMDIR)/common.cpp; $(DO_CC) -$(B)/client/cvar.o : $(CMDIR)/cvar.cpp; $(DO_CC) -$(B)/client/files.o : $(CMDIR)/files.cpp; $(DO_CC) -$(B)/client/md4.o : $(CMDIR)/md4.cpp; $(DO_CC) -$(B)/client/md5.o : $(CMDIR)/md5.cpp; $(DO_CC) -$(B)/client/msg.o : $(CMDIR)/msg.cpp; $(DO_CC) -$(B)/client/net_chan.o : $(CMDIR)/net_chan.cpp; $(DO_CC) -$(B)/client/net_ip.o : $(CMDIR)/net_ip.cpp; $(DO_CC) -$(B)/client/huffman.o : $(CMDIR)/huffman.cpp; $(DO_CC) -$(B)/client/q_shared.o : $(CMDIR)/q_shared.c; $(DO_CC) -$(B)/client/q_math.o : $(CMDIR)/q_math.c; $(DO_CC) - -$(B)/client/be_aas_bspq3.o : $(BLIBDIR)/be_aas_bspq3.cpp; $(DO_BOT_CC) -$(B)/client/be_aas_cluster.o : $(BLIBDIR)/be_aas_cluster.cpp; $(DO_BOT_CC) -$(B)/client/be_aas_debug.o : $(BLIBDIR)/be_aas_debug.cpp; $(DO_BOT_CC) -$(B)/client/be_aas_entity.o : $(BLIBDIR)/be_aas_entity.cpp; $(DO_BOT_CC) -$(B)/client/be_aas_file.o : $(BLIBDIR)/be_aas_file.cpp; $(DO_BOT_CC) -$(B)/client/be_aas_main.o : $(BLIBDIR)/be_aas_main.cpp; $(DO_BOT_CC) -$(B)/client/be_aas_move.o : $(BLIBDIR)/be_aas_move.cpp; $(DO_BOT_CC) -$(B)/client/be_aas_optimize.o : $(BLIBDIR)/be_aas_optimize.cpp; $(DO_BOT_CC) -$(B)/client/be_aas_reach.o : $(BLIBDIR)/be_aas_reach.cpp; $(DO_BOT_CC) -$(B)/client/be_aas_route.o : $(BLIBDIR)/be_aas_route.cpp; $(DO_BOT_CC) -$(B)/client/be_aas_routealt.o : $(BLIBDIR)/be_aas_routealt.cpp; $(DO_BOT_CC) -$(B)/client/be_aas_sample.o : $(BLIBDIR)/be_aas_sample.cpp; $(DO_BOT_CC) -$(B)/client/be_ai_char.o : $(BLIBDIR)/be_ai_char.cpp; $(DO_BOT_CC) -$(B)/client/be_ai_chat.o : $(BLIBDIR)/be_ai_chat.cpp; $(DO_BOT_CC) -$(B)/client/be_ai_gen.o : $(BLIBDIR)/be_ai_gen.cpp; $(DO_BOT_CC) -$(B)/client/be_ai_goal.o : $(BLIBDIR)/be_ai_goal.cpp; $(DO_BOT_CC) -$(B)/client/be_ai_move.o : $(BLIBDIR)/be_ai_move.cpp; $(DO_BOT_CC) -$(B)/client/be_ai_weap.o : $(BLIBDIR)/be_ai_weap.cpp; $(DO_BOT_CC) -$(B)/client/be_ai_weight.o : $(BLIBDIR)/be_ai_weight.cpp; $(DO_BOT_CC) -$(B)/client/be_ea.o : $(BLIBDIR)/be_ea.cpp; $(DO_BOT_CC) -$(B)/client/be_interface.o : $(BLIBDIR)/be_interface.cpp; $(DO_BOT_CC) -$(B)/client/l_crc.o : $(BLIBDIR)/l_crc.cpp; $(DO_BOT_CC) -$(B)/client/l_libvar.o : $(BLIBDIR)/l_libvar.cpp; $(DO_BOT_CC) -$(B)/client/l_log.o : $(BLIBDIR)/l_log.cpp; $(DO_BOT_CC) -$(B)/client/l_memory.o : $(BLIBDIR)/l_memory.cpp; $(DO_BOT_CC) -$(B)/client/l_precomp.o : $(BLIBDIR)/l_precomp.cpp; $(DO_BOT_CC) -$(B)/client/l_script.o : $(BLIBDIR)/l_script.cpp; $(DO_BOT_CC) -$(B)/client/l_struct.o : $(BLIBDIR)/l_struct.cpp; $(DO_BOT_CC) - -$(B)/client/jcapimin.o : $(JPDIR)/jcapimin.c; $(DO_CC) -$(B)/client/jchuff.o : $(JPDIR)/jchuff.c; $(DO_CC) -$(B)/client/jcinit.o : $(JPDIR)/jcinit.c; $(DO_CC) -$(B)/client/jccoefct.o : $(JPDIR)/jccoefct.c; $(DO_CC) -$(B)/client/jccolor.o : $(JPDIR)/jccolor.c; $(DO_CC) -$(B)/client/jfdctflt.o : $(JPDIR)/jfdctflt.c; $(DO_CC) -$(B)/client/jcdctmgr.o : $(JPDIR)/jcdctmgr.c; $(DO_CC) -$(B)/client/jcmainct.o : $(JPDIR)/jcmainct.c; $(DO_CC) -$(B)/client/jcmarker.o : $(JPDIR)/jcmarker.c; $(DO_CC) -$(B)/client/jcmaster.o : $(JPDIR)/jcmaster.c; $(DO_CC) -$(B)/client/jcomapi.o : $(JPDIR)/jcomapi.c; $(DO_CC) -$(B)/client/jcparam.o : $(JPDIR)/jcparam.c; $(DO_CC) -$(B)/client/jcprepct.o : $(JPDIR)/jcprepct.c; $(DO_CC) -$(B)/client/jcsample.o : $(JPDIR)/jcsample.c; $(DO_CC) - -$(B)/client/jdapimin.o : $(JPDIR)/jdapimin.c; $(DO_CC) -$(B)/client/jdapistd.o : $(JPDIR)/jdapistd.c; $(DO_CC) -$(B)/client/jdatasrc.o : $(JPDIR)/jdatasrc.c; $(DO_CC) -$(B)/client/jdcoefct.o : $(JPDIR)/jdcoefct.c; $(DO_CC) -$(B)/client/jdcolor.o : $(JPDIR)/jdcolor.c; $(DO_CC) -$(B)/client/jcphuff.o : $(JPDIR)/jcphuff.c; $(DO_CC) -$(B)/client/jddctmgr.o : $(JPDIR)/jddctmgr.c; $(DO_CC) -$(B)/client/jdhuff.o : $(JPDIR)/jdhuff.c; $(DO_CC) -$(B)/client/jdinput.o : $(JPDIR)/jdinput.c; $(DO_CC) -$(B)/client/jdmainct.o : $(JPDIR)/jdmainct.c; $(DO_CC) -$(B)/client/jdmarker.o : $(JPDIR)/jdmarker.c; $(DO_CC) -$(B)/client/jdmaster.o : $(JPDIR)/jdmaster.c; $(DO_CC) -$(B)/client/jdpostct.o : $(JPDIR)/jdpostct.c; $(DO_CC) -$(B)/client/jdsample.o : $(JPDIR)/jdsample.c; $(DO_CC) -$(B)/client/jdtrans.o : $(JPDIR)/jdtrans.c; $(DO_CC) -$(B)/client/jerror.o : $(JPDIR)/jerror.c; $(DO_CC) $(GL_CFLAGS) $(MINGW_CFLAGS) -$(B)/client/jidctflt.o : $(JPDIR)/jidctflt.c; $(DO_CC) -$(B)/client/jmemmgr.o : $(JPDIR)/jmemmgr.c; $(DO_CC) -$(B)/client/jmemnobs.o : $(JPDIR)/jmemnobs.c; $(DO_CC) $(GL_CFLAGS) $(MINGW_CFLAGS) -$(B)/client/jutils.o : $(JPDIR)/jutils.c; $(DO_CC) - -$(B)/client/tr_extensions.o : $(RDIR)/tr_extensions.cpp; $(DO_CC) $(GL_CFLAGS) -$(B)/client/tr_arb.o : $(RDIR)/tr_arb.cpp; $(DO_CC) $(GL_CFLAGS) -$(B)/client/tr_bsp.o : $(RDIR)/tr_bsp.cpp; $(DO_CC) $(GL_CFLAGS) -$(B)/client/tr_backend.o : $(RDIR)/tr_backend.cpp; $(DO_CC) $(GL_CFLAGS) -$(B)/client/tr_cmds.o : $(RDIR)/tr_cmds.cpp; $(DO_CC) $(GL_CFLAGS) -$(B)/client/tr_curve.o : $(RDIR)/tr_curve.cpp; $(DO_CC) $(GL_CFLAGS) -$(B)/client/tr_flares.o : $(RDIR)/tr_flares.cpp; $(DO_CC) $(GL_CFLAGS) -$(B)/client/tr_font.o : $(RDIR)/tr_font.cpp; $(DO_CC) $(GL_CFLAGS) -$(B)/client/tr_image.o : $(RDIR)/tr_image.cpp; $(DO_CC) $(GL_CFLAGS) $(MINGW_CFLAGS) -$(B)/client/tr_init.o : $(RDIR)/tr_init.cpp; $(DO_CC) $(GL_CFLAGS) -$(B)/client/tr_light.o : $(RDIR)/tr_light.cpp; $(DO_CC) $(GL_CFLAGS) -$(B)/client/tr_main.o : $(RDIR)/tr_main.cpp; $(DO_CC) $(GL_CFLAGS) -$(B)/client/tr_marks.o : $(RDIR)/tr_marks.cpp; $(DO_CC) $(GL_CFLAGS) -$(B)/client/tr_mesh.o : $(RDIR)/tr_mesh.cpp; $(DO_CC) $(GL_CFLAGS) -$(B)/client/tr_model.o : $(RDIR)/tr_model.cpp; $(DO_CC) $(GL_CFLAGS) -$(B)/client/tr_noise.o : $(RDIR)/tr_noise.cpp; $(DO_CC) $(GL_CFLAGS) -$(B)/client/tr_scene.o : $(RDIR)/tr_scene.cpp; $(DO_CC) $(GL_CFLAGS) -$(B)/client/tr_shade.o : $(RDIR)/tr_shade.cpp; $(DO_CC) $(GL_CFLAGS) -$(B)/client/tr_shader.o : $(RDIR)/tr_shader.cpp; $(DO_CC) $(GL_CFLAGS) -$(B)/client/tr_shade_calc.o : $(RDIR)/tr_shade_calc.cpp; $(DO_CC) $(GL_CFLAGS) -$(B)/client/tr_sky.o : $(RDIR)/tr_sky.cpp; $(DO_CC) $(GL_CFLAGS) -$(B)/client/tr_smp.o : $(RDIR)/tr_smp.cpp; $(DO_CC) $(GL_CFLAGS) -$(B)/client/tr_stripify.o : $(RDIR)/tr_stripify.cpp; $(DO_CC) $(GL_CFLAGS) -$(B)/client/tr_subdivide.o : $(RDIR)/tr_subdivide.cpp; $(DO_CC) $(GL_CFLAGS) -$(B)/client/tr_surface.o : $(RDIR)/tr_surface.cpp; $(DO_CC) $(GL_CFLAGS) -$(B)/client/tr_world.o : $(RDIR)/tr_world.cpp; $(DO_CC) $(GL_CFLAGS) - -$(B)/client/unix_qgl.o : $(UDIR)/unix_qgl.cpp; $(DO_CC) $(GL_CFLAGS) -$(B)/client/unix_main.o : $(UDIR)/unix_main.cpp; $(DO_CC) -$(B)/client/unix_shared.o : $(UDIR)/unix_shared.cpp; $(DO_CC) -$(B)/client/irix_glimp.o : $(UDIR)/irix_glimp.cpp; $(DO_CC) -$(B)/client/irix_glimp_smp.o : $(UDIR)/irix_glimp.cpp; $(DO_SMP_CC) -$(B)/client/irix_snd.o : $(UDIR)/irix_snd.cpp; $(DO_CC) -$(B)/client/irix_input.o : $(UDIR)/irix_input.cpp; $(DO_CC) -$(B)/client/linux_signals.o : $(UDIR)/linux_signals.cpp; $(DO_CC) $(GL_CFLAGS) -$(B)/client/linux_glimp.o : $(UDIR)/linux_glimp.c; $(DO_CC) $(GL_CFLAGS) -$(B)/client/sdl_glimp.o : $(UDIR)/sdl_glimp.c; $(DO_CC) $(GL_CFLAGS) -$(B)/client/linux_joystick.o : $(UDIR)/linux_joystick.c; $(DO_CC) -$(B)/client/linux_qgl.o : $(UDIR)/linux_qgl.c; $(DO_CC) $(GL_CFLAGS) -$(B)/client/linux_input.o : $(UDIR)/linux_input.cpp; $(DO_CC) -$(B)/client/linux_snd.o : $(UDIR)/linux_snd.c; $(DO_CC) -$(B)/client/sdl_snd.o : $(UDIR)/sdl_snd.c; $(DO_CC) -$(B)/client/matha.o : $(UDIR)/matha.s; $(DO_AS) -$(B)/client/ftola.o : $(UDIR)/ftola.s; $(DO_AS) - -$(B)/client/win_gamma.o : $(W32DIR)/win_gamma.cpp; $(DO_CC) -$(B)/client/win_glimp.o : $(W32DIR)/win_glimp.cpp; $(DO_CC) -$(B)/client/win_input.o : $(W32DIR)/win_input.cpp; $(DO_CC) -$(B)/client/win_main.o : $(W32DIR)/win_main.cpp; $(DO_CC) -$(B)/client/win_net.o : $(W32DIR)/win_net.cpp; $(DO_CC) -$(B)/client/win_qgl.o : $(W32DIR)/win_qgl.cpp; $(DO_CC) -$(B)/client/win_shared.o : $(W32DIR)/win_shared.cpp; $(DO_CC) -$(B)/client/win_snd.o : $(W32DIR)/win_snd.cpp; $(DO_CC) -$(B)/client/win_syscon.o : $(W32DIR)/win_syscon.cpp; $(DO_CC) -$(B)/client/win_wndproc.o : $(W32DIR)/win_wndproc.cpp; $(DO_CC) -$(B)/client/win_resource.o : $(W32DIR)/winquake.rc; $(DO_WINDRES) - -$(B)/client/vm_x86.o : $(CMDIR)/vm_x86.cpp; $(DO_CC) -ifneq ($(VM_PPC),) -$(B)/client/$(VM_PPC).o : $(CMDIR)/$(VM_PPC).cpp; $(DO_CC) -endif - -$(B)/client/unzip.o : $(CMDIR)/unzip.cpp; $(DO_CC) -$(B)/client/vm.o : $(CMDIR)/vm.cpp; $(DO_CC) -$(B)/client/vm_interpreted.o : $(CMDIR)/vm_interpreted.cpp; $(DO_CC) - -############################################################################# -# DEDICATED SERVER -############################################################################# - -Q3DOBJ = \ - $(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 \ - $(B)/ded/net_ip.o \ - $(B)/ded/huffman.o \ - \ - $(B)/ded/q_math.o \ - $(B)/ded/q_shared.o \ - \ - $(B)/ded/unzip.o \ - $(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/linux_signals.o \ - $(B)/ded/unix_main.o \ - $(B)/ded/unix_shared.o \ - \ - $(B)/ded/null_client.o \ - $(B)/ded/null_input.o \ - $(B)/ded/null_snddma.o - -ifeq ($(ARCH),i386) - Q3DOBJ += \ - $(B)/ded/ftola.o \ - $(B)/ded/matha.o -endif - -ifeq ($(HAVE_VM_COMPILED),true) - ifeq ($(ARCH),i386) - Q3DOBJ += $(B)/ded/vm_x86.o - endif - ifeq ($(ARCH),x86) - Q3DOBJ += $(B)/ded/vm_x86.o - endif - ifeq ($(ARCH),ppc) - Q3DOBJ += $(B)/ded/$(VM_PPC).o - endif -endif - -$(B)/cnq3ded.$(ARCH)$(BINEXT): $(Q3DOBJ) - $(CC) -o $@ $(Q3DOBJ) $(LDFLAGS) - -$(B)/ded/sv_bot.o : $(SDIR)/sv_bot.cpp; $(DO_DED_CC) -$(B)/ded/sv_client.o : $(SDIR)/sv_client.cpp; $(DO_DED_CC) -$(B)/ded/sv_ccmds.o : $(SDIR)/sv_ccmds.cpp; $(DO_DED_CC) -$(B)/ded/sv_game.o : $(SDIR)/sv_game.cpp; $(DO_DED_CC) -$(B)/ded/sv_init.o : $(SDIR)/sv_init.cpp; $(DO_DED_CC) -$(B)/ded/sv_main.o : $(SDIR)/sv_main.cpp; $(DO_DED_CC) -$(B)/ded/sv_net_chan.o : $(SDIR)/sv_net_chan.cpp; $(DO_DED_CC) -$(B)/ded/sv_snapshot.o : $(SDIR)/sv_snapshot.cpp; $(DO_DED_CC) -$(B)/ded/sv_world.o : $(SDIR)/sv_world.cpp; $(DO_DED_CC) -$(B)/ded/cm_load.o : $(CMDIR)/cm_load.cpp; $(DO_DED_CC) -$(B)/ded/cm_polylib.o : $(CMDIR)/cm_polylib.cpp; $(DO_DED_CC) -$(B)/ded/cm_test.o : $(CMDIR)/cm_test.cpp; $(DO_DED_CC) -$(B)/ded/cm_trace.o : $(CMDIR)/cm_trace.cpp; $(DO_DED_CC) -$(B)/ded/cm_patch.o : $(CMDIR)/cm_patch.cpp; $(DO_DED_CC) -$(B)/ded/cmd.o : $(CMDIR)/cmd.cpp; $(DO_DED_CC) -$(B)/ded/common.o : $(CMDIR)/common.cpp; $(DO_DED_CC) -$(B)/ded/cvar.o : $(CMDIR)/cvar.cpp; $(DO_DED_CC) -$(B)/ded/files.o : $(CMDIR)/files.cpp; $(DO_DED_CC) -$(B)/ded/md4.o : $(CMDIR)/md4.cpp; $(DO_DED_CC) -$(B)/ded/msg.o : $(CMDIR)/msg.cpp; $(DO_DED_CC) -$(B)/ded/net_chan.o : $(CMDIR)/net_chan.cpp; $(DO_DED_CC) -$(B)/ded/net_ip.o : $(CMDIR)/net_ip.cpp; $(DO_DED_CC) -$(B)/ded/huffman.o : $(CMDIR)/huffman.cpp; $(DO_DED_CC) -$(B)/ded/q_shared.o : $(CMDIR)/q_shared.c; $(DO_DED_CC) -$(B)/ded/q_math.o : $(CMDIR)/q_math.c; $(DO_DED_CC) - -$(B)/ded/be_aas_bspq3.o : $(BLIBDIR)/be_aas_bspq3.cpp; $(DO_BOT_CC) -$(B)/ded/be_aas_cluster.o : $(BLIBDIR)/be_aas_cluster.cpp; $(DO_BOT_CC) -$(B)/ded/be_aas_debug.o : $(BLIBDIR)/be_aas_debug.cpp; $(DO_BOT_CC) -$(B)/ded/be_aas_entity.o : $(BLIBDIR)/be_aas_entity.cpp; $(DO_BOT_CC) -$(B)/ded/be_aas_file.o : $(BLIBDIR)/be_aas_file.cpp; $(DO_BOT_CC) -$(B)/ded/be_aas_main.o : $(BLIBDIR)/be_aas_main.cpp; $(DO_BOT_CC) -$(B)/ded/be_aas_move.o : $(BLIBDIR)/be_aas_move.cpp; $(DO_BOT_CC) -$(B)/ded/be_aas_optimize.o : $(BLIBDIR)/be_aas_optimize.cpp; $(DO_BOT_CC) -$(B)/ded/be_aas_reach.o : $(BLIBDIR)/be_aas_reach.cpp; $(DO_BOT_CC) -$(B)/ded/be_aas_route.o : $(BLIBDIR)/be_aas_route.cpp; $(DO_BOT_CC) -$(B)/ded/be_aas_routealt.o : $(BLIBDIR)/be_aas_routealt.cpp; $(DO_BOT_CC) -$(B)/ded/be_aas_sample.o : $(BLIBDIR)/be_aas_sample.cpp; $(DO_BOT_CC) -$(B)/ded/be_ai_char.o : $(BLIBDIR)/be_ai_char.cpp; $(DO_BOT_CC) -$(B)/ded/be_ai_chat.o : $(BLIBDIR)/be_ai_chat.cpp; $(DO_BOT_CC) -$(B)/ded/be_ai_gen.o : $(BLIBDIR)/be_ai_gen.cpp; $(DO_BOT_CC) -$(B)/ded/be_ai_goal.o : $(BLIBDIR)/be_ai_goal.cpp; $(DO_BOT_CC) -$(B)/ded/be_ai_move.o : $(BLIBDIR)/be_ai_move.cpp; $(DO_BOT_CC) -$(B)/ded/be_ai_weap.o : $(BLIBDIR)/be_ai_weap.cpp; $(DO_BOT_CC) -$(B)/ded/be_ai_weight.o : $(BLIBDIR)/be_ai_weight.cpp; $(DO_BOT_CC) -$(B)/ded/be_ea.o : $(BLIBDIR)/be_ea.cpp; $(DO_BOT_CC) -$(B)/ded/be_interface.o : $(BLIBDIR)/be_interface.cpp; $(DO_BOT_CC) -$(B)/ded/l_crc.o : $(BLIBDIR)/l_crc.cpp; $(DO_BOT_CC) -$(B)/ded/l_libvar.o : $(BLIBDIR)/l_libvar.cpp; $(DO_BOT_CC) -$(B)/ded/l_log.o : $(BLIBDIR)/l_log.cpp; $(DO_BOT_CC) -$(B)/ded/l_memory.o : $(BLIBDIR)/l_memory.cpp; $(DO_BOT_CC) -$(B)/ded/l_precomp.o : $(BLIBDIR)/l_precomp.cpp; $(DO_BOT_CC) -$(B)/ded/l_script.o : $(BLIBDIR)/l_script.cpp; $(DO_BOT_CC) -$(B)/ded/l_struct.o : $(BLIBDIR)/l_struct.cpp; $(DO_BOT_CC) - -$(B)/ded/linux_signals.o : $(UDIR)/linux_signals.cpp; $(DO_DED_CC) -$(B)/ded/unix_main.o : $(UDIR)/unix_main.cpp; $(DO_DED_CC) -$(B)/ded/unix_shared.o : $(UDIR)/unix_shared.cpp; $(DO_DED_CC) - -$(B)/ded/null_client.o : $(NDIR)/null_client.cpp; $(DO_DED_CC) -$(B)/ded/null_input.o : $(NDIR)/null_input.cpp; $(DO_DED_CC) -$(B)/ded/null_snddma.o : $(NDIR)/null_snddma.cpp; $(DO_DED_CC) -$(B)/ded/unzip.o : $(CMDIR)/unzip.cpp; $(DO_DED_CC) -$(B)/ded/vm.o : $(CMDIR)/vm.cpp; $(DO_DED_CC) -$(B)/ded/vm_interpreted.o : $(CMDIR)/vm_interpreted.cpp; $(DO_DED_CC) - -$(B)/ded/ftola.o : $(UDIR)/ftola.s; $(DO_AS) -$(B)/ded/matha.o : $(UDIR)/matha.s; $(DO_AS) - -$(B)/ded/vm_x86.o : $(CMDIR)/vm_x86.cpp; $(DO_DED_CC) -ifneq ($(VM_PPC),) -$(B)/ded/$(VM_PPC).o : $(CMDIR)/$(VM_PPC).cpp; $(DO_DED_CC) -endif - - -############################################################################# -# MISC -############################################################################# - -copyfiles: build_release - @if [ ! -d $(COPYDIR)/baseq3 ]; then echo "You need to set COPYDIR to where your Quake3 data is!"; fi - -ifneq ($(BUILD_CLIENT),0) - $(INSTALL) -s -m 0755 $(BR)/cnq3.$(ARCH)$(BINEXT) $(COPYDIR)/cnq3.$(ARCH)$(BINEXT) -endif - -ifneq ($(BUILD_SERVER),0) - @if [ -f $(BR)/cnq3ded.$(ARCH)$(BINEXT) ]; then \ - $(INSTALL) -s -m 0755 $(BR)/cnq3ded.$(ARCH)$(BINEXT) $(COPYDIR)/cnq3ded.$(ARCH)$(BINEXT); \ - fi -endif - - -clean: clean-debug clean-release - $(MAKE) -C $(LOKISETUPDIR) clean - -clean2: - if [ -d $(B) ];then (find $(B) -name '*.d' -exec rm {} \;)fi - rm -f $(Q3OBJ) $(Q3POBJ) $(Q3DOBJ) \ - $(MPGOBJ) $(Q3GOBJ) $(Q3CGOBJ) $(MPCGOBJ) $(Q3UIOBJ) $(MPUIOBJ) \ - $(MPGVMOBJ) $(Q3GVMOBJ) $(Q3CGVMOBJ) $(MPCGVMOBJ) $(Q3UIVMOBJ) $(MPUIVMOBJ) - rm -f $(TARGETS) - -clean-debug: - $(MAKE) clean2 B=$(BD) CFLAGS="$(DEBUG_CFLAGS)" - -clean-release: - $(MAKE) clean2 B=$(BR) CFLAGS="$(RELEASE_CFLAGS)" - -toolsclean: - $(MAKE) -C $(TOOLSDIR)/asm clean uninstall - $(MAKE) -C $(TOOLSDIR)/lcc clean uninstall - -distclean: clean toolsclean - rm -rf $(BUILD_DIR) - -installer: build_release - $(MAKE) VERSION=$(VERSION) -C $(LOKISETUPDIR) - -dist: - rm -rf quake3-$(SVN_VERSION) - svn export . quake3-$(SVN_VERSION) - tar --owner=root --group=root --force-local -cjf quake3-$(SVN_VERSION).tar.bz2 quake3-$(SVN_VERSION) - rm -rf quake3-$(SVN_VERSION) - - -############################################################################# -# DEPENDENCIES -############################################################################# - -.PHONY: release debug clean distclean copyfiles installer dist diff --git a/SConstruct b/SConstruct deleted file mode 100644 index fd757bb..0000000 --- a/SConstruct +++ /dev/null @@ -1,732 +0,0 @@ -# -*- mode: python -*- -# Quake4 build script -# TTimo -# http://scons.sourceforge.net - -import sys, os, time, commands, re, pickle, StringIO, popen2, commands, pdb, zipfile, string -import SCons - -sys.path.append( 'sys/scons' ) -import scons_utils - -conf_filename='site.conf' -# choose configuration variables which should be saved between runs -# ( we handle all those as strings ) -serialized=['CC', 'CXX', 'JOBS', 'BUILD', 'IDNET_HOST', 'GL_HARDLINK', 'DEDICATED', - 'DEBUG_MEMORY', 'LIBC_MALLOC', 'ID_NOLANADDRESS', 'ID_MCHECK', - 'TARGET_CORE', 'TARGET_CORE_SMP', 'TARGET_GAME', 'TARGET_MONO', 'TARGET_DEMO', 'NOCURL', - 'BUILD_ROOT', 'Q4TEST', 'TARGET_GAMEPAK', 'PATCHLEVEL', 'OSX_BUILDSTYLE', 'SILENT', 'GCC_X86_ASM' ] - -# global build mode ------------------------------ - -g_sdk = not os.path.exists( 'sys/scons/SConscript.core' ) - -# ------------------------------------------------ - -# help ------------------------------------------- - -help_string = """ -Usage: scons [OPTIONS] [TARGET] [CONFIG] - -[OPTIONS] and [TARGET] are covered in command line options, use scons -H - -[CONFIG]: KEY="VALUE" [...] -a number of configuration options saved between runs in the """ + conf_filename + """ file -erase """ + conf_filename + """ to start with default settings again - -CC (default gcc) -CXX (default g++) - Specify C and C++ compilers (defaults gcc and g++) - ex: CC="gcc-3.3" - You can use ccache and distcc, for instance: - CC="ccache distcc gcc" CXX="ccache distcc g++" - -JOBS (default 1) - Parallel build - -BUILD (default debug) - Use debug-all/debug/release to select build settings - ex: BUILD="release" - debug-all: no optimisations, debugging symbols - debug: -O -g - release: all optimisations, including CPU target etc. - -BUILD_ROOT (default 'build') - change the build root directory - -NOCONF (default 0, not saved) - ignore site configuration and use defaults + command line only - -SILENT ( default 0, saved ) - hide the compiler output, unless error - -GCC_X86_ASM ( defaul 0, saved ) - compile in gcc x86 asm optimizations -""" - -if ( not g_sdk ): - help_string += """ -DEDICATED (default 0) - Control regular / dedicated type of build: - 0 - client - 1 - dedicated server - 2 - both - -TARGET_CORE (default 1) - Build the core - -TARGET_CORE_SMP (default 0) - Build an SMP-enabled core - -TARGET_GAME (default 1) - Build the game code - -TARGET_MONO (default 0) - Build a monolithic binary - -TARGET_DEMO (default 0) - Build demo client ( both a core and game, no mono ) - NOTE: if you *only* want the demo client, set TARGET_CORE and TARGET_GAME to 0 - -IDNET_HOST (default to source hardcoded) - Override builtin IDNET_HOST with your own settings - -GL_HARDLINK (default 0) - Instead of dynamically loading the OpenGL libraries, use implicit dependencies - NOTE: no GL logging capability and no r_glDriver with GL_HARDLINK 1 - -DEBUG_MEMORY (default 0) - Enables memory logging to file - -LIBC_MALLOC (default 1) - Toggle idHeap memory / libc malloc usage - When libc malloc is on, memory size statistics are wrong ( no _msize ) - -ID_NOLANADDRESS (default 0) - Don't recognize any IP as LAN address. This is useful when debugging network - code where LAN / not LAN influences application behaviour - -ID_MCHECK (default 2) - Perform heap consistency checking - 0: on in Debug / off in Release - 1 forces on, 2 forces off - note that idlib has it's own block allocator/checking - this should not be considered a replacement, but an additional tool - note: this is the same as MALLOC_CHECK_, but different from mtrace - -SETUP_TAGGED (default 0, not saved) - build tagged binaries distribution implies release, excludes other setups - -SETUP_DEDICATED (default 0, not saved) - build dedicated server setup. implies release - -SETUP_DEMO (default 0, not saved) - build demo setup. implies release - -SETUP_FULL (default 0, not saved) - build full setup. implies release - -PATCHLEVEL (default 0) - setup a patchlevel for si_version and installer name since I work Linux releases from a vendor tree and don't modify AutoVersion.h build numbers - -TARGET_GAMEPAK (default 0, not saved) - build a game pak pk4 - if no setup is scheduled, from whatever game is being compiled ( current configuration ) - if setups are scheduled, controls gamepak building during setup ( might wanna use a reference one for pure-compatible updates ) - -SDK (default 0, not saved) - build an SDK release - -NOCURL (default 0) - set to 1 to disable usage of libcurl and http/ftp downloads feature - -FIX_INCLUDE (default 0, not saved) - fix include paths while compiling - wraps around the compiler call to catch and fix include path errors - note that since this process modifies files on the fly, it's not a good idea to use it with several jobs - -FIX_SUPER (default 0, not saved) - fix usage of __super msvc-ism - wraps around gcc to do a search and fix pass - -Q4TEST (default 0) - q4test build - MP-only gamecode, enables binary tagging - -ASSETS (optional, not saved) - point to the setup assets directory - -OSX_BUILDSTYLE (default 0) - Styles 1 & 2 will override CC and CXX only if they are left to the defaults - 0 - Uses the system gcc/include/libs - 1 - Uses GCC 3.3 + 10.3.9 SDK - 2 - Uses GCC 4.0 + 10.4u SDK -""" - -Help( help_string ) - -# end help --------------------------------------- - -# sanity ----------------------------------------- - -EnsureSConsVersion( 0, 96 ) - -# end sanity ------------------------------------- - -# system detection ------------------------------- - -# OS and CPU -OS = commands.getoutput( 'uname -s' ) -if ( OS == 'Linux' ): - cpu = commands.getoutput( 'uname -m' ) - if ( cpu == 'i686' ): - cpu = 'x86' - else: - cpu = 'cpu' -elif ( OS == 'Darwin' ): - cpu = commands.getoutput( 'uname -m' ) - if ( cpu == 'Power Macintosh' ): - cpu = 'ppc' - else: - cpu = 'cpu' - -# end system detection --------------------------- - -# default settings ------------------------------- - -CC = 'gcc' -CXX = 'g++' -JOBS = '1' -BUILD = 'debug' -DEDICATED = '0' -TARGET_CORE = '0' -TARGET_GAME = '1' -TARGET_GAMEPAK = '0' -TARGET_MONO = '0' -TARGET_DEMO = '0' -IDNET_HOST = '' -GL_HARDLINK = '0' -if ( OS == 'Darwin' ): - GL_HARDLINK = '1' -DEBUG_MEMORY = '0' -LIBC_MALLOC = '1' -ID_NOLANADDRESS = '0' -ID_MCHECK = '2' -BUILD_ROOT = 'build' -SETUP_TAGGED = '0' -SETUP_DEDICATED = '0' -SETUP_DEMO = '0' -SETUP_FULL = '0' -SETUP = '0' # no cmdline control, will be set to 1 if any form of setup is requested -SDK = '0' -NOCONF = '0' -NOCURL = '0' -FIX_INCLUDES = '0' -FIX_SUPER = '0' -Q4TEST = '0' -ASSETS = '' -PATCHLEVEL = '0' -OSX_BUILDSTYLE = '0' -SILENT = '0' -TARGET_CORE_SMP = '0' -GCC_X86_ASM = '0' - -# end default settings --------------------------- - -# site settings ---------------------------------- - -if ( not ARGUMENTS.has_key( 'NOCONF' ) or ARGUMENTS['NOCONF'] != '1' ): - site_dict = {} - if (os.path.exists(conf_filename)): - site_file = open(conf_filename, 'r') - p = pickle.Unpickler(site_file) - site_dict = p.load() - print 'Loading build configuration from ' + conf_filename + ':' - for k, v in site_dict.items(): - exec_cmd = k + '=\'' + v + '\'' - print ' ' + exec_cmd - exec(exec_cmd) -else: - print 'Site settings ignored' - -# end site settings ------------------------------ - -# command line settings -------------------------- - -for k in ARGUMENTS.keys(): - exec_cmd = k + '=\'' + ARGUMENTS[k] + '\'' - print 'Command line: ' + exec_cmd - exec( exec_cmd ) - -# end command line settings ---------------------- - -# save site configuration ---------------------- - -if ( not ARGUMENTS.has_key( 'NOCONF' ) or ARGUMENTS['NOCONF'] != '1' ): - for k in serialized: - exec_cmd = 'site_dict[\'' + k + '\'] = ' + k - exec(exec_cmd) - - site_file = open(conf_filename, 'w') - p = pickle.Pickler(site_file) - p.dump(site_dict) - site_file.close() - -# end save site configuration ------------------ - -# configuration rules -------------------------- - -if ( TARGET_GAMEPAK == '1' ): - TARGET_GAME = '1' - -if ( SETUP_TAGGED != '0' or SETUP_DEDICATED != '0' or SETUP_DEMO != '0' or SETUP_FULL != '0' ): - DEDICATED = '2' - BUILD = 'release' - SETUP = '1' - TARGET_GAME = '1' - TARGET_CORE = '1' - TARGET_CORE_SMP = '1' - TARGET_GAMEPAK = '0' - -if ( SETUP != '0' ): - if ( SETUP_TAGGED != '0' ): - SETUP_DEDICATED = '0' - SETUP_DEMO = '0' - SETUP_FULL = '0' - Q4TEST = '1' - else: - Q4TEST = '0' - -if ( g_sdk or SDK != '0' ): - TARGET_CORE = '0' - TARGET_GAME = '1' - TARGET_MONO = '0' - TARGET_DEMO = '0' - -# end configuration rules ---------------------- - -# general configuration, target selection -------- - -g_build = BUILD_ROOT + '/' + BUILD - -SConsignFile( 'scons.signatures' ) - -if ( GL_HARDLINK != '0' ): - g_build += '-hardlink' - -if ( DEBUG_MEMORY != '0' ): - g_build += '-debugmem' - -if ( LIBC_MALLOC != '1' ): - g_build += '-nolibcmalloc' - -if ( Q4TEST != '0' ): - g_build += '-q4test' - -SetOption('num_jobs', JOBS) - -LINK = CXX - -# common flags -# BASE + CORE + OPT for engine -# BASE + GAME + OPT for game -# _noopt versions of the environements are built without the OPT - -BASECPPFLAGS = [ ] -CORECPPPATH = [ ] -CORELIBPATH = [ ] -CORECPPFLAGS = [ ] -GAMECPPFLAGS = [ ] -BASELINKFLAGS = [ ] -CORELINKFLAGS = [ ] - -# for release build, further optimisations that may not work on all files -OPTCPPFLAGS = [ ] - -BASECPPFLAGS.append( '-pipe' ) -# warn all -BASECPPFLAGS.append( '-w' ) -# don't wrap gcc messages -BASECPPFLAGS.append( '-fmessage-length=0' ) - -if ( OS == 'Linux' ): - # gcc 4.x option only - only export what we mean to from the game SO - BASECPPFLAGS.append( '-fvisibility=hidden' ) - # get the 64 bits machine on the distcc array to produce 32 bit binaries :) - BASECPPFLAGS.append( '-m32' ) - BASELINKFLAGS.append( '-m32' ) - BASELINKFLAGS.append( '-ldl' ) - BASELINKFLAGS.append('-Xlinker') - BASELINKFLAGS.append('-Map') - BASELINKFLAGS.append('-Xlinker') - BASELINKFLAGS.append('linux.map') - -if ( g_sdk or SDK != '0' ): - BASECPPFLAGS.append( '-DQ4SDK' ) - -if ( Q4TEST == '1' ): - # _MPBETA implie ID_TAGGED_BUILD but also disables some single player functionality - #BASECPPFLAGS.append( '-D_MPBETA' ) - BASECPPFLAGS.append( '-DID_TAGGED_BUILD' ) - -if ( OS == 'Darwin' ): - # a few more common defines - BASECPPFLAGS += [ '-Wno-long-double', '-arch', 'ppc', '-fasm-blocks', '-fpascal-strings', '-faltivec', '-mcpu=G5', '-mtune=G5' ] - BASECPPFLAGS += [ '-DMACOS_X' ] - BASECPPFLAGS += [ '-Wno-unknown-pragmas' ] - BASECPPFLAGS += [ '-DMAC_OS_X_VERSION_MIN_REQUIRED=1030' ] - # Override CC & CXX only if they contain the default values. Allows for distcc invocations - if ( OSX_BUILDSTYLE == '1' ): - if ( CC == 'gcc' ): - CC = [ '/usr/bin/gcc-3.3' ] - if ( CXX == 'g++' ): - CXX = [ '/usr/bin/g++-3.3' ] - - BASECPPFLAGS += [ '-isystem', '/Developer/SDKs/MacOSX10.3.9.sdk/usr/include/gcc/darwin/3.3' ] - BASECPPFLAGS += [ '-I/Developer/SDKs/MacOSX10.3.9.sdk/usr/include/gcc/darwin/3.3/c++' ] - BASECPPFLAGS += [ '-I/Developer/SDKs/MacOSX10.3.9.sdk/usr/include/gcc/darwin/3.3/c++/ppc-darwin' ] - BASECPPFLAGS += [ '-isystem', '/Developer/SDKs/MacOSX10.3.9.sdk/usr/include' ] - BASELINKFLAGS += [ '-Wl,-syslibroot,/Developer/SDKs/MacOSX10.3.9.sdk' ] - CORELIBPATH += [ '/Developer/SDKs/MacOSX10.3.9.sdk/usr/lib' ] - os.environ['NEXT_ROOT'] = '/Developer/SDKs/MacOSX10.3.9.sdk' - os.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.3' - elif ( OSX_BUILDSTYLE == '2' ): - if ( CC == 'gcc' ): - CC = [ '/usr/bin/gcc-4.0' ] - if ( CXX == 'g++' ): - CXX = [ '/usr/bin/g++-4.0' ] - - BASECPPFLAGS += [ '-isystem', '/Developer/SDKs/MacOSX10.4u.sdk/usr/include/gcc/darwin/4.0' ] - BASECPPFLAGS += [ '-mone-byte-bool' ] - BASECPPFLAGS += [ '-fvisibility-inlines-hidden' ] - BASECPPFLAGS += [ '-fpermissive' ] - BASECPPFLAGS += [ '-I/Developer/SDKs/MacOSX10.4u.sdk/usr/include/gcc/darwin/4.0/c++' ] - BASECPPFLAGS += [ '-I/Developer/SDKs/MacOSX10.4u.sdk/usr/include/gcc/darwin/4.0/c++/ppc-darwin' ] - BASECPPFLAGS += [ '-isystem', '/Developer/SDKs/MacOSX10.4u.sdk/usr/include' ] - BASELINKFLAGS += [ '-Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk' ] - CORELIBPATH += [ '/Developer/SDKs/MacOSX10.4u.sdk/usr/lib' ] - os.environ['NEXT_ROOT'] = '/Developer/SDKs/MacOSX10.4u.sdk' - os.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.3' - -if ( BUILD == 'debug-all' ): - BASECPPFLAGS.append( '-g' ) - BASECPPFLAGS.append( '-D_DEBUG' ) - if ( ID_MCHECK == '0' ): - ID_MCHECK = '1' -elif ( BUILD == 'debug' ): - BASECPPFLAGS.append( '-g' ) - BASECPPFLAGS.append( '-O1' ) - BASECPPFLAGS.append( '-D_DEBUG' ) - if ( ID_MCHECK == '0' ): - ID_MCHECK = '1' -elif ( BUILD == 'release' ): - BASECPPFLAGS.append( '-D_FINAL' ) - if ( OS == 'Linux' ): - # -fomit-frame-pointer: "-O also turns on -fomit-frame-pointer on machines where doing so does not interfere with debugging." - # on x86 have to set it explicitely - # -finline-functions: implicit at -O3 - # -fschedule-insns2: implicit at -O2 - # no-unsafe-math-optimizations: that should be on by default really. hit some wonko bugs in physics code because of that -# 1.3 OPTCPPFLAGS = [ '-O3', '-march=pentium3', '-Winline', '-ffast-math', '-fno-unsafe-math-optimizations', '-fomit-frame-pointer' ] - OPTCPPFLAGS = [ '-O3', '-march=i686', '-Winline', '-ffast-math', '-fomit-frame-pointer', '-finline-functions', '-fschedule-insns2' ] - if ( ID_MCHECK == '0' ): - ID_MCHECK = '2' - elif ( OS == 'Darwin' ): - OPTCPPFLAGS = [ '-O3', '-falign-functions=16', '-falign-loops=16', '-finline' ] -elif ( BUILD == 'testing' ): - BASELINKFLAGS.append( '--export-dynamic' ) - BASECPPFLAGS.append( '-D_FINAL' ) - if ( OS == 'Linux' ): - OPTCPPFLAGS = [ '-O3', '-march=i686', '-DTIME_LIMITED_TEST', '-Winline', '-ffast-math', '-fomit-frame-pointer', '-finline-functions', '-fschedule-insns2' ] -# 1.3 flags OPTCPPFLAGS = [ '-O3', '-march=pentium3', '-DTIME_LIMITED_TEST', '-Winline', '-ffast-math', '-fno-unsafe-math-optimizations', '-fomit-frame-pointer' ] - if ( ID_MCHECK == '0' ): - ID_MCHECK = '2' - elif ( OS == 'Darwin' ): - OPTCPPFLAGS = [ '-O3', '-falign-functions=16', '-falign-loops=16', '-finline' ] -else: - print 'Unknown build configuration ' + BUILD - sys.exit(0) - -if ( GL_HARDLINK != '0' ): - CORECPPFLAGS.append( '-DID_GL_HARDLINK' ) - -if ( DEBUG_MEMORY != '0' ): - BASECPPFLAGS += [ '-DID_DEBUG_MEMORY', '-DID_REDIRECT_NEWDELETE' ] - -if ( LIBC_MALLOC != '1' ): - BASECPPFLAGS.append( '-DUSE_LIBC_MALLOC=0' ) - -if ( len( IDNET_HOST ) ): - CORECPPFLAGS.append( '-DIDNET_HOST=\\"%s\\"' % IDNET_HOST ) - -if ( ID_NOLANADDRESS != '0' ): - CORECPPFLAGS.append( '-DID_NOLANADDRESS' ) - -if ( ID_MCHECK == '1' ): - BASECPPFLAGS.append( '-DID_MCHECK' ) - -CORECPPFLAGS.append( '-DID_PATCHLEVEL=\\".%s\\"' % PATCHLEVEL ) - -# create the build environements - -if ( FIX_INCLUDES == '1' ): - CC = './sys/scons/fixincludes.py \'' + CC + '\'' - CXX = './sys/scons/fixincludes.py \'' + CXX + '\'' - -if ( FIX_SUPER == '1' ): - CC = './sys/scons/fixsuper.py \'' + CC + '\'' - CXX = './sys/scons/fixsuper.py \'' + CXX + '\'' - -g_base_env = Environment( ENV = os.environ, CC = CC, CXX = CXX, LINK = LINK, CPPFLAGS = BASECPPFLAGS, LINKFLAGS = BASELINKFLAGS, CPPPATH = CORECPPPATH, LIBPATH = CORELIBPATH, OS = OS ) -scons_utils.SetupUtils( g_base_env ) -g_base_env.Append( CXXFLAGS = [ '-Wno-invalid-offsetof' ] ) - -g_env = g_base_env.Copy() - -g_env['CPPFLAGS'] += OPTCPPFLAGS -g_env['CPPFLAGS'] += CORECPPFLAGS -g_env['LINKFLAGS'] += CORELINKFLAGS - -if ( BUILD != 'release' ): - g_env_noopt = g_env.Copy() -else: - g_env_noopt = g_base_env.Copy() - g_env_noopt['CPPFLAGS'] += CORECPPFLAGS -# g_env_noopt.Append( CPPFLAGS = '-O1' ) - g_env_noopt['LINKFLAGS'] += CORELINKFLAGS - -g_game_env = g_base_env.Copy() -g_game_env['CPPFLAGS'] += OPTCPPFLAGS -g_game_env['CPPFLAGS'] += GAMECPPFLAGS - -# maintain this dangerous optimization off at all times -g_env.Append( CPPFLAGS = '-fno-strict-aliasing' ) -g_env_noopt.Append( CPPFLAGS = '-fno-strict-aliasing' ) -g_game_env.Append( CPPFLAGS = '-fno-strict-aliasing' ) - -if ( int(JOBS) > 1 ): - print 'Using buffered process output' - silent = False - if ( SILENT == '1' ): - silent = True - scons_utils.SetupBufferedOutput( g_env, silent ) - scons_utils.SetupBufferedOutput( g_game_env, silent ) - -# mark the globals - -local_dedicated = 0 -# 0 for monolithic build -local_gamedll = 1 -# carry around rather than using .a, avoids binutils bugs -idlib_objects = [] -renlib_objects = [] -game_objects = [] -local_demo = 0 -# curl usage. there is a global toggle flag -local_curl = 0 -curl_lib = [] -# if idlib should produce PIC objects ( depending on core or game inclusion ) -local_idlibpic = 0 -eventdefs = None -# compile for SMP ( affects idlib and core ) -local_smp = 0 -idsdl_info = [] - -GLOBALS = 'g_env g_env_noopt g_game_env OS ID_MCHECK idlib_objects renlib_objects game_objects local_dedicated local_gamedll local_demo local_idlibpic curl_lib local_curl local_smp idsdl_info eventdefs GL_HARDLINK NOCURL Q4TEST OSX_BUILDSTYLE TARGET_CORE_SMP BUILD GCC_X86_ASM' - -# end general configuration ---------------------- - -# targets ---------------------------------------- - -Export( 'GLOBALS ' + GLOBALS ) - -quake4 = None -q4ded = None -game = None -q4_mon = None - -Default( None ) - -# build curl if needed -if ( NOCURL == '0' and ( TARGET_CORE == '1' or TARGET_MONO == '1' ) ): - # 1: debug, 2: release - if ( BUILD == 'release' ): - local_curl = 2 - else: - local_curl = 1 - Export( 'GLOBALS ' + GLOBALS ) - curl_lib = SConscript( 'sys/scons/SConscript.curl' ) - -# build our custom SDL library if needed -if ( TARGET_CORE_SMP == '1' ): - Export( 'GLOBALS ' + GLOBALS ) - BuildDir( g_build + '/sdl', '.', duplicate = 0 ) - idsdl_info = SConscript( 'sys/scons/SConscript.idsdl' ) - -if ( TARGET_CORE_SMP == '1' ): - local_gamedll = 1 - local_demo = 0 - local_idlibpic = 0 - local_dedicated = 0 - local_smp = 1 - Export( 'GLOBALS ' + GLOBALS ) - BuildDir( g_build + '/core-smp/glimp', '.', duplicate = 1 ) - SConscript( g_build + '/core-smp/glimp/sys/scons/SConscript.gl' ) - BuildDir( g_build + '/core-smp', '.', duplicate = 0 ) - idlib_objects = SConscript( g_build + '/core-smp/sys/scons/SConscript.idlib' ) - Export( 'GLOBALS ' + GLOBALS ) # update idlib_objects - quake4smp = SConscript( g_build + '/core-smp/sys/scons/SConscript.core' ) - - if ( OS == 'Linux' ): - Default( InstallAs( '#quake4smp.%s' % cpu, quake4smp ) ) - -if ( TARGET_CORE == '1' ): - local_gamedll = 1 - local_demo = 0 - local_idlibpic = 0 - local_smp = 0 - if ( DEDICATED == '0' or DEDICATED == '2' ): - local_dedicated = 0 - Export( 'GLOBALS ' + GLOBALS ) - - BuildDir( g_build + '/core/glimp', '.', duplicate = 1 ) - SConscript( g_build + '/core/glimp/sys/scons/SConscript.gl' ) - BuildDir( g_build + '/core', '.', duplicate = 0 ) - idlib_objects = SConscript( g_build + '/core/sys/scons/SConscript.idlib' ) - Export( 'GLOBALS ' + GLOBALS ) # update idlib_objects - quake4 = SConscript( g_build + '/core/sys/scons/SConscript.core' ) - - if ( OS == 'Linux' ): - Default( InstallAs( '#quake4.%s' % cpu, quake4 ) ) - - if ( DEDICATED == '1' or DEDICATED == '2' ): - local_dedicated = 1 - Export( 'GLOBALS ' + GLOBALS ) - - BuildDir( g_build + '/dedicated/glimp', '.', duplicate = 1 ) - SConscript( g_build + '/dedicated/glimp/sys/scons/SConscript.gl' ) - BuildDir( g_build + '/dedicated', '.', duplicate = 0 ) - idlib_objects = SConscript( g_build + '/dedicated/sys/scons/SConscript.idlib' ) - Export( 'GLOBALS ' + GLOBALS ) - q4ded = SConscript( g_build + '/dedicated/sys/scons/SConscript.core' ) - - if ( OS == 'Linux' ): - Default( InstallAs( '#q4ded.%s' % cpu, q4ded ) ) - -if ( TARGET_GAME == '1' ): - local_gamedll = 1 - local_demo = 0 - local_dedicated = 0 - local_idlibpic = 0 - Export( 'GLOBALS ' + GLOBALS ) - dupe = 0 - if ( SDK == '1' ): - # building an SDK, use scons for dependencies walking - # clear the build directory to be safe - g_env.PreBuildSDK( g_build + '/game', PATCHLEVEL ) - dupe = 1 - BuildDir( g_build + '/game', '.', duplicate = dupe ) - idlib_objects = SConscript( g_build + '/game/sys/scons/SConscript.botlib' ) - renlib_objects = SConscript( g_build + '/game/sys/scons/SConscript.renderer' ) - Export( 'GLOBALS ' + GLOBALS ) - game = SConscript( g_build + '/game/sys/scons/SConscript.quake3' ) - - if ( OS == 'Darwin' ): - Default( InstallAs( '#game.so' , game ) ) - else: - Default( InstallAs( '#shizzlefoo%s.so' % cpu, game ) ) - -if ( TARGET_MONO == '1' ): - # the game in a single piece - local_gamedll = 0 - local_dedicated = 0 - local_demo = 0 - local_idlibpic = 0 - if ( DEDICATED == '0' or DEDICATED == '2' ): - Export( 'GLOBALS ' + GLOBALS ) - BuildDir( g_build + '/mono/glimp', '.', duplicate = 1 ) - SConscript( g_build + '/mono/glimp/sys/scons/SConscript.gl' ) - BuildDir( g_build + '/mono', '.', duplicate = 0 ) - idlib_objects = SConscript( g_build + '/mono/sys/scons/SConscript.idlib' ) - game_objects = SConscript( g_build + '/mono/sys/scons/SConscript.game' ) - Export( 'GLOBALS ' + GLOBALS ) - q4_mono = SConscript( g_build + '/mono/sys/scons/SConscript.core' ) - - if ( OS == 'Linux' ): - Default( InstallAs( '#q4mono.%s' % cpu, q4_mono ) ) - - if ( DEDICATED == '1' or DEDICATED == '2' ): - local_dedicated = 1 - Export( 'GLOBALS ' + GLOBALS ) - BuildDir( g_build + '/monoded/glimp', '.', duplicate = 1 ) - SConscript( g_build + '/monoded/glimp/sys/scons/SConscript.gl' ) - BuildDir( g_build + '/monoded', '.', duplicate = 0 ) - idlib_objects = SConscript( g_build + '/monoded/sys/scons/SConscript.idlib' ) - game_objects = SConscript( g_build + '/monoded/sys/scons/SConscript.game' ) - Export( 'GLOBALS ' + GLOBALS ) - q4_monoded = SConscript( g_build + '/monoded/sys/scons/SConscript.core' ) - - if ( OS == 'Linux' ): - Default( InstallAs( '#q4monoded.%s' % cpu, q4_monoded ) ) - -if ( OS == 'Darwin' ): - src = [] - if ( TARGET_CORE == '1' ): - if ( DEDICATED == '0' or DEDICATED == '2' ): - src.append( quake4 ) - if ( DEDICATED == '1' or DEDICATED == '2' ): - src.append( q4ded ) - if ( TARGET_MONO == '1' ): - if ( DEDICATED == '0' or DEDICATED == '2' ): - src.append( q4_mono ) - if ( DEDICATED == '1' or DEDICATED == '2' ): - src.append( q4_monoded ) - if ( len( src ) ): - q4mac = Command( 'q4mac', src, Action( g_env.BuildBundle ) ) - Default( q4mac ) - -if ( SETUP == '1' ): - brandelf = Program( 'brandelf', 'sys/linux/setup/brandelf.c' ) - setup_source = [ brandelf, quake4, q4ded, game, quake4smp ] - do_gamepak = ( TARGET_GAMEPAK != '0' ) - setups = [] - if ( SETUP_TAGGED == '1' ): - g_env_tagged = g_env.Copy() - g_env_tagged.Prepare( do_gamepak, ASSETS, PATCHLEVEL ) - setup_tagged = Command( 'setup_tagged', setup_source, Action( g_env_tagged.BuildSetup ) ) - Default( setup_tagged ) - setups.append( setup_tagged ) - if ( SETUP_DEMO == '1' ): - g_env_demo = g_env.Copy() - g_env_demo.Prepare( do_gamepak, ASSETS, PATCHLEVEL ) - setup_demo = Command( 'setup_demo', setup_source, Action( g_env_demo.BuildSetup ) ) - Default( setup_demo ) - setups.append( setup_demo ) - if ( SETUP_DEDICATED == '1' ): - g_env_ded = g_env.Copy() - g_env_ded.Prepare( do_gamepak, ASSETS, PATCHLEVEL ) - setup_ded = Command( 'setup_ded', setup_source, Action( g_env_ded.BuildSetup ) ) - Default( setup_ded ) - setups.append( setup_ded ) - if ( SETUP_FULL == '1' ): - g_env_full = g_env.Copy() - g_env_full.Prepare( do_gamepak, ASSETS, PATCHLEVEL ) - setup_full = Command( 'setup_full', setup_source, Action( g_env_full.BuildSetup ) ) - Default( setup_full ) - setups.append( setup_full ) - # setup dependencies so they are built sequentially - i = 1 - while ( i < len( setups ) ): - Depends( setups[ i ], setups[ i - 1 ] ) - i += 1 -else: - if ( TARGET_GAMEPAK == '1' ): - game_pak = Command( 'gamepak', game, Action( g_env.BuildGamePak ) ) - Default( game_pak ) - -if ( SDK != '0' ): - setup_sdk = Command( 'sdk', [ ], Action( g_env.BuildSDK ) ) - Default( setup_sdk ) - g_env.Depends( setup_sdk, game ) - -# end targets ------------------------------------ diff --git a/sys/premake5.lua b/build/premake5.lua similarity index 84% rename from sys/premake5.lua rename to build/premake5.lua index 39d676b..f08c1df 100644 --- a/sys/premake5.lua +++ b/build/premake5.lua @@ -19,57 +19,41 @@ if not _OPTIONS["quake3dir"] then error "quake3dir must be specified on the command-line" end +-- relative to the LUA script path_root = "../.." path_src = path_root.."/cnq3/code" -path_build = path_root.."/.build" +path_build = path_root.."/cnq3/build" path_bin = path_root.."/.bin" os.mkdir(path_bin) -abs_path_cnq3_repo = os.realpath(path_root.."/cnq3") -abs_path_git_scripts = os.realpath(path_root.."/cnq3tools/git") -abs_path_git_header = path.getabsolute(path_root.."/cnq3/code/qcommon/git.h") -- may not exist yet -abs_path_q3 = os.realpath(_OPTIONS["quake3dir"]) -abs_path_bin = os.realpath(path_bin) +-- relative to the makefile +make_path_git_scripts = "../../../cnq3tools/git" +make_path_git_header = "../../code/qcommon/git.h" +make_path_bin = "../../../.bin" -local function LIN_CreateGitPreBuildCommand() +abs_path_q3 = path.getabsolute(_OPTIONS["quake3dir"]) -- os.realpath won't work if we pass in an env. var. here - -- os.realpath is problematic on Linux - local abs_path_script = path.getabsolute(string.format("%s/create_git_header.sh", abs_path_git_scripts)) +local function CreateGitPreBuildCommand(scriptExtension) - return string.format("cd \"%s\" && \"%s\" \"%s\"", abs_path_cnq3_repo, abs_path_script, abs_path_git_header) + local make_path_script = string.format("%s/create_git_header%s", make_path_git_scripts, scriptExtension) + + return string.format("\"%s\" \"%s\"", make_path_script, make_path_git_header) end -local function WIN_CreateGitPreBuildCommand() +local function CreateExeCopyPostBuildCommand(copyCommand, exeName, exeExtension) - local abs_path_script = os.realpath(string.format("%s/create_git_header.cmd", abs_path_git_scripts)) + local make_path_exe = string.format("%s/%s/%s%s", make_path_bin, "%{cfg.buildcfg}", exeName, exeExtension) - return string.format("cd \"%s\" && \"%s\" \"%s\"", abs_path_cnq3_repo, abs_path_script, abs_path_git_header) - -end - -local function LIN_CreateExeCopyPostBuildCommand(exeName) - - -- os.realpath fails on Linux due to the %{cfg.buildcfg} token - local abs_path_exe = path.getabsolute(string.format("%s/%s/%s", abs_path_bin, "%{cfg.buildcfg}", exeName)) - - return string.format("cp \"%s\" \"%s\"", abs_path_exe, abs_path_q3) - -end - -local function WIN_CreateExeCopyPostBuildCommand(exeName) - - local abs_path_exe = os.realpath(string.format("%s/%s/%s.exe", abs_path_bin, "%{cfg.buildcfg}", exeName)) - - return string.format("copy \"%s\" \"%s\"", abs_path_exe, abs_path_q3) + return string.format("%s \"%s\" \"%s\"", copyCommand, make_path_exe, abs_path_q3) end local function WIN_CreatePdbCopyPostBuildCommand(exeName) - local abs_path_pdb = string.format("%s\\%s\\%s.pdb", abs_path_bin, "%{cfg.buildcfg}", exeName) + local make_path_pdb = string.format("%s/%s/%s.pdb", make_path_bin, "%{cfg.buildcfg}", exeName) - return string.format("copy \"%s\" \"%s\"", abs_path_pdb, abs_path_q3) + return string.format("copy \"%s\" \"%s\"", make_path_pdb, abs_path_q3) end @@ -215,6 +199,8 @@ local function ApplyExeProjectSettings(exeName, server) ApplyProjectSettings() filter { } + + targetname(exeName) local server_sources = { @@ -379,12 +365,12 @@ local function ApplyExeProjectSettings(exeName, server) -- it seems that "filter" doesn't work with "prebuildcommands", "postbuildcommands" filter { } if os.is("windows") then - postbuildcommands { WIN_CreateExeCopyPostBuildCommand(exeName) } - postbuildcommands { WIN_CreatePdbCopyPostBuildCommand(exeName) } - prebuildcommands { WIN_CreateGitPreBuildCommand() } + prebuildcommands { path.translate(CreateGitPreBuildCommand(".cmd"), "\\") } + postbuildcommands { path.translate(CreateExeCopyPostBuildCommand("copy", exeName, ".exe"), "\\") } + postbuildcommands { path.translate(WIN_CreatePdbCopyPostBuildCommand(exeName), "\\") } else - postbuildcommands { LIN_CreateExeCopyPostBuildCommand(exeName) } - prebuildcommands { LIN_CreateGitPreBuildCommand() } + prebuildcommands { CreateGitPreBuildCommand(".sh") } + postbuildcommands { CreateExeCopyPostBuildCommand("cp -u", exeName, "") } end -- create VC++ debug settings @@ -427,6 +413,11 @@ local function ApplyExeProjectSettings(exeName, server) end +exe_suffix = ""; +if os.is("linux") then + exe_suffix = "-x86" +end + solution "cnq3" location ( path_build.."/".._ACTION ) @@ -437,14 +428,14 @@ solution "cnq3" kind "WindowedApp" language "C++" - ApplyExeProjectSettings("cnq3", 0) + ApplyExeProjectSettings("cnq3"..exe_suffix, 0) project "cnq3-server" kind "WindowedApp" language "C++" defines { "DEDICATED" } - ApplyExeProjectSettings("cnq3-server", 1) + ApplyExeProjectSettings("cnq3-server"..exe_suffix, 1) project "botlib" diff --git a/sys/scons/SConscript.game b/sys/scons/SConscript.game deleted file mode 100644 index 561be6f..0000000 --- a/sys/scons/SConscript.game +++ /dev/null @@ -1,35 +0,0 @@ -# -*- mode: python -*- -# Quake4 build script -# TTimo -# http://scons.sourceforge.net - -import sys, os -import scons_utils - -Import( 'GLOBALS' ) -Import( GLOBALS ) - -proj_list = scons_utils.ExtractSource( File( '#game.vcproj' ).abspath ) - -for i in range( len( proj_list ) ): - proj_list[ i ] = '../../' + proj_list[ i ] - -local_env = g_game_env.Copy() - -if ( local_demo == 1 ): - local_env.Append( CPPDEFINES = [ 'ID_DEMO_BUILD' ] ) - -if ( local_gamedll == 1 ): - local_env.Append( CPPDEFINES = [ 'GAME_DLL' ] ) - ret = local_env.SharedLibrarySafe( local_env, 'game', proj_list + idlib_objects ) - if ( OSX_BUILDSTYLE == '2' ): - local_env.Append( CPPFLAGS = [ '-fvisibility=hidden' ] ) - Return( 'ret' ) -else: - local_env.Append( CPPDEFINES = [ 'GAME_MONO' ] ) - ret_list = [] - for i in proj_list: - ret_list += local_env.StaticObject( source = i ) - Return( 'ret_list' ) - - diff --git a/sys/scons/SConscript.idlib b/sys/scons/SConscript.idlib deleted file mode 100644 index b1d31c5..0000000 --- a/sys/scons/SConscript.idlib +++ /dev/null @@ -1,50 +0,0 @@ -# -*- mode: python -*- -# Quake4 build script -# TTimo -# http://scons.sourceforge.net - -import os.path, scons_utils - -Import( 'GLOBALS' ) -Import( GLOBALS ) - -idlib_list = scons_utils.ExtractSource( File( '#idlib.vcproj' ).abspath ) -asm_files = [ 'idlib/math/Simd_MMX.cpp' ] - -for i in asm_files: - idlib_list.remove( i ) - -local_env = g_env.Copy() -if ( local_smp == 1 and local_idlibpic == 0 ): - # idlib compiled for SMP engine code needs the define - local_env.Append( CPPDEFINES = [ 'ENABLE_INTEL_SMP' ] ) -if ( GCC_X86_ASM == '1' ): - local_env.Append( CPPDEFINES = [ 'ID_GCC_X86_ASM' ] ) - -no_unsafe_env = local_env.Copy() -no_unsafe_env.Append (CPPFLAGS = [ '-fno-unsafe-math-optimizations' ] ) - -with_asm_env = g_env_noopt.Copy() -with_asm_env.Append( CPPFLAGS = [ '-masm=intel' ] ) - -ret_list = [] -for f in idlib_list: - if ( local_idlibpic == 0 ): - ret_list += local_env.StaticObject( source = os.path.join( '../..', f ) ) - else: - ret_list += local_env.SharedObject( source = os.path.join( '../..', f ) ) - -if ( GCC_X86_ASM == '1' ): - for f in asm_files: - if ( local_idlibpic == 0 ): - ret_list += with_asm_env.StaticObject( source = os.path.join( '../..', f ) ) - else: - ret_list += with_asm_env.SharedObject( source = os.path.join( '../..', f ) ) - - -if ( local_idlibpic == 0 ): - ret_list += no_unsafe_env.StaticObject( source = '../../idlib/math/Matrix_gcc.cpp' ) -else: - ret_list += no_unsafe_env.SharedObject( source = '../../idlib/math/Matrix_gcc.cpp' ) - -Return( 'ret_list' ) diff --git a/sys/scons/scons_utils.py b/sys/scons/scons_utils.py deleted file mode 100644 index cd22e29..0000000 --- a/sys/scons/scons_utils.py +++ /dev/null @@ -1,205 +0,0 @@ -# -*- mode: python -*- -import sys, os, string, time, commands, re, pickle, StringIO, popen2, commands, pdb, zipfile -import SCons - -# need an Environment and a matching buffered_spawn API .. encapsulate -class idBuffering: - - def buffered_spawn( self, sh, escape, cmd, args, env ): - stderr = StringIO.StringIO() - stdout = StringIO.StringIO() - command_string = '' - for i in args: - if ( len( command_string ) ): - command_string += ' ' - command_string += i - try: - retval = self.env['PSPAWN']( sh, escape, cmd, args, env, stdout, stderr ) - except OSError, x: - if x.errno != 10: - raise x - print 'OSError ignored on command: %s' % command_string - retval = 0 - print command_string - sys.stdout.write( stdout.getvalue() ) - sys.stderr.write( stderr.getvalue() ) - return retval - -class idSetupBase: - - def SimpleCommand( self, cmd ): - print cmd - ret = commands.getstatusoutput( cmd ) - if ( len( ret[ 1 ] ) ): - sys.stdout.write( ret[ 1 ] ) - sys.stdout.write( '\n' ) - if ( ret[ 0 ] != 0 ): - raise 'command failed' - return ret[ 1 ] - - def TrySimpleCommand( self, cmd ): - print cmd - ret = commands.getstatusoutput( cmd ) - sys.stdout.write( ret[ 1 ] ) - - def M4Processing( self, file, d ): - file_out = file[:-3] - cmd = 'm4 ' - for ( key, val ) in d.items(): - cmd += '--define=%s="%s" ' % ( key, val ) - cmd += '%s > %s' % ( file, file_out ) - self.SimpleCommand( cmd ) - - def ExtractProtocolVersion( self ): - f = open( 'framework/Licensee.h' ) - l = f.readlines() - f.close() - - major = 'X' - p = re.compile( '^#define ASYNC_PROTOCOL_MAJOR\t*(.*)' ) - for i in l: - if ( p.match( i ) ): - major = p.match( i ).group(1) - break - - f = open( 'framework/async/AsyncNetwork.h' ) - l = f.readlines() - f.close() - - minor = 'X' - p = re.compile( '^const int ASYNC_PROTOCOL_MINOR\t*= (.*);' ) - for i in l: - if ( p.match( i ) ): - minor = p.match( i ).group(1) - break - - return '%s.%s' % ( major, minor ) - - def ExtractEngineVersion( self ): - f = open( 'framework/Licensee.h' ) - l = f.readlines() - f.close() - - version = 'X' - p = re.compile( '^#define.*ENGINE_VERSION\t*"DOOM (.*)"' ) - for i in l: - if ( p.match( i ) ): - version = p.match( i ).group(1) - break - - return version - - def ExtractBuildVersion( self ): - f = open( 'framework/BuildVersion.h' ) - l = f.readlines()[ 4 ] - f.close() - pat = re.compile( '.* = (.*);\n' ) - return pat.split( l )[ 1 ] - -def checkLDD( target, source, env ): - file = target[0] - if (not os.path.isfile(file.abspath)): - print('ERROR: CheckLDD: target %s not found\n' % target[0]) - Exit(1) - ( status, output ) = commands.getstatusoutput( 'ldd -r %s' % file ) - if ( status != 0 ): - print 'ERROR: ldd command returned with exit code %d' % ldd_ret - os.system( 'rm %s' % target[ 0 ] ) - sys.exit(1) - lines = string.split( output, '\n' ) - have_undef = 0 - for i_line in lines: - #print repr(i_line) - regex = re.compile('undefined symbol: (.*)\t\\((.*)\\)') - if ( regex.match(i_line) ): - symbol = regex.sub('\\1', i_line) - try: - env['ALLOWED_SYMBOLS'].index(symbol) - except: - have_undef = 1 - if ( have_undef ): - print output - print "ERROR: undefined symbols" - os.system('rm %s' % target[0]) - sys.exit(1) - -def SharedLibrarySafe( env, target, source ): - ret = env.SharedLibrary( target, source ) - if ( env['OS'] != 'Darwin' ): - env.AddPostAction( ret, checkLDD ) - return ret - -def NotImplementedStub( *whatever ): - print 'Not Implemented' - sys.exit( 1 ) - -# -------------------------------------------------------------------- - -# get a clean error output when running multiple jobs -def SetupBufferedOutput( env ): - buf = idBuffering() - buf.env = env - env['SPAWN'] = buf.buffered_spawn - -# setup utilities on an environement -def SetupUtils( env ): - env.SharedLibrarySafe = SharedLibrarySafe - if ( os.path.exists( 'sys/scons/SDK.py' ) ): - import SDK - sdk = SDK.idSDK() - env.PreBuildSDK = sdk.PreBuildSDK - env.BuildSDK = sdk.BuildSDK - else: - env.PreBuildSDK = NotImplementedStub - env.BuildSDK = NotImplementedStub - - if ( os.path.exists( 'sys/scons/Setup.py' ) ): - import Setup - setup = Setup.idSetup() - env.Prepare = setup.Prepare - env.BuildSetup = setup.BuildSetup - env.BuildGamePak = setup.BuildGamePak - else: - env.Prepare = NotImplementedStub - env.BuildSetup = NotImplementedStub - env.BuildGamePak = NotImplementedStub - - if ( os.path.exists( 'sys/scons/OSX.py' ) ): - import OSX - OSX = OSX.idOSX() - env.BuildBundle = OSX.BuildBundle - else: - env.BuildBundle = NotImplementedStub - -def BuildList( s_prefix, s_string ): - s_list = string.split( s_string ) - for i in range( len( s_list ) ): - s_list[ i ] = s_prefix + '/' + s_list[ i ] - return s_list - -def ExtractSource( file ): - from xml.dom.minidom import parse - dom = parse( file ) - files = dom.getElementsByTagName( 'File' ) - l = [] - for i in files: - s = i.getAttribute( 'RelativePath' ) - s = s.encode('ascii', 'ignore') - s = re.sub( '\\\\', '/', s ) - s = re.sub( '^\./', '', s ) - - # this is a bit of a hack, and should probably be thought about more. - # if the file is excluded from the Release|win32 config it will be excluded in linux. - # Not necessarily correct, but thats how it will be for now. Could add a linux config - # if we get files that only want to exclude in one and not the other. - exclude = 0 - configs = i.getElementsByTagName( 'FileConfiguration') - for thisConfig in configs: - if (string.lower(thisConfig.getAttribute('ExcludedFromBuild')) == 'true' and - string.lower(thisConfig.getAttribute('Name')) == 'release|win32'): - exclude = 1 - - if (exclude == 0) and (( string.lower( s[-4:] ) == '.cpp' or string.lower( s[-2:] ) == '.c' )): - l.append( s ) - - return l