-#recommended for: anyone not using ALSA 0.5
-#OBJ_BSDSOUND=snd_oss.o snd_dma.o snd_mix.o snd_mem.o
-OBJ_BSDSOUND=snd_null.o
-BSDSOUNDLIB=
-
-#if you want CD sound in Linux
-#OBJ_BSDCD=cd_bsd.o
-#if you want no CD audio
-OBJ_BSDCD=cd_null.o
-
-#K6/athlon optimizations
-#CPUOPTIMIZATIONS=-march=k6
-#note: don't use -march=athlon, every gcc which has it currently (2.96-3.1)
-#have optimizer bugs (like entities disappearing randomly - a bug with
-#compiling BOX_ON_PLANE_SIDE in mathlib.h)
-#CPUOPTIMIZATIONS=-march=athlon
-#686 optimizations
-#CPUOPTIMIZATIONS=-march=i686
-#no specific CPU
-CPUOPTIMIZATIONS=
-
-
-##### Variables that you shouldn't care about #####
-
-CMD_RM=rm -f
-
-# Objects
-CLIENTOBJECTS= cgame.o cgamevm.o cl_collision.o cl_demo.o cl_input.o \
- cl_main.o cl_parse.o cl_particles.o cl_screen.o cl_video.o \
- console.o dpvsimpledecode.o fractalnoise.o gl_backend.o \
- gl_draw.o gl_models.o gl_rmain.o gl_rsurf.o gl_textures.o \
- jpeg.o keys.o menu.o meshqueue.o r_crosshairs.o r_explosion.o \
- r_lerpanim.o r_light.o r_lightning.o r_modules.o r_sky.o \
- r_sprites.o sbar.o ui.o vid_shared.o view.o wavefile.o \
- r_shadow.o prvm_exec.o prvm_edict.o prvm_cmds.o
-SERVEROBJECTS= pr_cmds.o pr_edict.o pr_exec.o sv_main.o sv_move.o \
- sv_phys.o sv_user.o
-SHAREDOBJECTS= cmd.o collision.o common.o crc.o cvar.o \
- filematch.o host.o host_cmd.o image.o mathlib.o matrixlib.o \
- model_alias.o model_brush.o model_shared.o model_sprite.o \
- netconn.o lhnet.o palette.o portals.o protocol.o fs.o \
- sys_shared.o winding.o world.o wad.o zone.o curves.o
-COMMONOBJECTS= $(CLIENTOBJECTS) $(SERVEROBJECTS) $(SHAREDOBJECTS)
-
-# note that builddate.c is very intentionally not compiled to a .o before
-# being linked, because it should be recompiled every time an executable is
-# built to give the executable a proper date string
-OBJ_GLX= builddate.c sys_linux.o vid_glx.o $(OBJ_BSDCD) $(OBJ_BSDSOUND) $(COMMONOBJECTS)
-OBJ_DED= builddate.c sys_linux.o vid_null.o cd_null.o snd_null.o $(COMMONOBJECTS)
-
-
-# Compilation
-# CFLAGS_NONEXECOMMON=-MD -Wall -Werror
-CFLAGS_NONEXECOMMON=-MD -Wall
-CFLAGS_DEBUG=-ggdb
-CFLAGS_PROFILE=-g -pg -ggdb
-CFLAGS_RELEASE=
-
-OPTIM_DEBUG=
-OPTIM_RELEASE= -O2 -fno-strict-aliasing -ffast-math -fexpensive-optimizations $(CPUOPTIMIZATIONS)
-
-DO_CC=$(CC) $(CFLAGS) -c $< -o $@
-
-
-# Link
-# LordHavoc note: I have been informed that system libraries must come last
-# on the linker line, and that -lm must always be last
-LDFLAGS_GLX=-lm
-LDFLAGS_DED=-lm
-LDFLAGS_DEBUG=-g -ggdb
-LDFLAGS_PROFILE=-g -pg
-LDFLAGS_RELEASE=
-
-EXE_GLX=darkplaces-glx
-EXE_DED=darkplaces-dedicated
+.endif
+
+
+##### Sound configuration #####
+
+.ifndef DP_SOUND_API
+DP_SOUND_API=$(DEFAULT_SNDAPI)
+.endif
+
+# NULL: no sound
+.if $(DP_SOUND_API) == "NULL"
+OBJ_SOUND=$(OBJ_SND_NULL)
+LIB_SOUND=$(LIB_SND_NULL)
+.endif
+
+# OSS: Open Sound System
+.if $(DP_SOUND_API) == "OSS"
+OBJ_SOUND=$(OBJ_SND_OSS)
+LIB_SOUND=$(LIB_SND_OSS)
+.endif
+
+# BSD: BSD / Sun audio API
+.if $(DP_SOUND_API) == "BSD"
+OBJ_SOUND=$(OBJ_SND_BSD)
+LIB_SOUND=$(LIB_SND_BSD)
+.endif
+
+
+##### BSD Make specific definitions #####
+
+MAKE:=$(MAKE) -f makefile.bsd