-#use this line for profiling
-PROFILEOPTION=-pg -g
-NOPROFILEOPTIMIZATIONS=
-#use this line for no profiling
-#PROFILEOPTION=
-#NOPROFILEOPTIMIZATIONS=-fomit-frame-pointer
-#use these lines for debugging without profiling
-#PROFILEOPTION=
-#NOPROFILEOPTIMIZATIONS=
-
-#note:
-#the -Werror can be removed to compile even if there are warnings,
-#this is used to ensure that all released versions are free of warnings.
-
-#normal compile
-OPTIMIZATIONS= -O6 -ffast-math -funroll-loops $(NOPROFILEOPTIMIZATIONS) -fexpensive-optimizations $(CPUOPTIMIZATIONS)
-CFLAGS= -MD -Wall -Werror -I/usr/X11R6/include -I/usr/include/glide $(OPTIMIZATIONS) $(PROFILEOPTION)
-#debug compile
-#OPTIMIZATIONS=
-#CFLAGS= -MD -Wall -Werror -I/usr/X11R6/include -ggdb $(OPTIMIZATIONS) $(PROFILEOPTION)
-
-LDFLAGS= -L/usr/X11R6/lib -lm -lX11 -lXext -lXIE -lXxf86dga -lXxf86vm -lGL -ldl $(SOUNDLIB) $(PROFILEOPTION)
-
-#if you don't need the -3dfx version, use this line
-all: builddate darkplaces-glx
-#all: builddate darkplaces-glx darkplaces-3dfx
+##### Commands #####
+
+.PHONY : clean help \
+ debug profile release \
+ glx-debug glx-profile glx-release \
+ ded-debug ded-profile ded-release \
+
+help:
+ @echo
+ @echo "===== Choose one ====="
+ @echo "* $(MAKE) clean : delete the binaries, and .o and .d files"
+ @echo "* $(MAKE) help : this help"
+ @echo "* $(MAKE) debug : make GLX and dedicated binaries (debug versions)"
+ @echo "* $(MAKE) profile : make GLX and dedicated binaries (profile versions)"
+ @echo "* $(MAKE) release : make GLX and dedicated binaries (release versions)"
+ @echo "* $(MAKE) glx-debug : make GLX binary (debug version)"
+ @echo "* $(MAKE) glx-profile : make GLX binary (profile version)"
+ @echo "* $(MAKE) glx-release : make GLX binary (release version)"
+ @echo "* $(MAKE) ded-debug : make dedicated server (debug version)"
+ @echo "* $(MAKE) ded-profile : make dedicated server (profile version)"
+ @echo "* $(MAKE) ded-release : make dedicated server (release version)"
+ @echo
+
+debug :
+ $(MAKE) glx-debug ded-debug
+
+profile :
+ $(MAKE) glx-profile ded-profile
+
+release :
+ $(MAKE) glx-release ded-release
+
+glx-debug :
+ $(MAKE) bin-debug EXE="$(EXE_GLX)"
+
+glx-profile :
+ $(MAKE) bin-profile EXE="$(EXE_GLX)"
+
+glx-release :
+ $(MAKE) bin-release EXE="$(EXE_GLX)"
+
+ded-debug :
+ $(MAKE) bin-debug EXE="$(EXE_DED)"
+
+ded-profile :
+ $(MAKE) bin-profile EXE="$(EXE_DED)"
+
+ded-release :
+ $(MAKE) bin-release EXE="$(EXE_DED)"
+
+bin-debug :
+ @echo
+ @echo "========== $(EXE) (debug) =========="
+ $(MAKE) builddate
+ $(MAKE) $(EXE) \
+ CFLAGS="$(CFLAGS_COMMON) $(CFLAGS_DEBUG) $(OPTIM_DEBUG)"\
+ LDFLAGS="$(LDFLAGS_DEBUG) $(LDFLAGS_COMMON)"
+
+bin-profile :
+ @echo
+ @echo "========== $(EXE) (profile) =========="
+ $(MAKE) builddate
+ $(MAKE) $(EXE) \
+ CFLAGS="$(CFLAGS_COMMON) $(CFLAGS_PROFILE) $(OPTIM_RELEASE)"\
+ LDFLAGS="$(LDFLAGS_PROFILE) $(LDFLAGS_COMMON)"
+
+bin-release :
+ @echo
+ @echo "========== $(EXE) (release) =========="
+ $(MAKE) builddate
+ $(MAKE) $(EXE) \
+ CFLAGS="$(CFLAGS_COMMON) $(CFLAGS_RELEASE) $(OPTIM_RELEASE)"\
+ LDFLAGS="$(LDFLAGS_RELEASE) $(LDFLAGS_COMMON)"
+ strip $(EXE)