]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - makefile.inc
capturevideo refactoring, making AVI also "just a module" for it
[xonotic/darkplaces.git] / makefile.inc
index ab8a448fed61ac1e6b52c637a324b67c53a69cbd..88d324d05ed3667932bea9831519cfe938e08ec2 100644 (file)
@@ -1,20 +1,27 @@
+# Invalid call detection
+CHECKLEVEL1 = @if [ "$(LEVEL)" != 1 ]; then $(MAKE) help; false; fi
+CHECKLEVEL2 = @if [ "$(LEVEL)" != 2 ]; then $(MAKE) help; false; fi
+
 # Choose the compiler you want to use
-CC=gcc
+CC?=gcc
 
 # athlon optimizations
-#CPUOPTIMIZATIONS=-march=athlon
+#CPUOPTIMIZATIONS?=-march=athlon
 # athlon xp optimizations
-#CPUOPTIMIZATIONS=-march=athlon-xp
+#CPUOPTIMIZATIONS?=-march=athlon-xp
 # athlon 64 optimizations
-#CPUOPTIMIZATIONS=-march=athlon64 -m32
+#CPUOPTIMIZATIONS?=-march=athlon64 -m32
 # Pentium 3 optimizations
-#CPUOPTIMIZATIONS=-march=pentium3
+#CPUOPTIMIZATIONS?=-march=pentium3
 # Pentium 4 optimizations
-#CPUOPTIMIZATIONS=-march=pentium4
+#CPUOPTIMIZATIONS?=-march=pentium4
 # 686 (Pentium Pro/II) optimizations
-#CPUOPTIMIZATIONS=-march=i686
+#CPUOPTIMIZATIONS?=-march=i686
 # No specific CPU (386 compatible)
-CPUOPTIMIZATIONS=
+CPUOPTIMIZATIONS?=
+# Experimental
+#CPUOPTIMIZATIONS?=-fno-math-errno -ffinite-math-only -fno-rounding-math -fno-signaling-nans -fassociative-math -freciprocal-math -fno-signed-zeros -fno-trapping-math
+# NOTE: *never* *ever* use the -ffast-math or -funsafe-math-optimizations flag
 
 SDL_CONFIG?=sdl-config
 SDLCONFIG_UNIXCFLAGS?=`$(SDL_CONFIG) --cflags`
@@ -31,8 +38,8 @@ STRIP?=strip
 OBJ_SND_COMMON=snd_main.o snd_mem.o snd_mix.o snd_ogg.o snd_wav.o snd_modplug.o
 
 # Additional stuff for libmodplug
-LIB_SND_MODPLUG=`if [ -n "$(DP_MODPLUG_STATIC_LIBDIR)" ]; then echo " $(DP_MODPLUG_STATIC_LIBDIR)/libmodplug.a -lstdc++"; fi`
-CFLAGS_SND_MODPLUG=`if [ -n "$(DP_MODPLUG_STATIC_LIBDIR)" ]; then echo " -I$(DP_MODPLUG_STATIC_LIBDIR)/../include -DSND_MODPLUG_STATIC"; fi`
+LIB_SND_MODPLUG=`[ -n "$(DP_MODPLUG_STATIC_LIBDIR)" ] && echo \ $(DP_MODPLUG_STATIC_LIBDIR)/libmodplug.a\ -lstdc++`
+CFLAGS_SND_MODPLUG=`[ -n "$(DP_MODPLUG_STATIC_LIBDIR)" ] && echo \ -I$(DP_MODPLUG_STATIC_LIBDIR)/../include\ -DSND_MODPLUG_STATIC`
 
 # No sound
 OBJ_SND_NULL=snd_null.o
@@ -47,7 +54,7 @@ OBJ_SND_ALSA=$(OBJ_SND_COMMON) snd_alsa.o
 LIB_SND_ALSA=-lasound $(LIB_SND_MODPLUG)
 
 # Core Audio (Mac OS X)
-OBJ_SND_COREAUDIO=$(OBJ_SND_COMMON) snd_coreaudio.c
+OBJ_SND_COREAUDIO=$(OBJ_SND_COMMON) snd_coreaudio.o
 LIB_SND_COREAUDIO=-framework CoreAudio $(LIB_SND_MODPLUG)
 
 # BSD / Sun audio API (NetBSD and OpenBSD)
@@ -70,6 +77,8 @@ OBJ_NOCD=cd_null.o
 
 # Common objects
 OBJ_COMMON= \
+       cap_avi.o \
+       cap_ogg.o \
        cd_shared.o \
        cl_collision.o \
        cl_demo.o \
