The configure.in is a small wrapper around python configure, that is
still a m4 script so that people running autoconf manually can still
do so without breaking their stuff (and we have jobs that do that
on automation as well).
But considering how simple the m4 is, to avoid having the autoconf
checking code twice (once in client.mk and once in
build/moz.configure/old.configure), we can just process it with sed
instead of autoconf.
This will enable each PGO phase to show up in mach's resource reporting,
making it easier to compare PGO runtime across machines. This does
confuse the rendering of `mach resource-usage` a bit since it doesn't
know how to handle overlapping tiers. But the raw data is captured as
expected. I don't think `mach resource-usage` is that heavily used right
now, so I don't care about a minor regression for PGO builds.
MozReview-Commit-ID: HalvEwITmif
--HG--
extra : rebase_source : 5c27c6bda814cd61c0da792d9336980dc4f530a9
The way UPLOAD_EXTRA_FILES is currently exported makes the files added
to the list added in each directory that is being traversed recursively
because of the += in .mozconfig.mk, combined with "export".
The easy way out is to remove the export altogether, but being unsure of
the side effects of putting all non exported mk_add_options variables
in .mozconfig.mk, limit this to UPLOAD_EXTRA_FILES.
This adds a format option to mach environment and uses it in client.mk to
create a .mozconfig.json in the objdir, containing all the relevant data
from mozconfig. If the mozconfig doesn't change in a way that alters that
data, we still skip configure.
At the same time, use mach environment in place of mozconfig2configure and
mozconfig2client-mk, which makes us now have only one mozconfig reader.
Also, in the mozconfig reader, keep track of environment variables (as
opposed to shell variables), so that changes such as a variable that was
exported not being exported anymore is spotted. At the opposite, in order
for irrelevant environment variable changes not to incur in re-running
configure, only a set of environment variables are stored when they are
unmodified. Otherwise, changes such as using a different terminal window,
or even rebooting, would trigger reconfigures.
Finally, make mach environment emit both MOZ_OBJDIR and OBJDIR for
client.mk, and cleanup some objdir-related things in client.mk..
At the same time, make the mozconfig reader take MOZ_OBJDIR from the
environment if it is defined there and not in the mozconfig.
To avoid surprises for devs building locally, auto clobbering is now opt-in, via
the use of |mk_add_options AUTOCLOBBER=1| in the mozconfig. Our automation uses
build/mozconfig.common which specifies this, so auto clobber will remain enabled
for our buildbot machines.