# # Quake Makefile for Linux 2.0 # # Aug '98 by Zoid # # ELF only # # Modified by QuDos at http://qudos.quakedev.com # # Check OS type. OSTYPE := $(shell uname -s | tr A-Z a-z) # this nice line comes from the linux kernel makefile ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc/ -e s/sparc64/sparc/ -e s/arm.*/arm/ -e s/sa110/arm/ -e s/alpha/axp/) MARCH :=$(shell uname -m) VERSION=3.2.4 BINDIR=quake MOUNT_DIR=. BUILD_DEBUG_DIR=debug_build BUILD_RELEASE_DIR=release_build BUILD_TREMOR?=NO # Tremor glx executable (uses ioctl's for cdrom and oss for sound). BUILD_TREMOR_SDL?=NO # Tremor sdl glx executable (uses SDL for cdrom and sound). BUILD_DZIP?=NO # Dzip binary for compress/uncompress demos ifeq ($(OSTYPE),linux) WITH_FMOD=NO # Use FMOD library for ingame music, no tested endif # Use DATADIR for reading and ~/.tremor for writting. WITH_DATADIR=YES # The next option is required when DATADIR is set to YES, Use ~/ for writing, instead of . WITH_HOMEDIR=YES # Directory within $HOME to write to HOMEDIR=.tremor CC?=gcc CC_VERSION=$(shell $(CC) -dumpversion | sed -e 's/\..*//g') CC_VERSION_NUM=$(shell $(CC) -dumpversion) OPTIMIZE?=NO # Enable Optimization, release build only. STRIP=NO # Remove symbols from binaries, reduce size. VERBOSE=NO LOCALBASE?=/usr/local GAMEBASE=$(LOCALBASE) X11BASE?=/usr/X11R6 SYSBINDIR=$(LOCALBASE)/bin DATADIR=$(Q1DIR) # Seems that gcc 4.0 has some issues with -march option here, so i added it by default. # Feel free to remove it. BASE_CFLAGS+= $(CFLAGS) \ -I$(LOCALBASE)/include \ -I$(X11BASE)/include \ -Dstricmp=strcasecmp \ -DGLQUAKE DEBUG_CFLAGS=$(BASE_CFLAGS) -g -ggdb -Wall RELEASE_CFLAGS+=$(BASE_CFLAGS) \ -fno-strict-aliasing \ ifeq ($(strip $(OPTIMIZE)),YES) RELEASE_CFLAGS+= -O3 \ -funroll-loops \ -falign-loops=2 \ -falign-jumps=2 \ -falign-functions=2 endif ifeq ($(strip $(STRIP)),YES) RELEASE_CFLAGS+=-s endif ifeq ($(strip $(WITH_FMOD)),YES) BASE_CFLAGS+= -DWITH_FMOD LDFLAGS_FMOD+= -L./fmod -Wl,-rpath,. -lfmod endif ifeq ($(strip $(WITH_DATADIR)),YES) BASE_CFLAGS+=-DDATADIR='\"$(DATADIR)\"' BASE_CFLAGS+=-DHOMEDIR='\"$(HOMEDIR)\"' endif LDFLAGS=-lm -pthread ifeq ($(OSTYPE),linux) LDFLAGS+=-ldl endif X_LDFLAGS=-L$(X11BASE)/lib$(ARCH_LIBDIR) \ -lX11 -lXext -lXxf86vm -lXxf86dga GLX_LDFLAGS=-L$(X11BASE)/lib$(ARCH_LIBDIR) \ -L$(LOCALBASE)/lib$(ARCH_LIBDIR) \ -lGL -lGLU -ljpeg `libpng-config --libs` SDL_CONFIG?=sdl-config SDL_CFLAGS=$(shell $(SDL_CONFIG) --cflags) SDL_LDFLAGS=$(shell $(SDL_CONFIG) --libs) ifeq ($(VERBOSE),NO) CC_OUTPUT=echo " Compiling >> $< ..." && endif DO_CC=$(CC_OUTPUT) $(CC) $(CFLAGS) -o $@ -c $< DO_GL_CC=$(CC_OUTPUT) $(CC) $(CFLAGS) -o $@ -c $< DO_SDL_CC=$(CC_OUTPUT) $(CC) $(CFLAGS) $(SDL_CFLAGS) -o $@ -c $< ############################################################################# # SETUP AND BUILD ############################################################################# ifeq ($(strip $(BUILD_TREMOR)),YES) TARGETS += $(BINDIR)/tremor-glx endif ifeq ($(strip $(BUILD_TREMOR_SDL)),YES) TARGETS +=$(BINDIR)/tremor-sdl endif ifeq ($(strip $(BUILD_DZIP)),YES) TARGETS +=$(BINDIR)/dzip endif all: @echo @echo Set to YES or NO at the top of this file the possible options to build by the makefile. @echo By default, it will build client, sdl client and dzip binary. @echo @echo Possible targets: @echo @echo ">> Add VERBOSE=YES to the command line in order to get a verbose output, defaults to NO" @echo @echo ">> make release (build the binary for a release)." @echo ">> make debug (build the binary for debuging mode)." @echo ">> make clean (clean objects)." @echo ">> make distclean (clean objects, executables and modified files)." @echo ">> make install (quake home dir)." @echo ">> make install_root (required when was built with DATADIR option enabled," @echo " you must gain root privileges)." @echo debug: @echo @printf "** Debug Build **\n" @-mkdir -p $(BUILD_DEBUG_DIR) \ $(BINDIR) ifeq ($(VERBOSE),YES) $(MAKE) targets BUILDDIR=$(BUILD_DEBUG_DIR) CFLAGS="$(DEBUG_CFLAGS)"; else @-$(MAKE) --silent targets BUILDDIR=$(BUILD_DEBUG_DIR) CFLAGS="$(DEBUG_CFLAGS)"; endif release: @echo @printf "** Release Build **\n" @-mkdir -p $(BUILD_RELEASE_DIR) \ $(BINDIR) ifeq ($(VERBOSE),YES) $(MAKE) targets BUILDDIR=$(BUILD_RELEASE_DIR) CFLAGS="$(RELEASE_CFLAGS)"; else @-$(MAKE) --silent targets BUILDDIR=$(BUILD_RELEASE_DIR) CFLAGS="$(RELEASE_CFLAGS)"; endif targets: $(TARGETS) @echo @echo "Tremor compilation finished succesfully ;)" @echo @echo "'make install' to install in your quake home dir." @echo @echo "'make install_root' if was built with DATADIR option enabled, you must gain root privileges." @echo ############################################################################# # GLQuake ############################################################################# GLQUAKE_OBJS= \ $(BUILDDIR)/cl_demo.o $(BUILDDIR)/cl_input.o $(BUILDDIR)/cl_main.o \ $(BUILDDIR)/cl_parse.o $(BUILDDIR)/cl_tent.o $(BUILDDIR)/chase.o \ $(BUILDDIR)/cmd.o $(BUILDDIR)/common.o $(BUILDDIR)/console.o \ $(BUILDDIR)/crc.o $(BUILDDIR)/cvar.o \ \ $(BUILDDIR)/gl_draw.o $(BUILDDIR)/gl_md3.o $(BUILDDIR)/gl_mesh.o \ $(BUILDDIR)/gl_model.o $(BUILDDIR)/gl_refrag.o $(BUILDDIR)/gl_rlight.o \ $(BUILDDIR)/gl_rmain.o $(BUILDDIR)/gl_rmisc.o $(BUILDDIR)/gl_rpart.o \ $(BUILDDIR)/gl_rsurf.o $(BUILDDIR)/gl_screen.o $(BUILDDIR)/gl_warp.o \ \ $(BUILDDIR)/host.o $(BUILDDIR)/host_cmd.o $(BUILDDIR)/image.o \ $(BUILDDIR)/keys.o $(BUILDDIR)/menu.o $(BUILDDIR)/mathlib.o \ $(BUILDDIR)/nehahra.o $(BUILDDIR)/net_dgrm.o $(BUILDDIR)/net_loop.o \ $(BUILDDIR)/net_main.o $(BUILDDIR)/net_vcr.o $(BUILDDIR)/net_udp.o \ $(BUILDDIR)/net_bsd.o $(BUILDDIR)/pr_cmds.o $(BUILDDIR)/pr_edict.o \ $(BUILDDIR)/pr_exec.o $(BUILDDIR)/r_part.o $(BUILDDIR)/sbar.o \ $(BUILDDIR)/sv_main.o $(BUILDDIR)/sv_phys.o $(BUILDDIR)/sv_move.o \ $(BUILDDIR)/sv_user.o $(BUILDDIR)/zone.o $(BUILDDIR)/view.o \ $(BUILDDIR)/version.o $(BUILDDIR)/wad.o $(BUILDDIR)/world.o \ $(BUILDDIR)/sys_unix.o $(BUILDDIR)/snd_dma.o $(BUILDDIR)/snd_mem.o \ $(BUILDDIR)/snd_mix.o SND_OBJS = $(BUILDDIR)/snd_oss.o \ $(BUILDDIR)/cd_unix.o SDL_SND_OBJS = $(BUILDDIR)/snd_sdl.o \ $(BUILDDIR)/cd_sdl.o GLX_OBJS= \ $(BUILDDIR)/vid_glx.o \ $(BUILDDIR)/vid_common_gl.o DZIP_OBJS= \ $(BUILDDIR)/main.o $(BUILDDIR)/compress.o $(BUILDDIR)/uncompress.o \ $(BUILDDIR)/list.o $(BUILDDIR)/crc32.o $(BUILDDIR)/encode.o \ $(BUILDDIR)/decode.o $(BUILDDIR)/v1code.o $(BUILDDIR)/conmain.o \ $(BUILDDIR)/delete.o $(BUILDDIR)/adler32.o $(BUILDDIR)/deflate.o \ $(BUILDDIR)/trees.o $(BUILDDIR)/inflate.o $(BUILDDIR)/infblock.o \ $(BUILDDIR)/inftrees.o $(BUILDDIR)/infcodes.o $(BUILDDIR)/infutil.o \ $(BUILDDIR)/inffast.o $(BINDIR)/tremor-glx : $(GLQUAKE_OBJS) $(SND_OBJS) $(GLX_OBJS) @echo @echo "**Built Tremor client with cflags:" @echo "$(CC) $(CC_VERSION_NUM) $(CFLAGS)"; @echo @echo "**Linking Client with flags:" @echo "$(LDFLAGS)"; @echo "$(X_LDFLAGS)"; @echo "$(GLX_LDFLAGS)"; @echo "$(LDFLAGS_FMOD)"; @echo $(CC) $(CFLAGS) -o $@ $(GLQUAKE_OBJS) $(SND_OBJS) $(GLX_OBJS) $(X_LDFLAGS) $(GLX_LDFLAGS) $(LDFLAGS) $(LDFLAGS_FMOD) $(BINDIR)/tremor-sdl : $(GLQUAKE_OBJS) $(SDL_SND_OBJS) $(GLX_OBJS) @echo @echo "**Built Tremor SDL client with cflags:" @echo "$(CC) $(CC_VERSION_NUM) $(CFLAGS)"; @echo @echo "**Linking Client with flags:" @echo "$(LDFLAGS)"; @echo "$(X_LDFLAGS)"; @echo "$(GLX_LDFLAGS)"; @echo "$(SDL_LDFLAGS)"; @echo "$(LDFLAGS_FMOD)"; @echo $(CC) $(CFLAGS) -o $@ $(GLQUAKE_OBJS) $(SDL_SND_OBJS) $(GLX_OBJS) $(X_LDFLAGS) $(GLX_LDFLAGS) $(LDFLAGS) $(SDL_LDFLAGS) $(LDFLAGS_FMOD) $(BINDIR)/dzip : $(DZIP_OBJS) $(CC) $(CFLAGS) -o $@ $(DZIP_OBJS) $(LDFLAGS) $(BUILDDIR)/cl_demo.o : $(MOUNT_DIR)/cl_demo.c; $(DO_GL_CC) $(BUILDDIR)/cl_input.o : $(MOUNT_DIR)/cl_input.c; $(DO_GL_CC) $(BUILDDIR)/cl_main.o : $(MOUNT_DIR)/cl_main.c; $(DO_GL_CC) $(BUILDDIR)/cl_parse.o : $(MOUNT_DIR)/cl_parse.c; $(DO_GL_CC) $(BUILDDIR)/cl_tent.o : $(MOUNT_DIR)/cl_tent.c; $(DO_GL_CC) $(BUILDDIR)/chase.o : $(MOUNT_DIR)/chase.c; $(DO_GL_CC) $(BUILDDIR)/cmd.o : $(MOUNT_DIR)/cmd.c; $(DO_GL_CC) $(BUILDDIR)/common.o : $(MOUNT_DIR)/common.c; $(DO_GL_CC) $(BUILDDIR)/console.o : $(MOUNT_DIR)/console.c; $(DO_GL_CC) $(BUILDDIR)/crc.o : $(MOUNT_DIR)/crc.c; $(DO_GL_CC) $(BUILDDIR)/cvar.o : $(MOUNT_DIR)/cvar.c; $(DO_GL_CC) $(BUILDDIR)/gl_draw.o : $(MOUNT_DIR)/gl_draw.c; $(DO_GL_CC) $(BUILDDIR)/gl_md3.o : $(MOUNT_DIR)/gl_md3.c; $(DO_GL_CC) $(BUILDDIR)/gl_mesh.o : $(MOUNT_DIR)/gl_mesh.c; $(DO_GL_CC) $(BUILDDIR)/gl_model.o : $(MOUNT_DIR)/gl_model.c; $(DO_GL_CC) $(BUILDDIR)/gl_refrag.o : $(MOUNT_DIR)/gl_refrag.c; $(DO_GL_CC) $(BUILDDIR)/gl_rlight.o : $(MOUNT_DIR)/gl_rlight.c; $(DO_GL_CC) $(BUILDDIR)/gl_rmain.o : $(MOUNT_DIR)/gl_rmain.c; $(DO_GL_CC) $(BUILDDIR)/gl_rmisc.o : $(MOUNT_DIR)/gl_rmisc.c; $(DO_GL_CC) $(BUILDDIR)/gl_rpart.o : $(MOUNT_DIR)/gl_rpart.c; $(DO_GL_CC) $(BUILDDIR)/gl_rsurf.o : $(MOUNT_DIR)/gl_rsurf.c; $(DO_GL_CC) $(BUILDDIR)/gl_screen.o : $(MOUNT_DIR)/gl_screen.c; $(DO_GL_CC) $(BUILDDIR)/vid_common_gl.o : $(MOUNT_DIR)/vid_common_gl.c; $(DO_GL_CC) $(BUILDDIR)/vid_glx.o : $(MOUNT_DIR)/vid_glx.c; $(DO_GL_CC) $(BUILDDIR)/gl_warp.o : $(MOUNT_DIR)/gl_warp.c; $(DO_GL_CC) $(BUILDDIR)/host.o : $(MOUNT_DIR)/host.c; $(DO_GL_CC) $(BUILDDIR)/host_cmd.o : $(MOUNT_DIR)/host_cmd.c; $(DO_GL_CC) $(BUILDDIR)/image.o : $(MOUNT_DIR)/image.c; $(DO_GL_CC) $(BUILDDIR)/keys.o : $(MOUNT_DIR)/keys.c; $(DO_GL_CC) $(BUILDDIR)/menu.o : $(MOUNT_DIR)/menu.c; $(DO_GL_CC) $(BUILDDIR)/mathlib.o : $(MOUNT_DIR)/mathlib.c; $(DO_GL_CC) $(BUILDDIR)/nehahra.o : $(MOUNT_DIR)/nehahra.c; $(DO_GL_CC) $(BUILDDIR)/net_dgrm.o : $(MOUNT_DIR)/net_dgrm.c; $(DO_GL_CC) $(BUILDDIR)/net_loop.o : $(MOUNT_DIR)/net_loop.c; $(DO_GL_CC) $(BUILDDIR)/net_main.o : $(MOUNT_DIR)/net_main.c; $(DO_GL_CC) $(BUILDDIR)/net_vcr.o : $(MOUNT_DIR)/net_vcr.c; $(DO_GL_CC) $(BUILDDIR)/net_udp.o : $(MOUNT_DIR)/net_udp.c; $(DO_GL_CC) $(BUILDDIR)/net_bsd.o : $(MOUNT_DIR)/net_bsd.c; $(DO_GL_CC) $(BUILDDIR)/pr_cmds.o : $(MOUNT_DIR)/pr_cmds.c; $(DO_GL_CC) $(BUILDDIR)/pr_edict.o : $(MOUNT_DIR)/pr_edict.c; $(DO_GL_CC) $(BUILDDIR)/pr_exec.o : $(MOUNT_DIR)/pr_exec.c; $(DO_GL_CC) $(BUILDDIR)/r_part.o : $(MOUNT_DIR)/r_part.c; $(DO_GL_CC) $(BUILDDIR)/sbar.o : $(MOUNT_DIR)/sbar.c; $(DO_GL_CC) $(BUILDDIR)/sv_main.o : $(MOUNT_DIR)/sv_main.c; $(DO_GL_CC) $(BUILDDIR)/sv_phys.o : $(MOUNT_DIR)/sv_phys.c; $(DO_GL_CC) $(BUILDDIR)/sv_move.o : $(MOUNT_DIR)/sv_move.c; $(DO_GL_CC) $(BUILDDIR)/sv_user.o : $(MOUNT_DIR)/sv_user.c; $(DO_GL_CC) $(BUILDDIR)/zone.o : $(MOUNT_DIR)/zone.c; $(DO_GL_CC) $(BUILDDIR)/view.o : $(MOUNT_DIR)/view.c; $(DO_GL_CC) $(BUILDDIR)/version.o : $(MOUNT_DIR)/version.c; $(DO_GL_CC) $(BUILDDIR)/wad.o : $(MOUNT_DIR)/wad.c; $(DO_GL_CC) $(BUILDDIR)/world.o : $(MOUNT_DIR)/world.c; $(DO_GL_CC) $(BUILDDIR)/cd_unix.o : $(MOUNT_DIR)/cd_unix.c; $(DO_GL_CC) $(BUILDDIR)/sys_unix.o : $(MOUNT_DIR)/sys_unix.c; $(DO_GL_CC) $(BUILDDIR)/snd_dma.o : $(MOUNT_DIR)/snd_dma.c; $(DO_GL_CC) $(BUILDDIR)/snd_mem.o : $(MOUNT_DIR)/snd_mem.c; $(DO_GL_CC) $(BUILDDIR)/snd_mix.o : $(MOUNT_DIR)/snd_mix.c; $(DO_GL_CC) $(BUILDDIR)/snd_oss.o : $(MOUNT_DIR)/snd_oss.c; $(DO_GL_CC) $(BUILDDIR)/cd_sdl.o : $(MOUNT_DIR)/cd_sdl.c; $(DO_SDL_CC) $(BUILDDIR)/snd_sdl.o : $(MOUNT_DIR)/snd_sdl.c; $(DO_SDL_CC) $(BUILDDIR)/main.o : $(MOUNT_DIR)/dz29src/main.c; $(DO_GL_CC) $(BUILDDIR)/compress.o : $(MOUNT_DIR)/dz29src/compress.c; $(DO_GL_CC) $(BUILDDIR)/uncompress.o : $(MOUNT_DIR)/dz29src/uncompress.c; $(DO_GL_CC) $(BUILDDIR)/list.o : $(MOUNT_DIR)/dz29src/list.c; $(DO_GL_CC) $(BUILDDIR)/crc32.o : $(MOUNT_DIR)/dz29src/crc32.c; $(DO_GL_CC) $(BUILDDIR)/encode.o : $(MOUNT_DIR)/dz29src/encode.c; $(DO_GL_CC) $(BUILDDIR)/decode.o : $(MOUNT_DIR)/dz29src/decode.c; $(DO_GL_CC) $(BUILDDIR)/v1code.o : $(MOUNT_DIR)/dz29src/v1code.c; $(DO_GL_CC) $(BUILDDIR)/conmain.o : $(MOUNT_DIR)/dz29src/conmain.c; $(DO_GL_CC) $(BUILDDIR)/delete.o : $(MOUNT_DIR)/dz29src/delete.c; $(DO_GL_CC) $(BUILDDIR)/adler32.o : $(MOUNT_DIR)/dz29src/zlib/adler32.c; $(DO_GL_CC) $(BUILDDIR)/deflate.o : $(MOUNT_DIR)/dz29src/zlib/deflate.c; $(DO_GL_CC) $(BUILDDIR)/trees.o : $(MOUNT_DIR)/dz29src/zlib/trees.c; $(DO_GL_CC) $(BUILDDIR)/inflate.o : $(MOUNT_DIR)/dz29src/zlib/inflate.c; $(DO_GL_CC) $(BUILDDIR)/infblock.o : $(MOUNT_DIR)/dz29src/zlib/infblock.c; $(DO_GL_CC) $(BUILDDIR)/inftrees.o : $(MOUNT_DIR)/dz29src/zlib/inftrees.c; $(DO_GL_CC) $(BUILDDIR)/infcodes.o : $(MOUNT_DIR)/dz29src/zlib/infcodes.c; $(DO_GL_CC) $(BUILDDIR)/infutil.o : $(MOUNT_DIR)/dz29src/zlib/infutil.c; $(DO_GL_CC) $(BUILDDIR)/inffast.o : $(MOUNT_DIR)/dz29src/zlib/inffast.c; $(DO_GL_CC) ############################################################################# # MISC ############################################################################# clean: clean-debug clean-release clean-debug: $(MAKE) clean2 BUILDDIR=$(BUILD_DEBUG_DIR) CFLAGS="$(DEBUG_CFLAGS)" clean-release: $(MAKE) clean2 BUILDDIR=$(BUILD_RELEASE_DIR) CFLAGS="$(DEBUG_CFLAGS)" clean2: -rm -f $(GLQUAKE_OBJS) \ $(GLX_OBJS) \ $(SDN_OBJS) \ $(SND_SDL_OBJS) \ $(DZIP_OBJS) distclean: @echo cleaning objects, binaries and modified files @-rm -rf $(BUILD_DEBUG_DIR) $(BUILD_RELEASE_DIR) $(BINDIR) @-rm -f `find . \( -not -type d \) -and \ \( -name '*~' \) -type f -print` @echo . @echo .... Done install: @printf "Copying files to your home dir\n" @echo ...... @cp -rv $(BINDIR) $(HOME) @cp -rv tremor.run $(HOME)/$(BINDIR) @chmod +x $(HOME)/$(BINDIR)/tremor.run @mkdir -pv $(HOME)/bin @cd $(HOME)/bin && ln -svf $(HOME)/$(BINDIR)/tremor.run tremor @printf "Symlinking executable to $(HOME)/bin\n" @echo @printf "You must to set the PATH $(HOME)/bin to the executable search path in order to run tremor.\n" @printf "Type tremor to start playing\n" @echo ifeq ($(OSTYPE),linux) ifeq ($(strip $(WITH_FMOD)),YES) @echo Copying and symlinking fmod libraries @cp -rv $(MOUNT_DIR)/fmod/*.so $(MOUNT_DIR)/fmod/*.txt $(BINDIR) endif endif @echo ..... @echo Done install_root: @echo ...... @mkdir -pv $(DATADIR) @printf "Copying files to $(DATADIR)\n" @cp -rv $(BINDIR) $(LOCALBASE)/games @cp -rv tremor.run $(DATADIR) @chmod +x $(DATADIR)/tremor.run @ln -sfv $(DATADIR)/tremor.run $(SYSBINDIR)/tremor @printf "Symlinking executable to $(SYSBINDIR)\n" ifeq ($(strip $(WITH_FMOD)),YES) @echo Copying and symlinking fmod libraries @cp -rav $(MOUNT_DIR)/fmod/*.so $(BINDIR) endif @echo @printf "Type tremor as user to start playing.\n" @echo ..... @echo Done