@@ -165,6 +174,7 @@ OPTIM_DEBUG=$(CPUOPTIMIZATIONS)
 #OPTIM_RELEASE=-O2 -fno-strict-aliasing -fno-math-errno -fno-trapping-math -ffinite-math-only -fno-signaling-nans -fcx-limited-range -funroll-loops $(CPUOPTIMIZATIONS)
 #OPTIM_RELEASE=-O2 -fno-strict-aliasing -funroll-loops $(CPUOPTIMIZATIONS)
 OPTIM_RELEASE=-O2 -fno-strict-aliasing $(CPUOPTIMIZATIONS)
+# NOTE: *never* *ever* use the -ffast-math or -funsafe-math-optimizations flag
 
 DO_CC=$(CC) $(CFLAGS) -c $< -o $@
 
@@ -205,9 +215,9 @@ OBJ_LINUXCD=cd_linux.o
 #OBJ_LINUXCD=$(OBJ_NOCD)
 
 # Link
-LDFLAGS_LINUXCL=$(LDFLAGS_UNIXCOMMON) -ldl $(LDFLAGS_UNIXCL)
-LDFLAGS_LINUXSV=$(LDFLAGS_UNIXCOMMON) -ldl
-LDFLAGS_LINUXSDL=$(LDFLAGS_UNIXCOMMON) -ldl $(LDFLAGS_UNIXSDL)
+LDFLAGS_LINUXCL=$(LDFLAGS_UNIXCOMMON) -lrt -ldl $(LDFLAGS_UNIXCL)
+LDFLAGS_LINUXSV=$(LDFLAGS_UNIXCOMMON) -lrt -ldl
+LDFLAGS_LINUXSDL=$(LDFLAGS_UNIXCOMMON) -lrt -ldl $(LDFLAGS_UNIXSDL)
 
 
 ##### Mac OS X specific variables #####
@@ -234,9 +244,9 @@ OBJ_SUNOSCD=$(OBJ_NOCD)
 CFLAGS_SUNOS=-I/usr/lib/oss/include -DBSD_COMP -DSUNOS
 
 # Link
-LDFLAGS_SUNOSCL=$(LDFLAGS_UNIXCOMMON) -ldl -lsocket -lnsl -R$(UNIX_X11LIBPATH) -L$(UNIX_X11LIBPATH) -lX11 -lXpm -lXext -lXxf86vm $(LIB_SOUND)
-LDFLAGS_SUNOSSV=$(LDFLAGS_UNIXCOMMON) -ldl -lsocket -lnsl
-LDFLAGS_SUNOSSDL=$(LDFLAGS_UNIXCOMMON) -ldl -lsocket -lnsl $(LDFLAGS_UNIXSDL)
+LDFLAGS_SUNOSCL=$(LDFLAGS_UNIXCOMMON) -lrt -ldl -lsocket -lnsl -R$(UNIX_X11LIBPATH) -L$(UNIX_X11LIBPATH) -lX11 -lXpm -lXext -lXxf86vm $(LIB_SOUND)
+LDFLAGS_SUNOSSV=$(LDFLAGS_UNIXCOMMON) -lrt -ldl -lsocket -lnsl
+LDFLAGS_SUNOSSDL=$(LDFLAGS_UNIXCOMMON) -lrt -ldl -lsocket -lnsl $(LDFLAGS_UNIXSDL)
 
 
 ##### BSD specific variables #####
@@ -248,7 +258,7 @@ OBJ_BSDCD=cd_bsd.o
 
 # Link
 LDFLAGS_BSDCL=$(LDFLAGS_UNIXCOMMON) -lutil $(LDFLAGS_UNIXCL)
-LDFLAGS_BSDSV=$(LDFLAGS_UNIXCOMMON)
+LDFLAGS_BSDSV=$(LDFLAGS_UNIXCOMMON) 
 LDFLAGS_BSDSDL=$(LDFLAGS_UNIXCOMMON) $(LDFLAGS_UNIXSDL)
 
 
@@ -322,134 +332,153 @@ nexuiz :
 cl-debug :
        $(MAKE) bin-debug \
                DP_MAKE_TARGET=$(DP_MAKE_TARGET) DP_SOUND_API=$(DP_SOUND_API) \
-               EXE="$(EXE_CL)" LDFLAGS_COMMON="$(LDFLAGS_CL)"
+               EXE="$(EXE_CL)" LDFLAGS_COMMON="$(LDFLAGS_CL)" LEVEL=1
 
 cl-profile :
        $(MAKE) bin-profile \
                DP_MAKE_TARGET=$(DP_MAKE_TARGET) DP_SOUND_API=$(DP_SOUND_API) \
