Skip to content

Commit

Permalink
Bug 1412932 - Switch to PGO build in Makefile.in; r=ted
Browse files Browse the repository at this point in the history
Previously, client.mk made the decision of whether to perform a PGO
build. This required passing around MOZ_PGO and invoking a separate
make target if this variable was set.

In this commit, we move this logic to Makefile.in. We employ a special
mechanism in rules.mk to override the default make target so
`make` evaluates "profiledbuild" if MOZ_PGO is set. This also
required using an explicit target for $(MAKE) invocations inside
the "profiledbuild" rule to avoid infinite recursion.

MozReview-Commit-ID: 8sHiVspMisM

--HG--
extra : rebase_source : 76c8a0c592015802f2b9ad52fe2001012a4611f6
extra : source : 24e28b37fbc0ad55ee449699e09c62042af41b55
  • Loading branch information
indygreg committed Nov 8, 2017
1 parent b95c150 commit 9e26b9f
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 9 deletions.
11 changes: 8 additions & 3 deletions Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -226,22 +226,27 @@ default all::
profiledbuild::
$(call BUILDSTATUS,TIERS pgo_profile_generate pgo_package pgo_profile pgo_clobber pgo_profile_use)
$(call BUILDSTATUS,TIER_START pgo_profile_generate)
$(MAKE) MOZ_PROFILE_GENERATE=1 MOZ_PGO_INSTRUMENTED=1
$(MAKE) default MOZ_PROFILE_GENERATE=1 MOZ_PGO_INSTRUMENTED=1
$(call BUILDSTATUS,TIER_FINISH pgo_profile_generate)
$(call BUILDSTATUS,TIER_START pgo_package)
$(MAKE) package MOZ_PGO_INSTRUMENTED=1 MOZ_INTERNAL_SIGNING_FORMAT= MOZ_EXTERNAL_SIGNING_FORMAT=
rm -f jarlog/en-US.log
$(call BUILDSTATUS,TIER_FINISH pgo_package)
$(call BUILDSTATUS,TIER_START pgo_profile)
MOZ_PGO_INSTRUMENTED=1 JARLOG_FILE=jarlog/en-US.log EXTRA_TEST_ARGS=10 $(MAKE) pgo-profile-run
$(MAKE) pgo-profile-run MOZ_PGO_INSTRUMENTED=1 JARLOG_FILE=jarlog/en-US.log EXTRA_TEST_ARGS=10
$(call BUILDSTATUS,TIER_FINISH pgo_profile)
$(call BUILDSTATUS,TIER_START pgo_clobber)
$(MAKE) maybe_clobber_profiledbuild
$(call BUILDSTATUS,TIER_FINISH pgo_clobber)
$(call BUILDSTATUS,TIER_START pgo_profile_use)
$(MAKE) MOZ_PROFILE_USE=1
$(MAKE) default MOZ_PROFILE_USE=1
$(call BUILDSTATUS,TIER_FINISH pgo_profile_use)

# Change default target to PGO build if PGO is enabled.
ifdef MOZ_PGO
OVERRIDE_DEFAULT_GOAL := profiledbuild
endif

include $(topsrcdir)/config/rules.mk

ifdef SCCACHE_VERBOSE_STATS
Expand Down
8 changes: 2 additions & 6 deletions client.mk
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,7 @@ endef
# before evaluation. $(shell) replacing newlines with spaces, || is always
# followed by a space (since sed doesn't remove newlines), except on the
# last line, so replace both '|| ' and '||'.
# Also, make MOZ_PGO available to mozconfig when passed on make command line.
MOZCONFIG_CONTENT := $(subst ||,$(CR),$(subst || ,$(CR),$(shell MOZ_PGO=$(MOZ_PGO) $(TOPSRCDIR)/mach environment --format=client.mk | sed 's/$$/||/')))
MOZCONFIG_CONTENT := $(subst ||,$(CR),$(subst || ,$(CR),$(shell $(TOPSRCDIR)/mach environment --format=client.mk | sed 's/$$/||/')))
$(eval $(MOZCONFIG_CONTENT))

export FOUND_MOZCONFIG
Expand All @@ -104,9 +103,6 @@ MOZCONFIG_OUT_FILTERED := $(filter-out $(START_COMMENT)%,$(MOZCONFIG_OUT_LINES))
ifdef AUTOCLOBBER
export AUTOCLOBBER=1
endif
ifdef MOZ_PGO
export MOZ_PGO
endif

ifdef MOZ_PARALLEL_BUILD
MOZ_MAKE_FLAGS := $(filter-out -j%,$(MOZ_MAKE_FLAGS))
Expand Down Expand Up @@ -290,7 +286,7 @@ endif
# Build it

build:: $(OBJDIR)/Makefile $(OBJDIR)/config.status
+$(MOZ_MAKE) $(if $(MOZ_PGO),profiledbuild)
+$(MOZ_MAKE)

####################################
# Other targets
Expand Down
1 change: 1 addition & 0 deletions python/mozbuild/mozbuild/test/backend/test_build.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ def setUp(self):
self._old_env = dict(os.environ)
os.environ.pop('MOZCONFIG', None)
os.environ.pop('MOZ_OBJDIR', None)
os.environ.pop('MOZ_PGO', None)

def tearDown(self):
os.environ.clear()
Expand Down

0 comments on commit 9e26b9f

Please sign in to comment.