1# 2# Quake Makefile for Linux 2.0 3# 4# Aug '98 by Zoid <zoid@idsoftware.com> 5# 6# ELF only 7# 8# Modified by QuDos at http://qudos.quakedev.com 9# 10 11BASEVERSION=1.09 12VERSION=$(BASEVERSION) 13 14#BUILD_SDL=YES # quake sdl glx executable (uses SDL for cdrom and sound) 15 16ifneq (,$(findstring libc6,$(shell if [ -e /lib/libc.so.6 ];then echo libc6;fi))) 17GLIBC=-glibc 18else 19GLIBC= 20endif 21 22ifneq (,$(findstring alpha,$(shell uname -m))) 23ARCH=axp 24else 25ARCH=i386 26endif 27NOARCH=noarch 28 29MOUNT_DIR=./src 30 31BUILD_DEBUG_DIR=debug 32BUILD_RELEASE_DIR=release 33 34CC?=gcc 35ARCH := $(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/) 36USE_OPTIMIZED_CFLAGS?=YES 37 38ifeq ($(ARCH),i386) 39USE_X86_ASM?=YES 40else 41USE_X86_ASM=NO 42endif 43 44BASE_CFLAGS=$(CFLAGS) -Dstricmp=strcasecmp #-Wall 45 46ifeq ($(strip $(USE_X86_ASM)),YES) 47BASE_CFLAGS+=-Did386 48endif 49 50RELEASE_CFLAGS=$(BASE_CFLAGS) 51 52ifeq ($(strip $(USE_OPTIMIZED_CFLAGS)),YES) 53RELEASE_CFLAGS+=-O2 -ffast-math -funroll-loops \ 54 -fomit-frame-pointer -fexpensive-optimizations -fno-strict-aliasing 55endif 56 57DEBUG_CFLAGS=$(BASE_CFLAGS) -g 58 59LDFLAGS+=-lm -lz 60 61ifeq ($(strip $(BUILD_SDL)),YES) 62 SDLCFLAGS=$(shell $(SDL_CONFIG) --cflags) 63 SDLLDFLAGS=$(shell $(SDL_CONFIG) --libs) 64 BASE_CFLAGS += \ 65 -D_SDL_BIN 66endif 67 68GLLDFLAGS=-L$(LOCALBASE)/lib -lGL -lX11 -lXext -lXxf86dga -lXxf86vm 69GLCFLAGS=-DGLQUAKE -I$(LOCALBASE)/include 70 71DO_CC=$(CC) $(CFLAGS) -o $@ -c $< 72DO_DEBUG_CC=$(CC) $(DEBUG_CFLAGS) -o $@ -c $< 73DO_GL_CC=$(CC) $(CFLAGS) $(GLCFLAGS) -o $@ -c $< 74DO_GL_DEBUG_CC=$(CC) $(DEBUG_CFLAGS) $(GLCFLAGS) -o $@ -c $< 75DO_X11_CC=$(CC) $(CFLAGS) $(XCFLAGS) -o $@ -c $< 76DO_X11_DEBUG_CC=$(CC) $(DEBUG_CFLAGS) $(XCFLAGS) -o $@ -c $< 77DO_O_CC=$(CC) -O $(CFLAGS) -o $@ -c $< 78DO_AS=$(CC) $(CFLAGS) -DELF -x assembler-with-cpp -o $@ -c $< 79DO_GL_AS=$(CC) $(CFLAGS) $(GLCFLAGS) -DELF -x assembler-with-cpp -o $@ -c $< 80 81############################################################################# 82# SETUP AND BUILD 83############################################################################# 84 85 86 TARGETS=$(BUILDDIR)/nehahra 87 88ifeq ($(strip $(BUILD_SDL)),YES) 89 TARGETS +=$(BUILDDIR)/nehahra-sdl 90endif 91 92all: 93 @echo 94 @echo Possible targets: 95 @echo 96 @echo ">> make release build the binary for a release." 97 @echo ">> make debug build the binary for debuging mode." 98 @echo ">> make clean " 99 @echo 100 @echo ">> SDL binaries options " 101 @echo ">> make release BUILD_SDL=YES build the binary for a SDL release." 102 @echo ">> make debug BUILD_SDL=YES build the binary for SDL debuging mode." 103 @echo ">> make clean BUILD_SDL=YES" 104 @echo 105debug: 106 @-mkdir $(BUILD_DEBUG_DIR) \ 107 $(BUILD_DEBUG_DIR)/glquake 108 $(MAKE) targets BUILDDIR=$(BUILD_DEBUG_DIR) CFLAGS="$(DEBUG_CFLAGS)" 109 110release: 111 @-mkdir $(BUILD_RELEASE_DIR) \ 112 $(BUILD_RELEASE_DIR)/glquake 113 $(MAKE) targets BUILDDIR=$(BUILD_RELEASE_DIR) CFLAGS="$(RELEASE_CFLAGS)" 114 115 116targets: $(TARGETS) 117 118############################################################################# 119# GLQuake 120############################################################################# 121 122GLQUAKE_OBJS= \ 123 $(BUILDDIR)/glquake/cl_demo.o \ 124 $(BUILDDIR)/glquake/cl_input.o \ 125 $(BUILDDIR)/glquake/cl_main.o \ 126 $(BUILDDIR)/glquake/cl_parse.o \ 127 $(BUILDDIR)/glquake/cl_tent.o \ 128 $(BUILDDIR)/glquake/chase.o \ 129 $(BUILDDIR)/glquake/cmd.o \ 130 $(BUILDDIR)/glquake/common.o \ 131 $(BUILDDIR)/glquake/console.o \ 132 $(BUILDDIR)/glquake/crc.o \ 133 $(BUILDDIR)/glquake/cvar.o \ 134 $(BUILDDIR)/glquake/d_vars.o \ 135 \ 136 $(BUILDDIR)/glquake/dzipcrc.o \ 137 $(BUILDDIR)/glquake/dzipdecode.o \ 138 $(BUILDDIR)/glquake/dzipun.o \ 139 $(BUILDDIR)/glquake/dzipmain.o \ 140 \ 141 $(BUILDDIR)/glquake/gl_draw.o \ 142 $(BUILDDIR)/glquake/gl_mesh.o \ 143 $(BUILDDIR)/glquake/gl_model.o \ 144 $(BUILDDIR)/glquake/gl_refrag.o \ 145 $(BUILDDIR)/glquake/gl_rlight.o \ 146 $(BUILDDIR)/glquake/gl_rmain.o \ 147 $(BUILDDIR)/glquake/gl_rmisc.o \ 148 $(BUILDDIR)/glquake/gl_rsurf.o \ 149 $(BUILDDIR)/glquake/gl_screen.o \ 150 $(BUILDDIR)/glquake/gl_warp.o \ 151 \ 152 $(BUILDDIR)/glquake/host.o \ 153 $(BUILDDIR)/glquake/host_cmd.o \ 154 $(BUILDDIR)/glquake/keys.o \ 155 $(BUILDDIR)/glquake/menu.o \ 156 $(BUILDDIR)/glquake/mathlib.o \ 157 $(BUILDDIR)/glquake/neh.o \ 158 $(BUILDDIR)/glquake/net_dgrm.o \ 159 $(BUILDDIR)/glquake/net_loop.o \ 160 $(BUILDDIR)/glquake/net_main.o \ 161 $(BUILDDIR)/glquake/net_vcr.o \ 162 $(BUILDDIR)/glquake/net_udp.o \ 163 $(BUILDDIR)/glquake/net_bsd.o \ 164 $(BUILDDIR)/glquake/pr_cmds.o \ 165 $(BUILDDIR)/glquake/pr_edict.o \ 166 $(BUILDDIR)/glquake/pr_exec.o \ 167 $(BUILDDIR)/glquake/r_part.o \ 168 $(BUILDDIR)/glquake/r_vars.o \ 169 $(BUILDDIR)/glquake/sbar.o \ 170 $(BUILDDIR)/glquake/sv_main.o \ 171 $(BUILDDIR)/glquake/sv_phys.o \ 172 $(BUILDDIR)/glquake/sv_move.o \ 173 $(BUILDDIR)/glquake/sv_user.o \ 174 $(BUILDDIR)/glquake/zone.o \ 175 $(BUILDDIR)/glquake/view.o \ 176 $(BUILDDIR)/glquake/wad.o \ 177 $(BUILDDIR)/glquake/world.o \ 178 $(BUILDDIR)/glquake/sys_linux.o \ 179 $(BUILDDIR)/glquake/snd_dma.o \ 180 $(BUILDDIR)/glquake/snd_mem.o \ 181 $(BUILDDIR)/glquake/snd_mix.o 182 183ifeq ($(strip $(USE_X86_ASM)),YES) 184GLQUAKE_OBJS+= \ 185 $(BUILDDIR)/glquake/math.o \ 186 $(BUILDDIR)/glquake/worlda.o \ 187 $(BUILDDIR)/glquake/snd_mixa.o \ 188 $(BUILDDIR)/glquake/sys_dosa.o 189endif 190 191GLQUAKE_LNX_OBJS = \ 192 $(BUILDDIR)/glquake/cd_linux.o \ 193 $(BUILDDIR)/glquake/snd_linux.o 194 195GLQUAKE_SDL_OBJS = \ 196 $(BUILDDIR)/glquake/cd_sdl.o \ 197 $(BUILDDIR)/glquake/snd_linux_sdl.o 198 199GLX_OBJS=$(BUILDDIR)/glquake/gl_vidlinuxglx.o 200 201$(BUILDDIR)/nehahra : $(GLQUAKE_OBJS) $(GLQUAKE_LNX_OBJS) $(GLX_OBJS) 202 $(CC) $(CFLAGS) -o $@ $(GLQUAKE_OBJS) $(GLX_OBJS) $(GLQUAKE_LNX_OBJS) $(GLLDFLAGS) $(LDFLAGS) 203 204$(BUILDDIR)/nehahra-sdl : $(GLQUAKE_OBJS) $(GLQUAKE_SDL_OBJS) $(GLX_OBJS) 205 $(CC) $(CFLAGS) -o $@ $(GLQUAKE_OBJS) $(GLX_OBJS) $(GLQUAKE_SDL_OBJS) $(GLLDFLAGS) $(LDFLAGS) $(SDLLDFLAGS) 206 207$(BUILDDIR)/glquake/cl_demo.o : $(MOUNT_DIR)/cl_demo.c 208 $(DO_GL_CC) 209 210$(BUILDDIR)/glquake/cl_input.o : $(MOUNT_DIR)/cl_input.c 211 $(DO_GL_CC) 212 213$(BUILDDIR)/glquake/cl_main.o : $(MOUNT_DIR)/cl_main.c 214 $(DO_GL_CC) 215 216$(BUILDDIR)/glquake/cl_parse.o : $(MOUNT_DIR)/cl_parse.c 217 $(DO_GL_CC) 218 219$(BUILDDIR)/glquake/cl_tent.o : $(MOUNT_DIR)/cl_tent.c 220 $(DO_GL_CC) 221 222$(BUILDDIR)/glquake/chase.o : $(MOUNT_DIR)/chase.c 223 $(DO_GL_CC) 224 225$(BUILDDIR)/glquake/cmd.o : $(MOUNT_DIR)/cmd.c 226 $(DO_GL_CC) 227 228$(BUILDDIR)/glquake/common.o : $(MOUNT_DIR)/common.c 229 $(DO_GL_DEBUG_CC) 230 231$(BUILDDIR)/glquake/console.o : $(MOUNT_DIR)/console.c 232 $(DO_GL_CC) 233 234$(BUILDDIR)/glquake/crc.o : $(MOUNT_DIR)/crc.c 235 $(DO_GL_CC) 236 237$(BUILDDIR)/glquake/cvar.o : $(MOUNT_DIR)/cvar.c 238 $(DO_GL_CC) 239 240$(BUILDDIR)/glquake/d_vars.o : $(MOUNT_DIR)/d_vars.c 241 $(DO_GL_CC) 242 243$(BUILDDIR)/glquake/dzipcrc.o : $(MOUNT_DIR)/dzipcrc.c 244 $(DO_GL_CC) 245 246$(BUILDDIR)/glquake/dzipdecode.o : $(MOUNT_DIR)/dzipdecode.c 247 $(DO_GL_CC) 248 249$(BUILDDIR)/glquake/dzipun.o : $(MOUNT_DIR)/dzipun.c 250 $(DO_GL_CC) 251 252$(BUILDDIR)/glquake/dzipmain.o : $(MOUNT_DIR)/dzipmain.c 253 $(DO_GL_CC) 254 255$(BUILDDIR)/glquake/gl_draw.o : $(MOUNT_DIR)/gl_draw.c 256 $(DO_GL_CC) 257 258$(BUILDDIR)/glquake/gl_mesh.o : $(MOUNT_DIR)/gl_mesh.c 259 $(DO_GL_CC) 260 261$(BUILDDIR)/glquake/gl_model.o : $(MOUNT_DIR)/gl_model.c 262 $(DO_GL_CC) 263 264$(BUILDDIR)/glquake/gl_refrag.o : $(MOUNT_DIR)/gl_refrag.c 265 $(DO_GL_CC) 266 267$(BUILDDIR)/glquake/gl_rlight.o : $(MOUNT_DIR)/gl_rlight.c 268 $(DO_GL_CC) 269 270$(BUILDDIR)/glquake/gl_rmain.o : $(MOUNT_DIR)/gl_rmain.c 271 $(DO_GL_CC) 272 273$(BUILDDIR)/glquake/gl_rmisc.o : $(MOUNT_DIR)/gl_rmisc.c 274 $(DO_GL_CC) 275 276$(BUILDDIR)/glquake/gl_rsurf.o : $(MOUNT_DIR)/gl_rsurf.c 277 $(DO_GL_CC) 278 279$(BUILDDIR)/glquake/gl_screen.o : $(MOUNT_DIR)/gl_screen.c 280 $(DO_GL_CC) 281 282$(BUILDDIR)/glquake/gl_vidlinuxglx.o : $(MOUNT_DIR)/gl_vidlinuxglx.c 283 $(DO_GL_CC) 284 285$(BUILDDIR)/glquake/gl_warp.o : $(MOUNT_DIR)/gl_warp.c 286 $(DO_GL_CC) 287 288$(BUILDDIR)/glquake/host.o : $(MOUNT_DIR)/host.c 289 $(DO_GL_CC) 290 291$(BUILDDIR)/glquake/host_cmd.o : $(MOUNT_DIR)/host_cmd.c 292 $(DO_GL_CC) 293 294$(BUILDDIR)/glquake/keys.o : $(MOUNT_DIR)/keys.c 295 $(DO_GL_CC) 296 297$(BUILDDIR)/glquake/menu.o : $(MOUNT_DIR)/menu.c 298 $(DO_GL_CC) 299 300$(BUILDDIR)/glquake/neh.o : $(MOUNT_DIR)/neh.c 301 $(DO_GL_CC) 302 303$(BUILDDIR)/glquake/mathlib.o : $(MOUNT_DIR)/mathlib.c 304 $(DO_GL_CC) 305 306$(BUILDDIR)/glquake/net_dgrm.o : $(MOUNT_DIR)/net_dgrm.c 307 $(DO_GL_CC) 308 309$(BUILDDIR)/glquake/net_loop.o : $(MOUNT_DIR)/net_loop.c 310 $(DO_GL_CC) 311 312$(BUILDDIR)/glquake/net_main.o : $(MOUNT_DIR)/net_main.c 313 $(DO_GL_CC) 314 315$(BUILDDIR)/glquake/net_vcr.o : $(MOUNT_DIR)/net_vcr.c 316 $(DO_GL_CC) 317 318$(BUILDDIR)/glquake/net_udp.o : $(MOUNT_DIR)/net_udp.c 319 $(DO_GL_CC) 320 321$(BUILDDIR)/glquake/net_bsd.o : $(MOUNT_DIR)/net_bsd.c 322 $(DO_GL_CC) 323 324$(BUILDDIR)/glquake/pr_cmds.o : $(MOUNT_DIR)/pr_cmds.c 325 $(DO_GL_CC) 326 327$(BUILDDIR)/glquake/pr_edict.o : $(MOUNT_DIR)/pr_edict.c 328 $(DO_GL_CC) 329 330$(BUILDDIR)/glquake/pr_exec.o : $(MOUNT_DIR)/pr_exec.c 331 $(DO_GL_CC) 332 333$(BUILDDIR)/glquake/r_part.o : $(MOUNT_DIR)/r_part.c 334 $(DO_GL_CC) 335 336$(BUILDDIR)/glquake/r_vars.o : $(MOUNT_DIR)/r_vars.c 337 $(DO_GL_CC) 338 339$(BUILDDIR)/glquake/sbar.o : $(MOUNT_DIR)/sbar.c 340 $(DO_GL_CC) 341 342$(BUILDDIR)/glquake/sv_main.o : $(MOUNT_DIR)/sv_main.c 343 $(DO_GL_CC) 344 345$(BUILDDIR)/glquake/sv_phys.o : $(MOUNT_DIR)/sv_phys.c 346 $(DO_GL_CC) 347 348$(BUILDDIR)/glquake/sv_move.o : $(MOUNT_DIR)/sv_move.c 349 $(DO_GL_CC) 350 351$(BUILDDIR)/glquake/sv_user.o : $(MOUNT_DIR)/sv_user.c 352 $(DO_GL_CC) 353 354$(BUILDDIR)/glquake/zone.o : $(MOUNT_DIR)/zone.c 355 $(DO_GL_CC) 356 357$(BUILDDIR)/glquake/view.o : $(MOUNT_DIR)/view.c 358 $(DO_GL_CC) 359 360$(BUILDDIR)/glquake/wad.o : $(MOUNT_DIR)/wad.c 361 $(DO_GL_CC) 362 363$(BUILDDIR)/glquake/world.o : $(MOUNT_DIR)/world.c 364 $(DO_GL_CC) 365 366$(BUILDDIR)/glquake/cd_linux.o : $(MOUNT_DIR)/cd_linux.c 367 $(DO_GL_CC) 368 369$(BUILDDIR)/glquake/cd_sdl.o : $(MOUNT_DIR)/cd_sdl.c 370 $(DO_GL_CC) $(SDLCFLAGS) 371 372$(BUILDDIR)/glquake/sys_linux.o : $(MOUNT_DIR)/sys_linux.c 373 $(DO_GL_CC) 374 375$(BUILDDIR)/glquake/snd_dma.o : $(MOUNT_DIR)/snd_dma.c 376 $(DO_GL_CC) 377 378$(BUILDDIR)/glquake/snd_mem.o : $(MOUNT_DIR)/snd_mem.c 379 $(DO_GL_CC) 380 381$(BUILDDIR)/glquake/snd_mix.o : $(MOUNT_DIR)/snd_mix.c 382 $(DO_GL_CC) 383 384$(BUILDDIR)/glquake/snd_linux.o : $(MOUNT_DIR)/snd_linux.c 385 $(DO_GL_CC) 386 387$(BUILDDIR)/glquake/snd_linux_sdl.o : $(MOUNT_DIR)/snd_linux_sdl.c 388 $(DO_GL_CC) $(SDLCFLAGS) 389 390$(BUILDDIR)/glquake/math.o : $(MOUNT_DIR)/math.s 391 $(DO_GL_AS) 392 393$(BUILDDIR)/glquake/snd_mixa.o : $(MOUNT_DIR)/snd_mixa.s 394 $(DO_GL_AS) 395 396$(BUILDDIR)/glquake/sys_dosa.o : $(MOUNT_DIR)/sys_dosa.s 397 $(DO_GL_AS) 398 399$(BUILDDIR)/glquake/worlda.o : $(MOUNT_DIR)/worlda.s 400 $(DO_GL_AS) 401 402############################################################################# 403# MISC 404############################################################################# 405clean: clean-debug clean-release 406 407clean-debug: 408 $(MAKE) clean2 BUILDDIR=$(BUILD_DEBUG_DIR) CFLAGS="$(DEBUG_CFLAGS)" 409 410clean-release: 411 $(MAKE) clean2 BUILDDIR=$(BUILD_RELEASE_DIR) CFLAGS="$(DEBUG_CFLAGS)" 412 413clean2: 414 -rm -f $(GLQUAKE_OBJS) \ 415 $(GLX_OBJS) \ 416 $(GLQUAKE_LNX_OBJS) \ 417 $(GLQUAKE_SDL_OBJS) 418 419 420