-               EXE="$(EXE_CL)" LDFLAGS_COMMON="$(LDFLAGS_CL)"
+               EXE="$(EXE_CL)" LDFLAGS_COMMON="$(LDFLAGS_CL)" LEVEL=1
 
 cl-release :
        $(MAKE) bin-release \
                DP_MAKE_TARGET=$(DP_MAKE_TARGET) DP_SOUND_API=$(DP_SOUND_API) \
-               EXE="$(EXE_CL)" LDFLAGS_COMMON="$(LDFLAGS_CL)"
+               EXE="$(EXE_CL)" LDFLAGS_COMMON="$(LDFLAGS_CL)" LEVEL=1
 
 cl-nexuiz :
        $(MAKE) bin-release \
                DP_MAKE_TARGET=$(DP_MAKE_TARGET) DP_SOUND_API=$(DP_SOUND_API) \
-               EXE="$(EXE_CLNEXUIZ)" LDFLAGS_COMMON="$(LDFLAGS_CL)"
+               EXE="$(EXE_CLNEXUIZ)" LDFLAGS_COMMON="$(LDFLAGS_CL)" LEVEL=1
 
 sv-debug :
        $(MAKE) bin-debug \
                DP_MAKE_TARGET=$(DP_MAKE_TARGET) DP_SOUND_API=$(DP_SOUND_API) \
-               EXE="$(EXE_SV)" LDFLAGS_COMMON="$(LDFLAGS_SV)"
+               EXE="$(EXE_SV)" LDFLAGS_COMMON="$(LDFLAGS_SV)" LEVEL=1
 
 sv-profile :
        $(MAKE) bin-profile \
                DP_MAKE_TARGET=$(DP_MAKE_TARGET) DP_SOUND_API=$(DP_SOUND_API) \
-               EXE="$(EXE_SV)" LDFLAGS_COMMON="$(LDFLAGS_SV)"
+               EXE="$(EXE_SV)" LDFLAGS_COMMON="$(LDFLAGS_SV)" LEVEL=1
 
 sv-release :
        $(MAKE) bin-release \
                DP_MAKE_TARGET=$(DP_MAKE_TARGET) DP_SOUND_API=$(DP_SOUND_API) \
-               EXE="$(EXE_SV)" LDFLAGS_COMMON="$(LDFLAGS_SV)"
+               EXE="$(EXE_SV)" LDFLAGS_COMMON="$(LDFLAGS_SV)" LEVEL=1
 
 sv-nexuiz :
        $(MAKE) bin-release \
                DP_MAKE_TARGET=$(DP_MAKE_TARGET) DP_SOUND_API=$(DP_SOUND_API) \
-               EXE="$(EXE_SVNEXUIZ)" LDFLAGS_COMMON="$(LDFLAGS_SV)"
+               EXE="$(EXE_SVNEXUIZ)" LDFLAGS_COMMON="$(LDFLAGS_SV)" LEVEL=1
 
 sdl-debug :
        $(MAKE) bin-debug \
                DP_MAKE_TARGET=$(DP_MAKE_TARGET) DP_SOUND_API=$(DP_SOUND_API) \
-               EXE="$(EXE_SDL)" LDFLAGS_COMMON="$(LDFLAGS_SDL)"
+               EXE="$(EXE_SDL)" LDFLAGS_COMMON="$(LDFLAGS_SDL)" LEVEL=1
 
 sdl-profile :
        $(MAKE) bin-profile \
                DP_MAKE_TARGET=$(DP_MAKE_TARGET) DP_SOUND_API=$(DP_SOUND_API) \
-               EXE="$(EXE_SDL)" LDFLAGS_COMMON="$(LDFLAGS_SDL)"
+               EXE="$(EXE_SDL)" LDFLAGS_COMMON="$(LDFLAGS_SDL)" LEVEL=1
 
 sdl-release :
        $(MAKE) bin-release \
                DP_MAKE_TARGET=$(DP_MAKE_TARGET) DP_SOUND_API=$(DP_SOUND_API) \
-               EXE="$(EXE_SDL)" LDFLAGS_COMMON="$(LDFLAGS_SDL)"
+               EXE="$(EXE_SDL)" LDFLAGS_COMMON="$(LDFLAGS_SDL)" LEVEL=1
 
 sdl-nexuiz :
        $(MAKE) bin-release \
                DP_MAKE_TARGET=$(DP_MAKE_TARGET) DP_SOUND_API=$(DP_SOUND_API) \
-               EXE="$(EXE_SDLNEXUIZ)" LDFLAGS_COMMON="$(LDFLAGS_SDL)"
+               EXE="$(EXE_SDLNEXUIZ)" LDFLAGS_COMMON="$(LDFLAGS_SDL)" LEVEL=1
 
 bin-debug :
