summaryrefslogtreecommitdiffstats
path: root/build/moz-automation.mk
diff options
context:
space:
mode:
Diffstat (limited to 'build/moz-automation.mk')
-rw-r--r--build/moz-automation.mk122
1 files changed, 122 insertions, 0 deletions
diff --git a/build/moz-automation.mk b/build/moz-automation.mk
new file mode 100644
index 000000000..e7fa16fcb
--- /dev/null
+++ b/build/moz-automation.mk
@@ -0,0 +1,122 @@
+#
+# 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/.
+
+ifneq (,$(filter automation/%,$(MAKECMDGOALS)))
+ifeq (4.0,$(firstword $(sort 4.0 $(MAKE_VERSION))))
+MAKEFLAGS += --output-sync=target
+else
+.NOTPARALLEL:
+endif
+endif
+
+ifndef JS_STANDALONE
+include $(topsrcdir)/toolkit/mozapps/installer/package-name.mk
+include $(topsrcdir)/toolkit/mozapps/installer/upload-files.mk
+
+# Clear out DIST_FILES if it was set by upload-files.mk (for Android builds)
+DIST_FILES =
+endif
+
+# Helper variables to convert from MOZ_AUTOMATION_* variables to the
+# corresponding the make target
+tier_MOZ_AUTOMATION_BUILD_SYMBOLS = buildsymbols
+tier_MOZ_AUTOMATION_L10N_CHECK = l10n-check
+tier_MOZ_AUTOMATION_PRETTY_L10N_CHECK = pretty-l10n-check
+tier_MOZ_AUTOMATION_INSTALLER = installer
+tier_MOZ_AUTOMATION_PRETTY_INSTALLER = pretty-installer
+tier_MOZ_AUTOMATION_PACKAGE = package
+tier_MOZ_AUTOMATION_PRETTY_PACKAGE = pretty-package
+tier_MOZ_AUTOMATION_PACKAGE_TESTS = package-tests
+tier_MOZ_AUTOMATION_PRETTY_PACKAGE_TESTS = pretty-package-tests
+tier_MOZ_AUTOMATION_UPDATE_PACKAGING = update-packaging
+tier_MOZ_AUTOMATION_PRETTY_UPDATE_PACKAGING = pretty-update-packaging
+tier_MOZ_AUTOMATION_UPLOAD_SYMBOLS = uploadsymbols
+tier_MOZ_AUTOMATION_UPLOAD = upload
+tier_MOZ_AUTOMATION_SDK = sdk
+
+# Automation build steps. Everything in MOZ_AUTOMATION_TIERS also gets used in
+# TIERS for mach display. As such, the MOZ_AUTOMATION_TIERS are roughly sorted
+# here in the order that they will be executed (since mach doesn't know of the
+# dependencies between them).
+moz_automation_symbols = \
+ MOZ_AUTOMATION_PACKAGE_TESTS \
+ MOZ_AUTOMATION_PRETTY_PACKAGE_TESTS \
+ MOZ_AUTOMATION_BUILD_SYMBOLS \
+ MOZ_AUTOMATION_UPLOAD_SYMBOLS \
+ MOZ_AUTOMATION_PACKAGE \
+ MOZ_AUTOMATION_PRETTY_PACKAGE \
+ MOZ_AUTOMATION_INSTALLER \
+ MOZ_AUTOMATION_PRETTY_INSTALLER \
+ MOZ_AUTOMATION_UPDATE_PACKAGING \
+ MOZ_AUTOMATION_PRETTY_UPDATE_PACKAGING \
+ MOZ_AUTOMATION_L10N_CHECK \
+ MOZ_AUTOMATION_PRETTY_L10N_CHECK \
+ MOZ_AUTOMATION_UPLOAD \
+ MOZ_AUTOMATION_SDK \
+ $(NULL)
+MOZ_AUTOMATION_TIERS := $(foreach sym,$(moz_automation_symbols),$(if $(filter 1,$($(sym))),$(tier_$(sym))))
+
+# Dependencies between automation build steps
+automation/uploadsymbols: automation/buildsymbols
+
+automation/update-packaging: automation/package
+automation/update-packaging: automation/installer
+automation/pretty-update-packaging: automation/pretty-package
+automation/pretty-update-packaging: automation/pretty-installer
+
+automation/l10n-check: automation/package
+automation/l10n-check: automation/installer
+automation/pretty-l10n-check: automation/pretty-package
+automation/pretty-l10n-check: automation/pretty-installer
+
+automation/upload: automation/installer
+automation/upload: automation/package
+automation/upload: automation/package-tests
+automation/upload: automation/buildsymbols
+automation/upload: automation/update-packaging
+automation/upload: automation/sdk
+
+# automation/{pretty-}package should depend on build (which is implicit due to
+# the way client.mk invokes automation/build), but buildsymbols changes the
+# binaries/libs, and that's what we package/test.
+automation/pretty-package: automation/buildsymbols
+
+# The installer, sdk and packager all run stage-package, and may conflict
+# with each other.
+automation/installer: automation/package
+automation/sdk: automation/installer automation/package
+
+# The 'pretty' versions of targets run before the regular ones to avoid
+# conflicts in writing to the same files.
+automation/installer: automation/pretty-installer
+automation/package: automation/pretty-package
+automation/package-tests: automation/pretty-package-tests
+automation/l10n-check: automation/pretty-l10n-check
+automation/update-packaging: automation/pretty-update-packaging
+
+automation/build: $(addprefix automation/,$(MOZ_AUTOMATION_TIERS))
+ @echo Automation steps completed.
+
+# Note: We have to force -j1 here, at least until bug 1036563 is fixed.
+AUTOMATION_EXTRA_CMDLINE-l10n-check = -j1
+AUTOMATION_EXTRA_CMDLINE-pretty-l10n-check = -j1
+
+# The commands only run if the corresponding MOZ_AUTOMATION_* variable is
+# enabled. This means, for example, if we enable MOZ_AUTOMATION_UPLOAD, then
+# 'buildsymbols' will only run if MOZ_AUTOMATION_BUILD_SYMBOLS is also set.
+# However, the target automation/buildsymbols will still be executed in this
+# case because it is a prerequisite of automation/upload.
+define automation_commands
+@+$(MAKE) $1 $(AUTOMATION_EXTRA_CMDLINE-$1)
+$(call BUILDSTATUS,TIER_FINISH $1)
+endef
+
+# The tier start message is in a separate target so make doesn't buffer it
+# until the step completes with output syncing enabled.
+automation-start/%:
+ $(if $(filter $*,$(MOZ_AUTOMATION_TIERS)),$(call BUILDSTATUS,TIER_START $*))
+
+automation/%: automation-start/%
+ $(if $(filter $*,$(MOZ_AUTOMATION_TIERS)),$(call automation_commands,$*))