⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 makefile

📁 quakeIII源码这个不用我多说吧
💻
📖 第 1 页 / 共 5 页
字号:
#
# 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 + -