+       $(CHECKLEVEL1)
        @echo
        @echo "========== $(EXE) (debug) =========="
        $(MAKE) $(EXE) \
                DP_MAKE_TARGET=$(DP_MAKE_TARGET) DP_SOUND_API=$(DP_SOUND_API) \
                CFLAGS="$(CFLAGS_COMMON) $(CFLAGS_EXTRA) $(CFLAGS_DEBUG) $(OPTIM_DEBUG)"\
-               LDFLAGS="$(LDFLAGS_DEBUG) $(LDFLAGS_COMMON)"
+               LDFLAGS="$(LDFLAGS_DEBUG) $(LDFLAGS_COMMON)" LEVEL=2
 
 bin-profile :
+       $(CHECKLEVEL1)
        @echo
        @echo "========== $(EXE) (profile) =========="
        $(MAKE) $(EXE) \
                DP_MAKE_TARGET=$(DP_MAKE_TARGET) DP_SOUND_API=$(DP_SOUND_API) \
                CFLAGS="$(CFLAGS_COMMON) $(CFLAGS_EXTRA) $(CFLAGS_PROFILE) $(OPTIM_RELEASE)"\
-               LDFLAGS="$(LDFLAGS_PROFILE) $(LDFLAGS_COMMON)"
+               LDFLAGS="$(LDFLAGS_PROFILE) $(LDFLAGS_COMMON)" LEVEL=2
 
 bin-release :
+       $(CHECKLEVEL1)
        @echo
        @echo "========== $(EXE) (release) =========="
        $(MAKE) $(EXE) \
                DP_MAKE_TARGET=$(DP_MAKE_TARGET) DP_SOUND_API=$(DP_SOUND_API) \
                CFLAGS="$(CFLAGS_COMMON) $(CFLAGS_EXTRA) $(CFLAGS_RELEASE) $(OPTIM_RELEASE)"\
-               LDFLAGS="$(LDFLAGS_RELEASE) $(LDFLAGS_COMMON)"
+               LDFLAGS="$(LDFLAGS_RELEASE) $(LDFLAGS_COMMON)" LEVEL=2
        $(STRIP) $(EXE)
 
 snd_modplug.o: snd_modplug.c
+       $(CHECKLEVEL2)
        $(DO_CC) $(CFLAGS_SND_MODPLUG)
 
 vid_glx.o: vid_glx.c
+       $(CHECKLEVEL2)
        $(DO_CC) -I/usr/X11R6/include
 
 vid_sdl.o: vid_sdl.c
+       $(CHECKLEVEL2)
        $(DO_CC) $(CFLAGS_SDL)
 
 sys_sdl.o: sys_sdl.c
+       $(CHECKLEVEL2)
        $(DO_CC) $(CFLAGS_SDL)
 
 snd_sdl.o: snd_sdl.c
+       $(CHECKLEVEL2)
        $(DO_CC) $(CFLAGS_SDL)
 
 snd_3dras.o: snd_3dras.c
+       $(CHECKLEVEL2)
        $(DO_CC)
 
 cd_sdl.o: cd_sdl.c
+       $(CHECKLEVEL2)
        $(DO_CC) $(CFLAGS_SDL)
 
 darkplaces.o: %.o : %.rc
+       $(CHECKLEVEL2)
        $(WINDRES) -o $@ $<
 
 nexuiz.o: %.o : %.rc
+       $(CHECKLEVEL2)
        $(WINDRES) -o $@ $<
 
 .c.o:
+       $(CHECKLEVEL2)
        $(DO_CC)
 
 $(EXE_CL): $(OBJ_CL) $(OBJ_ICON)
+       $(CHECKLEVEL2)
        $(DO_LD)
 
 $(EXE_SV): $(OBJ_SV) $(OBJ_ICON)
+       $(CHECKLEVEL2)
        $(DO_LD)
 
 $(EXE_SDL): $(OBJ_SDL) $(OBJ_ICON)
+       $(CHECKLEVEL2)
        $(DO_LD)
 
 $(EXE_CLNEXUIZ): $(OBJ_CL) $(OBJ_ICON_NEXUIZ)
+       $(CHECKLEVEL2)
        $(DO_LD)
 
 $(EXE_SVNEXUIZ): $(OBJ_SV) $(OBJ_ICON_NEXUIZ)
+       $(CHECKLEVEL2)
        $(DO_LD)
 
 $(EXE_SDLNEXUIZ): $(OBJ_SDL) $(OBJ_ICON_NEXUIZ)
+       $(CHECKLEVEL2)
        $(DO_LD)
 
 clean: