aboutsummaryrefslogtreecommitdiffstats
path: root/WinQuake/Makefile
diff options
context:
space:
mode:
authorwyatt8740 <wyattfward@gmail.com>2021-01-19 14:40:32 -0500
committerwyatt8740 <wyattfward@gmail.com>2021-01-19 14:40:32 -0500
commit6f34ea985bc389605b9e03645ab258259ba49c81 (patch)
tree98874957c6baaae857ed8ce70e0c624c1f8ba50c /WinQuake/Makefile
parent9b671e8d4380c6cdf4b70fbf954e29481b9fdf85 (diff)
downloadquake-pum-6f34ea985bc389605b9e03645ab258259ba49c81.tar.gz
SDL2 audio backend, retrofitted from quakespasm (Music still requires either a CD drive with analogue audio playback or CD drive emulator software like cdemu, but SFX no longer require OSS DMA for playback and Quake no longer inherently prevents other software from making sound while running)
Diffstat (limited to 'WinQuake/Makefile')
-rw-r--r--WinQuake/Makefile91
1 files changed, 71 insertions, 20 deletions
diff --git a/WinQuake/Makefile b/WinQuake/Makefile
index c23e812..4f111f5 100644
--- a/WinQuake/Makefile
+++ b/WinQuake/Makefile
@@ -6,6 +6,21 @@
# ELF only
#
+# wyatt: sdl2 audio, mostly borrowed from quakespasm with some tweaks for
+# otherwise-vanilla Quake.
+# _comment out_ USE_SDL2 definitions to disable (falls back to OSS DMA sound).
+# non-1 values might work for SDL 1.x support, but this is currently
+# untested (though likely to work).
+USE_SDL2=1
+
+ifeq ($(USE_SDL2),1)
+SDL_CONFIG ?= sdl2-config
+else
+SDL_CONFIG ?= sdl-config
+endif
+SDL_CFLAGS := $(shell $(SDL_CONFIG) --cflags) -DUSE_SDL2
+SDL_LIBS := $(shell $(SDL_CONFIG) --libs)
+
BASEVERSION=1.09
VERSION=$(BASEVERSION)$(GLIBC)
@@ -22,7 +37,8 @@ ARCH=i386
endif
NOARCH=noarch
-MOUNT_DIR=/home/wyatt/development/q1source/WinQuake
+# Edit this path, or you probably will run into trouble.
+MOUNT_DIR=/home/wyatt/development/Quake-LinuxUpdate/WinQuake
MASTER_DIR=/grog/Projects/QuakeMaster
MESA_DIR=/usr/local/src/Mesa-2.6
@@ -32,25 +48,33 @@ BUILD_RELEASE_DIR=release$(ARCH)$(GLIBC)
EGCS=/usr/bin/gcc
CC=$(EGCS)
-BASE_CFLAGS=-Dstricmp=strcasecmp
-RELEASE_CFLAGS=$(BASE_CFLAGS) -g -mtune=corei7 -O3 -march=corei7
+# GCC 10 seems to require -no-pie to function properly. It _definitely_
+# does require -fcommon. -m32 is because I am building on a 64-bit machine
+# and this game still has some i386 (32-bit) assembly that I haven't replaced
+# or otherwise added alternative, portable code for.
+# Hopefully, I'll be able to run this game on PowerPC some day.
+BASE_CFLAGS=-Dstricmp=strcasecmp -m32 -fcommon -no-pie
+# might have to change these, too, if you are on another architecture or
+# cross-compiling (don't use 'native'):
+RELEASE_CFLAGS=$(BASE_CFLAGS) -g -mtune=native -O3 -march=native
+# note that powerpc uses -mcpu instead of -march, if I ever do port it.
DEBUG_CFLAGS=$(BASE_CFLAGS) -g
-LDFLAGS=-lm
+LDFLAGS=-lm -m32
SVGALDFLAGS=-lvga
-XLDFLAGS=-L/usr/X11R6/lib -lX11 -lXext -lXxf86dga
+XLDFLAGS=-L/usr/X11R6/lib -lX11 -lXext /usr/lib/i386-linux-gnu/libXxf86dga.so.1.0.0
XCFLAGS=-DX11
-#MESAGLLDFLAGS=-L/usr/X11/lib -L/usr/local/lib -L$(MESA_DIR)/lib -lMesaGL -lglide2x -lX11 -lXext -ldl
-MESAGLLDFLAGS=-L/usr/X11/lib -L/usr/local/lib -L$(MESA_DIR)/lib -lMesaGL -lX11 -lXext -ldl
-GLLDFLAGS=-L/usr/X11/lib -L/usr/local/lib -lGL -lX11 -lXext -ldl -lXxf86dga -lXxf86vm -lm
-GLCFLAGS=-DGLQUAKE -I$(MESA_DIR)/include -I/usr/src/linux-headers-3.5.0-44-generic/include -I/usr/src/linux-headers-3.5.0-44/arch/x86/include -I/usr/include/glide
+MESAGLLDFLAGS=-L/usr/lib/X11 -L/usr/local/lib -L$(MESA_DIR)/lib -lMesaGL -lglide2x -lX11 -lXext -ldl
+TDFXGLLDFLAGS=-L$(TDFXGL_DIR)/release$(ARCH)$(GLIBC) -l3dfxgl -lglide2x -ldl
+GLLDFLAGS=-L/usr/X11/lib -L/usr/local/lib -lGL -lX11 -lXext -ldl /usr/lib/i386-linux-gnu/libXxf86dga.so.1.0.0 /usr/lib/i386-linux-gnu/libXxf86vm.so.1.0.0 -lm
+GLCFLAGS=-DGLQUAKE -I$(MESA_DIR)/include -I/usr/include/glide
DO_CC=$(CC) $(CFLAGS) -o $@ -c $<
DO_DEBUG_CC=$(CC) $(DEBUG_CFLAGS) -o $@ -c $<
-DO_GL_CC=$(CC) $(CFLAGS) $(GLCFLAGS) -o $@ -c $<
-DO_GL_DEBUG_CC=$(CC) $(DEBUG_CFLAGS) $(GLCFLAGS) -o $@ -c $<
-DO_X11_CC=$(CC) $(CFLAGS) $(XCFLAGS) -o $@ -c $<
-DO_X11_DEBUG_CC=$(CC) $(DEBUG_CFLAGS) $(XCFLAGS) -o $@ -c $<
+DO_GL_CC=$(CC) $(CFLAGS) $(GLCFLAGS) $(SDL_CFLAGS) -o $@ -c $<
+DO_GL_DEBUG_CC=$(CC) $(DEBUG_CFLAGS) $(GLCFLAGS) $(SDL_CFLAGS) -o $@ -c $<
+DO_X11_CC=$(CC) $(CFLAGS) $(XCFLAGS) $(SDL_CFLAGS) -o $@ -c $<
+DO_X11_DEBUG_CC=$(CC) $(DEBUG_CFLAGS) $(XCFLAGS) $(SDL_CFLAGS) -o $@ -c $<
DO_O_CC=$(CC) -O $(CFLAGS) -o $@ -c $<
DO_AS=$(CC) $(CFLAGS) -DELF -x assembler-with-cpp -o $@ -c $<
DO_GL_AS=$(CC) $(CFLAGS) $(GLCFLAGS) -DELF -x assembler-with-cpp -o $@ -c $<
@@ -59,7 +83,11 @@ DO_GL_AS=$(CC) $(CFLAGS) $(GLCFLAGS) -DELF -x assembler-with-cpp -o $@ -c $<
# SETUP AND BUILD
#############################################################################
-TARGETS=$(BUILDDIR)/bin/glquake.glx
+# GLQuake build:
+# TARGETS=$(BUILDDIR)/bin/glquake.glx
+
+# X11 Quake (software-rendered) build:
+TARGETS=$(BUILDDIR)/bin/quake.x11
build_debug:
@-mkdir $(BUILD_DEBUG_DIR) \
@@ -86,6 +114,8 @@ targets: $(TARGETS)
#############################################################################
# X11 Quake
#############################################################################
+# REPLACED snd_linux.o with snd_sdl.o from quakespasm
+# $(BUILDDIR)/x11/snd_linux.o \
X11_OBJS = \
$(BUILDDIR)/x11/cl_demo.o \
@@ -158,7 +188,6 @@ X11_OBJS = \
$(BUILDDIR)/x11/snd_dma.o \
$(BUILDDIR)/x11/snd_mem.o \
$(BUILDDIR)/x11/snd_mix.o \
- $(BUILDDIR)/x11/snd_linux.o \
\
$(BUILDDIR)/x11/d_draw.o \
$(BUILDDIR)/x11/d_draw16.o \
@@ -179,8 +208,18 @@ X11_OBJS = \
$(BUILDDIR)/x11/snd_mixa.o \
$(BUILDDIR)/x11/sys_dosa.o
+ifeq ($(USE_SDL2),1)
+# sdl sound
+X11_OBJS := $(X11_OBJS) \
+ $(BUILDDIR)/x11/snd_sdl.o
+else
+# OSS sound
+X11_OBJS := $(X11_OBJS) \
+ $(BUILDDIR)/x11/snd_linux.o
+endif
+
$(BUILDDIR)/bin/quake.x11 : $(X11_OBJS)
- $(CC) $(CFLAGS) -o $@ $(X11_OBJS) $(XLDFLAGS) $(LDFLAGS)
+ $(CC) $(CFLAGS) -o $@ $(X11_OBJS) $(XLDFLAGS) $(SDL_LIBS) $(LDFLAGS)
####
@@ -397,6 +436,9 @@ $(BUILDDIR)/x11/snd_mix.o : $(MOUNT_DIR)/snd_mix.c
$(BUILDDIR)/x11/snd_linux.o :$(MOUNT_DIR)/snd_linux.c
$(DO_X11_CC)
+$(BUILDDIR)/x11/snd_sdl.o :$(MOUNT_DIR)/snd_sdl.c
+ $(DO_X11_CC)
+
#####
$(BUILDDIR)/x11/d_copy.o : $(MOUNT_DIR)/d_copy.s
@@ -514,25 +556,34 @@ GLQUAKE_OBJS= \
$(BUILDDIR)/glquake/snd_dma.o \
$(BUILDDIR)/glquake/snd_mem.o \
$(BUILDDIR)/glquake/snd_mix.o \
- $(BUILDDIR)/glquake/snd_linux.o \
\
$(BUILDDIR)/glquake/math.o \
$(BUILDDIR)/glquake/worlda.o \
$(BUILDDIR)/glquake/snd_mixa.o \
$(BUILDDIR)/glquake/sys_dosa.o
+ifeq ($(USE_SDL2),1)
+# sdl sound
+GLQUAKE_OBJS := $(GLQUAKE_OBJS) \
+ $(BUILDDIR)/glquake/snd_sdl.o
+else
+# OSS sound
+GLQUAKE_OBJS := $(GLQUAkE_OBJS) \
+ $(BUILDDIR)/glquake/snd_linux.o
+endif
+
GLSVGA_OBJS=$(BUILDDIR)/glquake/gl_vidlinux.o
GLX_OBJS=$(BUILDDIR)/glquake/gl_vidlinuxglx.o
$(BUILDDIR)/bin/glquake : $(GLQUAKE_OBJS) $(GLSVGA_OBJS)
- $(CC) $(CFLAGS) -o $@ $(GLQUAKE_OBJS) $(GLSVGA_OBJS) $(MESAGLLDFLAGS) $(SVGALDFLAGS) $(LDFLAGS)
+ $(CC) $(CFLAGS) -o $@ $(GLQUAKE_OBJS) $(GLSVGA_OBJS) $(MESAGLLDFLAGS) $(SVGALDFLAGS) $(SDL_LIBS) $(LDFLAGS)
$(BUILDDIR)/bin/glquake.glx : $(GLQUAKE_OBJS) $(GLX_OBJS)
- $(CC) $(CFLAGS) -o $@ $(GLQUAKE_OBJS) $(GLX_OBJS) $(GLLDFLAGS) $(LDFLAGS)
+ $(CC) $(CFLAGS) -o $@ $(GLQUAKE_OBJS) $(GLX_OBJS) $(GLLDFLAGS) $(SDL_LIBS) $(LDFLAGS)
$(BUILDDIR)/bin/glquake.3dfxgl : $(GLQUAKE_OBJS) $(GLSVGA_OBJS)
- $(CC) $(CFLAGS) -o $@ $(GLQUAKE_OBJS) $(GLSVGA_OBJS) $(TDFXGLLDFLAGS) $(SVGALDFLAGS) $(LDFLAGS)
+ $(CC) $(CFLAGS) -o $@ $(GLQUAKE_OBJS) $(GLSVGA_OBJS) $(TDFXGLLDFLAGS) $(SVGALDFLAGS) $(SDL_LIBS) $(LDFLAGS)
$(BUILDDIR)/glquake/cl_demo.o : $(MOUNT_DIR)/cl_demo.c
$(DO_GL_CC)