📄 makefile
字号:
#
# Quake3 Unix Makefile
#
# Currently build for the following:
# Linux i386 (full client)
# Linux Alpha (dedicated server only) (TTimo: dropped)
# FreeBSD i386 (dedicated server only) (TTimo: maybe worth updating)
# SGI IRIX (full client) (TTimo: who's in charge - dropped otherwise)
# Linux PPC (full client) (TTimo: dropped)
#
# Nov '98 by Zoid <zoid@idsoftware.com>
#
# Loki Hacking by Bernd Kreimeier
# and a little more by Ryan C. Gordon.
# and a little more by Rafael Barrero
#
# GNU Make required
#
PLATFORM=$(shell uname|tr A-Z a-z)
PLATFORM_RELEASE=$(shell uname -r)
###
### These paths are where you probably want to change things
###
# Where we are building from (where the source code should be!)
MOUNT_DIR=../
# Where we are building to, libMesaVoodooGL.so.3.3 should be here, etc.
# the demo pk3 file should be here in demoq3/pak0.pk3 or baseq3/pak0.pk3
BDIR=$(MOUNT_DIR)/../run
# Build name
# BUILD_NAME=$(BUILD_NAME)
BUILD_NAME=quake3.x86
#############################################################################
##
## You shouldn't have to touch anything below here
##
#############################################################################
BASEQ3_DIR=$(BDIR)/baseq3
BD=debug$(ARCH)$(GLIBC)
BR=release$(ARCH)$(GLIBC)
CDIR=$(MOUNT_DIR)/client
SDIR=$(MOUNT_DIR)/server
RDIR=$(MOUNT_DIR)/renderer
CMDIR=$(MOUNT_DIR)/qcommon
UDIR=$(MOUNT_DIR)/unix
GDIR=$(MOUNT_DIR)/game
CGDIR=$(MOUNT_DIR)/cgame
BAIDIR=$(GDIR)
BLIBDIR=$(MOUNT_DIR)/botlib
NDIR=$(MOUNT_DIR)/null
UIDIR=$(MOUNT_DIR)/ui
Q3UIDIR=$(MOUNT_DIR)/q3_ui
FTDIR=$(MOUNT_DIR)/ft2
JPDIR=$(MOUNT_DIR)/jpeg-6
SPLNDIR=$(MOUNT_DIR)/splines
# extract version info
VERSION=$(shell ./extract_ver.pl)
RPM_RELEASE=1
# NOTE: used by dcp rcp targets, not referenced
#TESTDIR=/home/timo/Id/Quake3-loki/run
#############################################################################
# SETUP AND BUILD -- LINUX
#############################################################################
## Defaults
DLL_ONLY=false
# bk010215 - TODO - add all defaults / kill Ryan
ifeq ($(PLATFORM),linux)
ifneq (,$(findstring libc6,$(shell if [ -e /lib/libc.so.6* ];then echo libc6;fi)))
GLIBC=-glibc
else
GLIBC=
endif #libc6 test
ifneq (,$(findstring alpha,$(shell uname -m)))
ARCH=axp
RPMARCH=alpha
VENDOR=dec
else
ifneq (,$(findstring ppc,$(shell uname -m)))
#used for linux builds
MESADIR=/usr/src/DRI-CVS/xc/xc/
ARCH=ppc
RPMARCH=ppc
VENDOR=unknown
DLL_ONLY=true
else #default to i386
MESADIR=../Mesa/
ARCH=i386
RPMARCH=i386
VENDOR=unknown
DLL_ONLY=false
endif
endif
# bk001205: no mo' -I/usr/include/glide, no FX
# bk001205: no mo' -Dstricmp=strcasecmp, see q_shared.h
BASE_CFLAGS = -pipe -fsigned-char
# rcg010216: DLL_ONLY for PPC
ifeq ($(strip $(DLL_ONLY)),true)
BASE_CFLAGS += -DDLL_ONLY
endif
#GL_CFLAGS = -I$(MESADIR)/include -I/usr/X11R6/include
GL_CFAGS = -I/usr/X11R6/include
# bk001204 - need -O for -Wall for uninitialized
# bk001205 - took out -O to get assertions (NDEBUG)
# bk001206 - MALLOC_CHECK in addition to ZONE_DEBUG
# TTimo 03/30/2001 temporary took out -Werror for initial merge
DEBUG_CFLAGS = $(BASE_CFLAGS) -g -Wall -Werror
DEBUG_CFLAGS += -DNO_MOUSEGRAB
DEBUG_CFLAGS += -O
# DEBUG_CFLAGS=$(BASE_CFLAGS) -g -Wall -O
ifeq ($(ARCH),axp)
CC=pgcc
RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG -O6 -ffast-math -funroll-loops -fomit-frame-pointer -fexpensive-optimizations
else
ifeq ($(ARCH),ppc)
NEWPGCC=/loki/global/ppc/bin/gcc
CC=$(NEWPGCC)
RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG -O6 -fomit-frame-pointer -pipe -ffast-math -malign-loops=2 -malign-jumps=2 -malign-functions=2 -fno-strict-aliasing -fstrength-reduce
else
#NEWPGCC=/usr/local/gcc-2.95.2/bin/gcc # bk001205
#NEWPGCC=/loki/global/x86/bin/gcc
NEWPGCC=/usr/bin/gcc
CC=$(shell if [ -f $(NEWPGCC) ]; then echo $(NEWPGCC); else echo pgcc; fi )
CXX=/usr/bin/g++
# TTimo: legacy RELEASE_CFLAGS
# NOTE: the -fomit-frame-pointer option leads to an unstable binary on my test box if it was built on the main box
# but building on the Mdk 7.2 baseline seems to work
RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG -O6 -mcpu=pentiumpro -march=pentium -fomit-frame-pointer -pipe -ffast-math -malign-loops=2 -malign-jumps=2 -malign-functions=2 -fno-strict-aliasing -fstrength-reduce
# TTimo: use this for building on P3 gcc 2.95.3 libc2.2 for all targets (experimental! -fomit-fram-pointer removed)
# RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG -O6 -mcpu=pentiumpro -march=pentium -pipe -ffast-math -malign-loops=2 -malign-jumps=2 -malign-functions=2 -fno-strict-aliasing -fstrength-reduce
endif
endif
LIBEXT=a
SHLIBEXT=so
SHLIBCFLAGS=-fPIC
SHLIBLDFLAGS=-shared $(LDFLAGS)
ARFLAGS=ar rv
RANLIB=ranlib
THREAD_LDFLAGS=-lpthread
LDFLAGS=-ldl -lm
GLLDFLAGS=-L/usr/X11R6/lib -lX11 -lXext -lXxf86dga -lXxf86vm
ifeq ($(ARCH),axp)
TARGETS=\
$(B)/$(PLATFORM)q3ded
else
TARGETS=\
$(B)/$(PLATFORM)quake3 \
$(B)/$(PLATFORM)quake3-smp \
$(B)/$(PLATFORM)q3ded \
$(B)/baseq3/cgame$(ARCH).$(SHLIBEXT) \
$(B)/baseq3/qagame$(ARCH).$(SHLIBEXT) \
$(B)/baseq3/ui$(ARCH).$(SHLIBEXT) \
$(B)/missionpack/cgame$(ARCH).$(SHLIBEXT) \
$(B)/missionpack/qagame$(ARCH).$(SHLIBEXT) \
$(B)/missionpack/ui$(ARCH).$(SHLIBEXT) \
# $(B)/baseq3/vm/qagame.qvm \
# $(B)/baseq3/vm/cgame.qvm \
# $(B)/baseq3/vm/ui.qvm \
# $(B)/missionpack/vm/qagame.qvm \
# $(B)/missionpack/vm/cgame.qvm \
# $(B)/missionpack/vm/ui.qvm
endif
## $(B)/$(PLATFORM)q3static \
else # ifeq Linux
#############################################################################
# SETUP AND BUILD -- FREEBSD
#############################################################################
ifeq ($(PLATFORM),freebsd)
GLIBC= #libc is irrelevant
ifneq (,$(findstring alpha,$(shell uname -m)))
ARCH=axp
RPMARCH=alpha
VENDOR=dec
else #default to i386
ARCH=i386
RPMARCH=i386
VENDOR=unknown
endif #alpha test
BASE_CFLAGS = -pipe
GL_CFLAGS = -I$(MESADIR)/include -I/usr/X11R6/include
DEBUG_CFLAGS=$(BASE_CFLAGS) -g -Wall -Werror
ifeq ($(ARCH),axp)
CC=pgcc
RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG -O6 -ffast-math -funroll-loops -fomit-frame-pointer -fexpensive-optimizations
else
#NEWPGCC=/loki/global/x86/bin/gcc # raistlin012301
#NEWPGCC=/usr/local/gcc-2.95.2/bin/gcc
NEWPGCC=/home/raistllin/src/gcc/build/install/bin/gcc
CC=$(shell if [ -f $(NEWPGCC) ]; then echo $(NEWPGCC); else echo pgcc; fi )
RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG -O6 -mcpu=pentiumpro -march=pentium -fomit-frame-pointer -pipe -ffast-math -malign-loops=2 -malign-jumps=2 -malign-functions=2 -fno-strict-aliasing - fstrength-reduce
endif
LIBEXT=a
SHLIBEXT=so
SHLIBCFLAGS=-fPIC
SHLIBLDFLAGS=-shared $(LDFLAGS)
ARFLAGS=ar rv
RANLIB=ranlib
THREAD_LDFLAGS=-lpthread
# don't need -ldl (FreeBSD)
LDFLAGS=-lm
#GLLDFLAGS=-L/usr/X11R6/lib -L$(MESADIR)/lib -lGL -lX11 -lXext -lXxf86dga -lXxf86vm
#GLLDFLAGS=-L/usr/X11/lib -lGL -lX11 -lXext -lm
GLLDFLAGS=-L/usr/X11R6/lib -lGL -lX11 -lXext -lXxf86dga -lXxf86vm
ifeq ($(ARCH),axp)
TARGETS=\
$(B)/$(PLATFORM)q3ded
else
TARGETS=\
$(B)/$(PLATFORM)quake3 \
$(B)/baseq3/cgame$(ARCH).$(SHLIBEXT) \
$(B)/baseq3/qagame$(ARCH).$(SHLIBEXT) \
$(B)/baseq3/ui$(ARCH).$(SHLIBEXT) \
$(B)/missionpack/cgame$(ARCH).$(SHLIBEXT) \
$(B)/missionpack/qagame$(ARCH).$(SHLIBEXT) \
$(B)/missionpack/ui$(ARCH).$(SHLIBEXT)
endif
else # ifeq freebsd
#############################################################################
# SETUP AND BUILD -- IRIX
#############################################################################
ifeq ($(PLATFORM),irix)
ARCH=mips #default to MIPS
VENDOR=sgi
GLIBC= #libc is irrelevant
CC=cc
BASE_CFLAGS=-Dstricmp=strcasecmp -Xcpluscomm -woff 1185 -mips3 \
-nostdinc -I. -I$(ROOT)/usr/include
RELEASE_CFLAGS=$(BASE_CFLAGS) -O3
DEBUG_CFLAGS=$(BASE_CFLAGS) -g
LIBEXT=a
SHLIBEXT=so
SHLIBCFLAGS=
SHLIBLDFLAGS=-shared
ARFLAGS=ar rv
RANLIB=ranlib
LDFLAGS=-ldl -lm
GLLDFLAGS=-L/usr/X11/lib -lGL -lX11 -lXext -lm
TARGETS=$(B)/sgiquake3 \
$(B)/q3ded
else # ifeq IRIX
#############################################################################
# SETUP AND BUILD -- GENERIC
#############################################################################
#CC=egcs
#BASE_CFLAGS=-Dstricmp=strcasecmp
#DEBUG_CFLAGS=$(BASE_CFLAGS) -g
#RELEASE_CFLAGS=$(BASE_CFLAGS) -DNDEBUG -O3
LIBEXT=a
SHLIBEXT=so
SHLIBCFLAGS=-fPIC
SHLIBLDFLAGS=-shared
ARFLAGS=ar rv
RANLIB=ranlib
ifeq ($(PLATFORM),freebsd)
LDFLAGS=-lm
else
LDFLAGS=-ldl -lm
endif # ifeq freebsd
TARGETS=\
$(B)/$(PLATFORM)q3ded
endif #Linux
endif #FreeBSD
endif #IRIX
DO_CC=$(CC) $(CFLAGS) -o $@ -c $<
DO_CXX=$(CXX) $(CFLAGS) -o $@ -c $<
DO_SMP_CC=$(CC) $(CFLAGS) -DSMP -o $@ -c $<
DO_BOT_CC=$(CC) $(CFLAGS) -DBOTLIB -o $@ -c $< # $(SHLIBCFLAGS) # bk001212
DO_DEBUG_CC=$(CC) $(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_NASM=nasm -f elf -o $@ $<
DO_DED_CC=$(CC) -DDEDICATED -DC_ONLY $(CFLAGS) -o $@ -c $<
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -