From 1a3d82a44ac27a76405c4540157b7cd55e317d27 Mon Sep 17 00:00:00 2001 From: havoc Date: Sun, 9 Aug 2009 00:31:17 +0000 Subject: [PATCH] patch from Jason Hatton adding a release-profile build target that uses the results of -fprofile-arcs on a previous run of the profile build, and says it greatly improves framerates git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@9108 d7cf8633-e32d-0410-b094-e92efae38249 --- makefile.inc | 89 +++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 68 insertions(+), 21 deletions(-) diff --git a/makefile.inc b/makefile.inc index f5e3e628..486bfeeb 100644 --- a/makefile.inc +++ b/makefile.inc @@ -166,8 +166,9 @@ OBJ_SDL= builddate.c sys_sdl.o vid_sdl.o $(OBJ_SND_COMMON) snd_sdl.o cd_sdl.o $( # Compilation CFLAGS_COMMON=$(CFLAGS_MAKEDEP) $(CFLAGS_PRELOAD) $(CFLAGS_FS) -Wall -Wsign-compare -Wdeclaration-after-statement CFLAGS_DEBUG=-ggdb -CFLAGS_PROFILE=-g -pg -ggdb +CFLAGS_PROFILE=-g -pg -ggdb -fprofile-arcs CFLAGS_RELEASE= +CFLAGS_RELEASE_PROFILE=-fbranch-probabilities CFLAGS_SDL=$(SDLCONFIG_CFLAGS) OPTIM_DEBUG=$(CPUOPTIMIZATIONS) @@ -182,7 +183,7 @@ DO_CC=$(CC) $(CFLAGS) -c $< -o $@ # Link LDFLAGS_DEBUG=-g -ggdb $(OPTIM_DEBUG) -DSVNREVISION=`test -d .svn && svnversion || echo -` -DBUILDTYPE=debug -LDFLAGS_PROFILE=-g -pg $(OPTIM_RELEASE) -DSVNREVISION=`test -d .svn && svnversion || echo -` -DBUILDTYPE=profile +LDFLAGS_PROFILE=-g -pg -fprofile-arcs $(OPTIM_RELEASE) -DSVNREVISION=`test -d .svn && svnversion || echo -` -DBUILDTYPE=profile LDFLAGS_RELEASE=$(OPTIM_RELEASE) -DSVNREVISION=`test -d .svn && svnversion || echo -` -DBUILDTYPE=release @@ -289,7 +290,7 @@ EXE_WINSDLNEXUIZ=nexuiz-sdl.exe ##### Commands ##### -.PHONY : clean help \ +.PHONY : clean clean-profile help \ debug profile release \ cl-debug cl-profile cl-release \ sv-debug sv-profile sv-release \ @@ -298,24 +299,36 @@ EXE_WINSDLNEXUIZ=nexuiz-sdl.exe help: @echo @echo "===== Choose one =====" - @echo "* $(MAKE) clean : delete all files produced by the build" - @echo "* $(MAKE) help : this help" - @echo "* $(MAKE) debug : make client and server binaries (debug versions)" - @echo "* $(MAKE) profile : make client and server binaries (profile versions)" - @echo "* $(MAKE) release : make client and server binaries (release versions)" - @echo "* $(MAKE) nexuiz : make client and server binaries with nexuiz icon (release versions)" - @echo "* $(MAKE) cl-debug : make client (debug version)" - @echo "* $(MAKE) cl-profile : make client (profile version)" - @echo "* $(MAKE) cl-release : make client (release version)" - @echo "* $(MAKE) cl-nexuiz : make client with nexuiz icon (release version)" - @echo "* $(MAKE) sv-debug : make dedicated server (debug version)" - @echo "* $(MAKE) sv-profile : make dedicated server (profile version)" - @echo "* $(MAKE) sv-release : make dedicated server (release version)" - @echo "* $(MAKE) sv-nexuiz : make dedicated server with nexuiz icon (release version)" - @echo "* $(MAKE) sdl-debug : make SDL client (debug version)" - @echo "* $(MAKE) sdl-profile : make SDL client (profile version)" - @echo "* $(MAKE) sdl-release : make SDL client (release version)" - @echo "* $(MAKE) sdl-nexuiz : make SDL client with nexuiz icon (release version)" + @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 and server binaries (debug versions)" + @echo "* $(MAKE) profile : make client and server binaries (profile versions)" + @echo "* $(MAKE) release : make client and server binaries (release versions)" + @echo "* $(MAKE) release-profile : make client and server binaries (release versions)" + @echo " with profileing optomizations) The profiled" + @echo " version of the program must have been" + @echo " previously compiled" + @echo "* $(MAKE) nexuiz : make client and server binaries with nexuiz icon" + @echo " (release versions)" + @echo "* $(MAKE) cl-debug : make client (debug version)" + @echo "* $(MAKE) cl-profile : make client (profile version)" + @echo "* $(MAKE) cl-release : make client (release version)" + @echo "* $(MAKE) cl-release-profile : make client (release version)" + @echo "* $(MAKE) cl-nexuiz : make client with nexuiz icon (release version)" + @echo "* $(MAKE) sv-debug : make dedicated server (debug version)" + @echo "* $(MAKE) sv-profile : make dedicated server (profile version)" + @echo "* $(MAKE) sv-release : make dedicated server (release version)" + @echo "* $(MAKE) sv-release-profile : make dedicated server (release version)" + @echo "* $(MAKE) sv-nexuiz : make dedicated server with nexuiz icon" + @echo " (release version)" + @echo "* $(MAKE) sdl-debug : make SDL client (debug version)" + @echo "* $(MAKE) sdl-profile : make SDL client (profile version)" + @echo "* $(MAKE) sdl-profile-profile : make SDL client (profile version)" + @echo "* $(MAKE) sdl-release : make SDL client (release version)" + @echo "* $(MAKE) sdl-nexuiz : make SDL client with nexuiz icon (release version)" @echo debug : @@ -327,6 +340,9 @@ profile : release : $(MAKE) sv-release cl-release sdl-release +release-profile : + $(MAKE) sv-release-profile cl-release-profile sdl-release-profile + nexuiz : $(MAKE) sv-nexuiz cl-nexuiz sdl-nexuiz @@ -345,6 +361,11 @@ cl-release : DP_MAKE_TARGET=$(DP_MAKE_TARGET) DP_SOUND_API=$(DP_SOUND_API) \ EXE="$(EXE_CL)" LDFLAGS_COMMON="$(LDFLAGS_CL)" LEVEL=1 +cl-release-profile : + $(MAKE) bin-release-profile \ + DP_MAKE_TARGET=$(DP_MAKE_TARGET) DP_SOUND_API=$(DP_SOUND_API) \ + 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) \ @@ -365,6 +386,11 @@ sv-release : DP_MAKE_TARGET=$(DP_MAKE_TARGET) DP_SOUND_API=$(DP_SOUND_API) \ EXE="$(EXE_SV)" LDFLAGS_COMMON="$(LDFLAGS_SV)" LEVEL=1 +sv-release-profile : + $(MAKE) bin-release-profile \ + DP_MAKE_TARGET=$(DP_MAKE_TARGET) DP_SOUND_API=$(DP_SOUND_API) \ + 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) \ @@ -385,6 +411,11 @@ sdl-release : DP_MAKE_TARGET=$(DP_MAKE_TARGET) DP_SOUND_API=$(DP_SOUND_API) \ EXE="$(EXE_SDL)" LDFLAGS_COMMON="$(LDFLAGS_SDL)" LEVEL=1 +sdl-release-profile : + $(MAKE) bin-release-profile \ + DP_MAKE_TARGET=$(DP_MAKE_TARGET) DP_SOUND_API=$(DP_SOUND_API) \ + 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) \ @@ -418,6 +449,17 @@ bin-release : LDFLAGS="$(LDFLAGS_RELEASE) $(LDFLAGS_COMMON)" LEVEL=2 $(STRIP) $(EXE) +bin-release-profile : + $(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_PROFILE) $(OPTIM_RELEASE)"\ + LDFLAGS="$(LDFLAGS_RELEASE) $(LDFLAGS_COMMON)" LEVEL=2 + $(STRIP) $(EXE) + + snd_modplug.o: snd_modplug.c $(CHECKLEVEL2) $(DO_CC) $(CFLAGS_SND_MODPLUG) @@ -491,3 +533,8 @@ clean: -$(CMD_RM) $(EXE_SDLNEXUIZ) -$(CMD_RM) *.o -$(CMD_RM) *.d + +clean-profile: clean + -$(CMD_RM) *.gcda + -$(CMD_RM) *.gcno + -- 2.39.2