From: Junio C Hamano Date: Tue, 21 Feb 2012 22:56:06 +0000 (-0800) Subject: Merge branch 'tt/profile-build-fix' into maint X-Git-Tag: v1.7.9.2~15 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/655c3ed58bb60f825be52f8a513e8a2027568af4?hp=-c Merge branch 'tt/profile-build-fix' into maint * tt/profile-build-fix: Makefile: fix syntax for older make Fix build problems related to profile-directed optimization --- 655c3ed58bb60f825be52f8a513e8a2027568af4 diff --combined Makefile index 4ff3faa472,4deda38c50..3815f66c41 --- a/Makefile +++ b/Makefile @@@ -339,7 -339,7 +339,7 @@@ pathsep = export prefix bindir sharedir sysconfdir gitwebdir localedir -CC = gcc +CC = cc AR = ar RM = rm -f DIFF = diff @@@ -452,9 -452,6 +452,9 @@@ PROGRAM_OBJS += http-backend. PROGRAM_OBJS += sh-i18n--envsubst.o PROGRAM_OBJS += credential-store.o +# Binary suffix, set to .exe for Windows builds +X = + PROGRAMS += $(patsubst %.o,git-%$X,$(PROGRAM_OBJS)) TEST_PROGRAMS_NEED_X += test-chmtime @@@ -1771,6 -1768,26 +1771,26 @@@ ifdef ASCIIDOC export ASCIIDOC7 endif + ### profile feedback build + # + + # Can adjust this to be a global directory if you want to do extended + # data gathering + PROFILE_DIR := $(CURDIR) + + ifeq ("$(PROFILE)","GEN") + CFLAGS += -fprofile-generate=$(PROFILE_DIR) -DNO_NORETURN=1 + EXTLIBS += -lgcov + export CCACHE_DISABLE=t + V=1 + else + ifneq ("$(PROFILE)","") + CFLAGS += -fprofile-use=$(PROFILE_DIR) -fprofile-correction -DNO_NORETURN=1 + export CCACHE_DISABLE=t + V=1 + endif + endif + # Shell quote (do not use $(call) to accommodate ancient setups); SHA1_HEADER_SQ = $(subst ','\'',$(SHA1_HEADER)) @@@ -1827,7 -1844,17 +1847,17 @@@ export DIFF TAR INSTALL DESTDIR SHELL_P SHELL = $(SHELL_PATH) - all:: shell_compatibility_test $(ALL_PROGRAMS) $(SCRIPT_LIB) $(BUILT_INS) $(OTHER_PROGRAMS) GIT-BUILD-OPTIONS + all:: shell_compatibility_test + + ifeq "$(PROFILE)" "BUILD" + ifeq ($(filter all,$(MAKECMDGOALS)),all) + all:: profile-clean + $(MAKE) PROFILE=GEN all + $(MAKE) PROFILE=GEN -j1 test + endif + endif + + all:: $(ALL_PROGRAMS) $(SCRIPT_LIB) $(BUILT_INS) $(OTHER_PROGRAMS) GIT-BUILD-OPTIONS ifneq (,$X) $(QUIET_BUILT_IN)$(foreach p,$(patsubst %$X,%,$(filter %$X,$(ALL_PROGRAMS) $(BUILT_INS) git$X)), test -d '$p' -o '$p' -ef '$p$X' || $(RM) '$p';) endif @@@ -2555,7 -2582,11 +2585,11 @@@ distclean: clea $(RM) configure $(RM) po/git.pot - clean: + profile-clean: + $(RM) $(addsuffix *.gcda,$(addprefix $(PROFILE_DIR)/, $(object_dirs))) + $(RM) $(addsuffix *.gcno,$(addprefix $(PROFILE_DIR)/, $(object_dirs))) + + clean: profile-clean $(RM) *.o block-sha1/*.o ppc/*.o compat/*.o compat/*/*.o xdiff/*.o vcs-svn/*.o \ builtin/*.o $(LIB_FILE) $(XDIFF_LIB) $(VCSSVN_LIB) $(RM) $(ALL_PROGRAMS) $(SCRIPT_LIB) $(BUILT_INS) git$X @@@ -2585,7 -2616,7 +2619,7 @@@ ifndef NO_TCLT endif $(RM) GIT-VERSION-FILE GIT-CFLAGS GIT-LDFLAGS GIT-GUI-VARS GIT-BUILD-OPTIONS - .PHONY: all install clean strip + .PHONY: all install profile-clean clean strip .PHONY: shell_compatibility_test please_set_SHELL_PATH_to_a_more_modern_shell .PHONY: FORCE cscope @@@ -2695,18 -2726,3 +2729,3 @@@ cover_db: coverage-repor cover_db_html: cover_db cover -report html -outputdir cover_db_html cover_db - ### profile feedback build - # - .PHONY: profile-all profile-clean - - PROFILE_GEN_CFLAGS := $(CFLAGS) -fprofile-generate -DNO_NORETURN=1 - PROFILE_USE_CFLAGS := $(CFLAGS) -fprofile-use -fprofile-correction -DNO_NORETURN=1 - - profile-clean: - $(RM) $(addsuffix *.gcda,$(object_dirs)) - $(RM) $(addsuffix *.gcno,$(object_dirs)) - - profile-all: profile-clean - $(MAKE) CFLAGS="$(PROFILE_GEN_CFLAGS)" all - $(MAKE) CFLAGS="$(PROFILE_GEN_CFLAGS)" -j1 test - $(MAKE) CFLAGS="$(PROFILE_USE_CFLAGS)" all