diff options
Diffstat (limited to 'build/moz-automation.mk')
-rw-r--r-- | build/moz-automation.mk | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/build/moz-automation.mk b/build/moz-automation.mk new file mode 100644 index 0000000000..28628065e1 --- /dev/null +++ b/build/moz-automation.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/. + +ifndef ENABLE_TESTS +# We can't package tests if they aren't enabled. +MOZ_AUTOMATION_PACKAGE_TESTS = 0 +endif + +ifdef CROSS_COMPILE +# Narrow the definition of cross compilation to not include win32 builds +# on win64 and linux32 builds on linux64. +ifeq ($(HOST_OS_ARCH),$(OS_TARGET)) +ifneq (,$(filter x86%,$(CPU_ARCH))) +FUZZY_CROSS_COMPILE = +else +FUZZY_CROSS_COMPILE = 1 +endif +else +FUZZY_CROSS_COMPILE = 1 +endif +endif + +# Don't run make check when cross compiling, when doing artifact builds +# or when building instrumented builds for PGO. +ifneq (,$(USE_ARTIFACT)$(FUZZY_CROSS_COMPILE)$(MOZ_PROFILE_GENERATE)) +MOZ_AUTOMATION_CHECK := 0 +endif + +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_PACKAGE = package +tier_MOZ_AUTOMATION_PACKAGE_TESTS = package-tests +tier_MOZ_AUTOMATION_PACKAGE_GENERATED_SOURCES = package-generated-sources +tier_MOZ_AUTOMATION_UPLOAD_SYMBOLS = uploadsymbols +tier_MOZ_AUTOMATION_UPLOAD = upload +tier_MOZ_AUTOMATION_CHECK = check + +# 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_UPLOAD \ + $(NULL) + +ifneq (,$(COMPILE_ENVIRONMENT)$(MOZ_ARTIFACT_BUILDS)) +moz_automation_symbols += \ + MOZ_AUTOMATION_BUILD_SYMBOLS \ + MOZ_AUTOMATION_UPLOAD_SYMBOLS \ + MOZ_AUTOMATION_PACKAGE \ + MOZ_AUTOMATION_PACKAGE_GENERATED_SOURCES \ + MOZ_AUTOMATION_CHECK \ + $(NULL) +endif +MOZ_AUTOMATION_TIERS := $(foreach sym,$(moz_automation_symbols),$(if $(filter 1,$($(sym))),$(tier_$(sym)))) + +# Dependencies between automation build steps +automation-start/uploadsymbols: automation/buildsymbols + +automation-start/upload: automation/package +automation-start/upload: automation/package-tests +automation-start/upload: automation/buildsymbols +automation-start/upload: automation/package-generated-sources + +# Run the check tier after everything else. +automation-start/check: $(addprefix automation/,$(filter-out check,$(MOZ_AUTOMATION_TIERS))) + +automation/build: $(addprefix automation/,$(MOZ_AUTOMATION_TIERS)) + @echo Automation steps completed. + +# Run as many tests as possible, even in case of one of them failing. +AUTOMATION_EXTRA_CMDLINE-check = --keep-going + +# 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 +@+$(PYTHON3) $(topsrcdir)/config/run-and-prefix.py $1 $(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,$*)) |