diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | 5f8de423f190bbb79a62f804151bc24824fa32d8 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /config/faster/rules.mk | |
parent | 49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff) | |
download | UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip |
Add m-esr52 at 52.6.0
Diffstat (limited to 'config/faster/rules.mk')
-rw-r--r-- | config/faster/rules.mk | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/config/faster/rules.mk b/config/faster/rules.mk new file mode 100644 index 000000000..9d7b322fa --- /dev/null +++ b/config/faster/rules.mk @@ -0,0 +1,110 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +# /!\ Please make sure to update the following comment when you touch this +# file. Thank you /!\ + +# The traditional Mozilla build system relied on going through the entire +# build tree a number of times with different targets, and many of the +# things happening at each step required other things happening in previous +# steps without any documentation of those dependencies. +# +# This new build system tries to start afresh by establishing what files or +# operations are needed for the build, and applying the necessary rules to +# have those in place, relying on make dependencies to get them going. +# +# As of writing, only building non-compiled parts of Firefox is supported +# here (a few other things are also left out). This is a starting point, with +# the intent to grow this build system to make it more complete. +# +# This file contains rules and dependencies to get things working. The intent +# is for a Makefile to define some dependencies and variables, and include +# this file. What needs to be defined there, and ends up being generated by +# python/mozbuild/mozbuild/backend/fastermake.py is the following: +# - TOPSRCDIR/TOPOBJDIR, respectively the top source directory and the top +# object directory +# - PYTHON, the path to the python executable +# - ACDEFINES, which contains a set of -Dvar=name to be used during +# preprocessing +# - INSTALL_MANIFESTS, which defines the list of base directories handled +# by install manifests, see further below +# +# A convention used between this file and the Makefile including it is that +# global Make variables names are uppercase, while "local" Make variables +# applied to specific targets are lowercase. + +# Targets to be triggered for a default build +default: $(addprefix install-,$(INSTALL_MANIFESTS)) + +ifndef NO_XPIDL +# Targets from the recursive make backend to be built for a default build +default: $(TOPOBJDIR)/config/makefiles/xpidl/xpidl +endif + +# Mac builds require to copy things in dist/bin/*.app +# TODO: remove the MOZ_WIDGET_TOOLKIT and MOZ_BUILD_APP variables from +# faster/Makefile and python/mozbuild/mozbuild/test/backend/test_build.py +# when this is not required anymore. +# We however don't need to do this when using the hybrid +# FasterMake/RecursiveMake backend (FASTER_RECURSIVE_MAKE is set when +# recursing from the RecursiveMake backend) +ifndef FASTER_RECURSIVE_MAKE +ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT)) +default: + $(MAKE) -C $(TOPOBJDIR)/$(MOZ_BUILD_APP)/app repackage +endif +endif + +.PHONY: FORCE + +# Extra define to trigger some workarounds. We should strive to limit the +# use of those. As of writing the only ones are in +# toolkit/content/buildconfig.html and browser/locales/jar.mn. +ACDEFINES += -DBUILD_FASTER + +# Files under the faster/ sub-directory, however, are not meant to use the +# fallback +$(TOPOBJDIR)/faster/%: ; + +# Generic rule to fall back to the recursive make backend. +# This needs to stay after other $(TOPOBJDIR)/* rules because GNU Make +# <3.82 apply pattern rules in definition order, not stem length like +# modern GNU Make. +$(TOPOBJDIR)/%: FORCE + $(MAKE) -C $(dir $@) $(notdir $@) + +# Install files using install manifests +# +# The list of base directories is given in INSTALL_MANIFESTS. The +# corresponding install manifests are named correspondingly, with forward +# slashes replaced with underscores, and prefixed with `install_`. That is, +# the install manifest for `dist/bin` would be `install_dist_bin`. +$(addprefix install-,$(INSTALL_MANIFESTS)): install-%: $(addprefix $(TOPOBJDIR)/,buildid.h source-repo.h) + @# For now, force preprocessed files to be reprocessed every time. + @# The overhead is not that big, and this avoids waiting for proper + @# support for defines tracking in process_install_manifest. + @touch install_$(subst /,_,$*) + @# BOOKMARKS_INCLUDE_DIR is for bookmarks.html only. + $(PYTHON) -m mozbuild.action.process_install_manifest \ + --track install_$(subst /,_,$*).track \ + $(TOPOBJDIR)/$* \ + -DAB_CD=en-US \ + -DBOOKMARKS_INCLUDE_DIR=$(TOPSRCDIR)/browser/locales/en-US/profile \ + $(ACDEFINES) \ + install_$(subst /,_,$*) + +# ============================================================================ +# Below is a set of additional dependencies and variables used to build things +# that are not supported by data in moz.build. + +# The xpidl target in config/makefiles/xpidl requires the install manifest for +# dist/idl to have been processed. When using the hybrid +# FasterMake/RecursiveMake backend, this dependency is handled in the top-level +# Makefile. +ifndef FASTER_RECURSIVE_MAKE +$(TOPOBJDIR)/config/makefiles/xpidl/xpidl: $(TOPOBJDIR)/install-dist_idl +endif +# It also requires all the install manifests for dist/bin to have been processed +# because it adds interfaces.manifest references with buildlist.py. +$(TOPOBJDIR)/config/makefiles/xpidl/xpidl: $(addprefix install-,$(filter dist/bin%,$(INSTALL_MANIFESTS))) |