Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ##### DP_MAKE_TARGET autodetection and arch specific variables #####
- # If we're targeting an x86 CPU we want to enable DP_SSE (CFLAGS_SSE and SSE2)
- DP_SSE:=1
- # Makefile name
- MAKEFILE=makefile
- # Commands
- ifdef windir
- CMD_RM=del
- CMD_CP=copy /y
- CMD_MKDIR=mkdir
- else
- CMD_RM=rm -rf
- CMD_CP=cp -f
- CMD_MKDIR=mkdir -p
- endif
- ###### Optional features #####
- DP_CDDA?=enabled
- ifeq ($(DP_CDDA), enabled)
- OBJ_CD=cd_shared.o cd_win.o
- else
- OBJ_CD=cd_shared.o cd_null.o
- endif
- DP_VIDEO_CAPTURE?=enabled
- ifeq ($(DP_VIDEO_CAPTURE), enabled)
- CFLAGS_VIDEO_CAPTURE=-DCONFIG_VIDEO_CAPTURE
- OBJ_VIDEO_CAPTURE= cap_avi.o cap_ogg.o
- else
- CFLAGS_VIDEO_CAPTURE=
- OBJ_VIDEO_CAPTURE=
- endif
- # Win32 configuration
- #D3D?=1
- ifeq ($(D3D), 1)
- CFLAGS_D3D=-DSUPPORTD3D -DSUPPORTDIRECTX
- CFLAGS_WARNINGS=-Wall
- LDFLAGS_D3D=-ld3d9
- else
- CFLAGS_D3D=
- CFLAGS_WARNINGS=-Wall -Wold-style-definition -Wstrict-prototypes -Wsign-compare -Wdeclaration-after-statement -Wmissing-prototypes
- LDFLAGS_D3D=
- endif
- DP_LINK_ZLIB?=dlopen
- DP_LINK_JPEG?=shared
- DP_LINK_ODE?=dlopen
- DP_LINK_CRYPTO?=dlopen
- DP_LINK_CRYPTO_RIJNDAEL?=dlopen
- # set these to "" if you want to use dynamic loading instead
- # zlib
- ifeq ($(DP_LINK_ZLIB), shared)
- CFLAGS_LIBZ=-DLINK_TO_ZLIB
- LIB_Z=-lz
- endif
- ifeq ($(DP_LINK_ZLIB), dlopen)
- CFLAGS_LIBZ=
- LIB_Z=
- endif
- # jpeg
- ifeq ($(DP_LINK_JPEG), shared)
- CFLAGS_LIBJPEG=-DLINK_TO_LIBJPEG
- LIB_JPEG=-ljpeg
- endif
- ifeq ($(DP_LINK_JPEG), dlopen)
- CFLAGS_LIBJPEG=
- LIB_JPEG=
- endif
- # ode
- ifeq ($(DP_LINK_ODE), shared)
- ODE_CONFIG?=ode-config
- LIB_ODE=`$(ODE_CONFIG) --libs`
- CFLAGS_ODE=`$(ODE_CONFIG) --cflags` -DUSEODE -DLINK_TO_LIBODE
- endif
- ifeq ($(DP_LINK_ODE), dlopen)
- LIB_ODE=
- CFLAGS_ODE=-DUSEODE
- endif
- # d0_blind_id
- ifeq ($(DP_LINK_CRYPTO), shared)
- LIB_CRYPTO=-ld0_blind_id
- CFLAGS_CRYPTO=-DLINK_TO_CRYPTO
- endif
- ifeq ($(DP_LINK_CRYPTO), dlopen)
- LIB_CRYPTO=
- CFLAGS_CRYPTO=
- endif
- ifeq ($(DP_LINK_CRYPTO_RIJNDAEL), shared)
- LIB_CRYPTO_RIJNDAEL=-ld0_rijndael
- CFLAGS_CRYPTO_RIJNDAEL=-DLINK_TO_CRYPTO_RIJNDAEL
- endif
- ifeq ($(DP_LINK_CRYPTO_RIJNDAEL), dlopen)
- LIB_CRYPTO_RIJNDAEL=
- CFLAGS_CRYPTO_RIJNDAEL=
- endif
- ##### Sound configuration #####
- # WIN: DirectX and Win32 WAVE output
- OBJ_SOUND=snd_main.o snd_mem.o snd_mix.o snd_ogg.o snd_wav.o snd_win.o
- LIB_SOUND=
- ##### Extra CFLAGS #####
- CFLAGS_MAKEDEP?=-MMD
- ifdef DP_FS_BASEDIR
- CFLAGS_FS=-DDP_FS_BASEDIR=\"$(DP_FS_BASEDIR)\"
- else
- CFLAGS_FS=
- endif
- CFLAGS_NET=
- # Systems without IPv6 support should uncomment this:
- #CFLAGS_NET+=-DNOSUPPORTIPV6
- ##### GNU Make specific definitions #####
- DO_LD=$(CC) -o ../../../$@ $^ $(LDFLAGS)
- ##### Definitions shared by all makefiles #####
- # 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
- # athlon optimizations
- #CPUOPTIMIZATIONS?=-march=athlon
- # athlon xp optimizations
- #CPUOPTIMIZATIONS?=-march=athlon-xp
- # athlon 64 optimizations
- #CPUOPTIMIZATIONS?=-march=athlon64 -m32
- # Pentium 3 optimizations
- #CPUOPTIMIZATIONS?=-march=pentium3
- # Pentium 4 optimizations
- #CPUOPTIMIZATIONS?=-march=pentium4
- # 686 (Pentium Pro/II) optimizations
- #CPUOPTIMIZATIONS?=-march=i686
- # No specific CPU (386 compatible)
- #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
- # Normal
- CPUOPTIMIZATIONS?=-fno-math-errno -ffinite-math-only -fno-rounding-math -fno-signaling-nans -fno-trapping-math
- # NOTE: *never* *ever* use the -ffast-math or -funsafe-math-optimizations flag
- STRIP?=strip
- ###### Common objects and flags #####
- # Common objects
- OBJ_COMMON= \
- bih.o \
- crypto.o \
- cl_collision.o \
- cl_demo.o \
- cl_dyntexture.o \
- cl_input.o \
- cl_main.o \
- cl_parse.o \
- cl_particles.o \
- cl_screen.o \
- cl_video.o \
- clvm_cmds.o \
- cmd.o \
- collision.o \
- common.o \
- console.o \
- csprogs.o \
- curves.o \
- cvar.o \
- dpsoftrast.o \
- dpvsimpledecode.o \
- filematch.o \
- fractalnoise.o \
- fs.o \
- ft2.o \
- utf8lib.o \
- gl_backend.o \
- gl_draw.o \
- gl_rmain.o \
- gl_rsurf.o \
- gl_textures.o \
- hmac.o \
- host.o \
- host_cmd.o \
- image.o \
- image_png.o \
- jpeg.o \
- keys.o \
- lhnet.o \
- libcurl.o \
- mathlib.o \
- matrixlib.o \
- mdfour.o \
- meshqueue.o \
- mod_skeletal_animatevertices_sse.o \
- mod_skeletal_animatevertices_generic.o \
- model_alias.o \
- model_brush.o \
- model_shared.o \
- model_sprite.o \
- netconn.o \
- palette.o \
- polygon.o \
- portals.o \
- protocol.o \
- prvm_cmds.o \
- prvm_edict.o \
- prvm_exec.o \
- r_explosion.o \
- r_lerpanim.o \
- r_lightning.o \
- r_modules.o \
- r_shadow.o \
- r_sky.o \
- r_sprites.o \
- sbar.o \
- sv_demo.o \
- sv_main.o \
- sv_move.o \
- sv_phys.o \
- sv_user.o \
- svbsp.o \
- svvm_cmds.o \
- sys_shared.o \
- vid_shared.o \
- view.o \
- wad.o \
- world.o \
- zone.o
- OBJ_MENU= \
- menu.o \
- mvm_cmds.o
- # Compilation
- CFLAGS_COMMON=$(CFLAGS_MAKEDEP) $(CFLAGS_FS) $(CFLAGS_WARNINGS) $(CFLAGS_LIBZ) $(CFLAGS_LIBJPEG) $(CFLAGS_D3D) $(CFLAGS_NET) -D_FILE_OFFSET_BITS=64 -D__KERNEL_STRICT_NAMES -I../../../
- CFLAGS_CLIENT=-DCONFIG_MENU -DCONFIG_CD $(CFLAGS_VIDEO_CAPTURE)
- CFLAGS_DEBUG=-ggdb
- CFLAGS_PROFILE=-g -pg -ggdb -fprofile-arcs
- CFLAGS_RELEASE=
- CFLAGS_RELEASE_PROFILE=-fbranch-probabilities
- ifeq ($(DP_SSE),1)
- CFLAGS_SSE=-msse
- CFLAGS_SSE2=-msse2
- else
- CFLAGS_SSE=
- CFLAGS_SSE2=
- endif # ifeq ($(DP_SSE),1)
- OPTIM_DEBUG=$(CPUOPTIMIZATIONS)
- #OPTIM_RELEASE=-O2 -fno-strict-aliasing -ffast-math -funroll-loops $(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)
- OPTIM_RELEASE=-O3 -fno-strict-aliasing $(CPUOPTIMIZATIONS)
- # NOTE: *never* *ever* use the -ffast-math or -funsafe-math-optimizations flag
- DO_CC=$(CC) $(CFLAGS) -c $< -o $@
- # Link
- LDFLAGS_DEBUG=-g -ggdb $(OPTIM_DEBUG) -DSVNREVISION=`{ test -d .svn && svnversion; } || { test -d .git && git describe --always; } || echo -` -DBUILDTYPE=debug
- LDFLAGS_PROFILE=-g -pg -fprofile-arcs $(OPTIM_RELEASE) -DSVNREVISION=`{ test -d .svn && svnversion; } || { test -d .git && git describe --always; } || echo -` -DBUILDTYPE=profile
- LDFLAGS_RELEASE=$(OPTIM_RELEASE) -DSVNREVISION=`{ test -d .svn && svnversion; } || { test -d .git && git describe --always; } || echo -` -DBUILDTYPE=release
- ##### Win32 specific variables #####
- # 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_CL= builddate.c sys_win.o vid_wgl.o thread_null.o $(OBJ_MENU) $(OBJ_SOUND) $(OBJ_CD) $(OBJ_VIDEO_CAPTURE) $(OBJ_COMMON)
- # Link
- # see LDFLAGS_WINCOMMON in makefile
- LDFLAGS_CL=$(LDFLAGS_WINCOMMON) $(LIB_CRYPTO) $(LIB_CRYPTO_RIJNDAEL) -mwindows -lwinmm -luser32 -lgdi32 -ldxguid -ldinput -lcomctl32 -lws2_32 $(LDFLAGS_D3D) $(LIB_Z) $(LIB_JPEG)
- EXE_CL=_darkplaces.exe
- VPATH := ../../../
- ##### Commands #####
- .PHONY : clean clean-profile help \
- debug profile release \
- cl-debug cl-profile cl-release
- release :
- $(MAKE) bin-release \
- EXE='$(EXE_CL)' CFLAGS_FEATURES='$(CFLAGS_CLIENT)' LDFLAGS_COMMON='$(LDFLAGS_CL)' LEVEL=1
- help:
- @echo
- @echo "===== Choose one ====="
- @echo "* $(MAKE) clean : delete all files produced by the build except"
- @echo " profiling information"
- @echo "* $(MAKE) clean-profile : delete all files produced by the build, including"
- @echo " profiling informaiton"
- @echo "* $(MAKE) help : this help"
- @echo "* $(MAKE) debug : make client (debug version)"
- @echo "* $(MAKE) profile : make client (profile version)"
- @echo "* $(MAKE) release : make client (release version)"
- @echo "* $(MAKE) release-profile : make client (release version)"
- @echo " (with profiling optimizations) The profiled"
- @echo " version of the program must have been"
- @echo " previously compiled"
- @echo
- debug :
- $(MAKE) bin-debug \
- EXE='$(EXE_CL)' CFLAGS_FEATURES='$(CFLAGS_CLIENT)' LDFLAGS_COMMON='$(LDFLAGS_CL)' LEVEL=1
- profile :
- $(MAKE) bin-profile \
- EXE='$(EXE_CL)' CFLAGS_FEATURES='$(CFLAGS_CLIENT)' LDFLAGS_COMMON='$(LDFLAGS_CL)' LEVEL=1
- release-profile :
- $(MAKE) bin-release-profile \
- EXE='$(EXE_CL)' CFLAGS_FEATURES='$(CFLAGS_CLIENT)' LDFLAGS_COMMON='$(LDFLAGS_CL)' LEVEL=1
- bin-debug :
- $(CHECKLEVEL1)
- @echo
- @echo '========== $(EXE) (debug) =========='
- $(MAKE) prepare BUILD_DIR=build-obj/debug/$(EXE)
- $(MAKE) -C build-obj/debug/$(EXE) $(EXE) \
- CFLAGS='$(CFLAGS_COMMON) $(CFLAGS_FEATURES) $(CFLAGS_EXTRA) $(CFLAGS_DEBUG) $(OPTIM_DEBUG)'\
- LDFLAGS='$(LDFLAGS_DEBUG) $(LDFLAGS_COMMON)' LEVEL=2
- bin-profile :
- $(CHECKLEVEL1)
- @echo
- @echo '========== $(EXE) (profile) =========='
- $(MAKE) prepare BUILD_DIR=build-obj/profile/$(EXE)
- $(MAKE) -C build-obj/profile/$(EXE) $(EXE) \
- CFLAGS='$(CFLAGS_COMMON) $(CFLAGS_FEATURES) $(CFLAGS_EXTRA) $(CFLAGS_PROFILE) $(OPTIM_RELEASE)'\
- LDFLAGS='$(LDFLAGS_PROFILE) $(LDFLAGS_COMMON)' LEVEL=2
- bin-release :
- $(CHECKLEVEL1)
- @echo
- @echo '========== $(EXE) (release) =========='
- $(MAKE) prepare BUILD_DIR=build-obj/release/$(EXE)
- $(MAKE) -C build-obj/release/$(EXE) $(EXE) \
- CFLAGS='$(CFLAGS_COMMON) $(CFLAGS_FEATURES) $(CFLAGS_EXTRA) $(CFLAGS_RELEASE) $(OPTIM_RELEASE)'\
- LDFLAGS='$(LDFLAGS_RELEASE) $(LDFLAGS_COMMON)' LEVEL=2
- $(STRIP) $(EXE)
- bin-release-profile :
- $(CHECKLEVEL1)
- @echo
- @echo '========== $(EXE) (release) =========='
- $(MAKE) prepare BUILD_DIR=build-obj/release-profile/$(EXE)
- $(MAKE) -C build-obj/release-profile/$(EXE) $(EXE) \
- CFLAGS='$(CFLAGS_COMMON) $(CFLAGS_FEATURES) $(CFLAGS_EXTRA) $(CFLAGS_RELEASE_PROFILE) $(OPTIM_RELEASE)'\
- LDFLAGS='$(LDFLAGS_RELEASE) $(LDFLAGS_COMMON)' LEVEL=2
- $(STRIP) $(EXE)
- prepare :
- $(CMD_MKDIR) $(BUILD_DIR)
- $(CMD_CP) $(MAKEFILE) $(BUILD_DIR)/
- #this checks USEODE when compiling so it needs the ODE flags as well
- prvm_cmds.o: prvm_cmds.c
- $(CHECKLEVEL2)
- $(DO_CC) $(CFLAGS_ODE)
- world.o: world.c
- $(CHECKLEVEL2)
- $(DO_CC) $(CFLAGS_ODE)
- crypto.o: crypto.c
- $(CHECKLEVEL2)
- $(DO_CC) $(CFLAGS_CRYPTO) $(CFLAGS_CRYPTO_RIJNDAEL)
- mod_skeletal_animatevertices_sse.o: mod_skeletal_animatevertices_sse.c
- $(CHECKLEVEL2)
- $(DO_CC) $(CFLAGS_SSE)
- dpsoftrast.o: dpsoftrast.c
- $(CHECKLEVEL2)
- $(DO_CC) $(CFLAGS_SSE2)
- resource.o: resource.rc
- $(CHECKLEVEL2)
- windres -o $@ $<
- .c.o:
- $(CHECKLEVEL2)
- $(DO_CC)
- $(EXE_CL): $(OBJ_CL) resource.o
- $(CHECKLEVEL2)
- $(DO_LD)
- clean:
- -$(CMD_RM) $(EXE_CL)
- -$(CMD_RM) *.o
- -$(CMD_RM) *.d
- -$(CMD_RM) build-obj/
- clean-profile: clean
- -$(CMD_RM) *.gcda
- -$(CMD_RM) *.gcno
- print-%: ; @echo $*=$($*)
- ##### Dependency files #####
- -include *.d
- # hack to deal with no-longer-needed .h files
- %.h:
- @echo
- @echo "NOTE: file $@ mentioned in dependencies missing, continuing..."
- @echo "HINT: consider 'make clean'"
- @echo
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement