mirror of
https://github.com/mozilla-firefox/firefox
synced 2026-08-10 11:48:50 +00:00
172 lines
5.3 KiB
Makefile
172 lines
5.3 KiB
Makefile
#
|
|
# 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/.
|
|
|
|
export TOPLEVEL_BUILD := 1
|
|
|
|
default::
|
|
|
|
ifndef TEST_MOZBUILD
|
|
ifdef MOZ_BUILD_APP
|
|
include $(wildcard $(topsrcdir)/$(MOZ_BUILD_APP)/build.mk)
|
|
endif
|
|
endif
|
|
|
|
include $(topsrcdir)/config/config.mk
|
|
|
|
ifneq (mobile/android,$(MOZ_BUILD_APP))
|
|
# We only want to generate buildid.h once, during the (recurse) export phase.
|
|
# faster make build the files explicitly so also match thoses
|
|
ifneq ($(filter $(MAKECMDGOALS),recurse_export buildid.h source-repo.h),)
|
|
$(MDDEPDIR)/buildid.h.stub $(MDDEPDIR)/source-repo.h.stub: FORCE
|
|
endif
|
|
endif
|
|
source-repo.h: $(MDDEPDIR)/source-repo.h.stub
|
|
buildid.h: $(MDDEPDIR)/buildid.h.stub
|
|
|
|
BUILD_BACKEND_FILES := $(addprefix backend.,$(addsuffix Backend,$(BUILD_BACKENDS)))
|
|
|
|
ifndef TEST_MOZBUILD
|
|
# We need to explicitly put BUILD_BACKEND_FILES here otherwise the rule in
|
|
# rules.mk doesn't run early enough.
|
|
$(RUNNABLE_TIERS) binaries:: CLOBBER $(BUILD_BACKEND_FILES)
|
|
endif
|
|
|
|
ifdef JS_STANDALONE
|
|
.PHONY: CLOBBER
|
|
CLOBBER:
|
|
else
|
|
CLOBBER: $(topsrcdir)/CLOBBER
|
|
@echo 'STOP! The CLOBBER file has changed.'
|
|
@echo 'Please run the build through "mach build".'
|
|
@exit 1
|
|
endif
|
|
|
|
# Consumed by backend-emitted install manifest rules.
|
|
install_manifest_depends = \
|
|
CLOBBER \
|
|
$(BUILD_BACKEND_FILES) \
|
|
$(NULL)
|
|
|
|
include $(topsrcdir)/build/moz-automation.mk
|
|
|
|
# Dummy rule for the cases below where we don't depend on dist/include
|
|
recurse_pre-export:
|
|
|
|
# For the binaries rule, not all the install manifests matter, so force only
|
|
# the interesting ones to be done.
|
|
recurse_pre-export: install-manifests
|
|
binaries::
|
|
@$(MAKE) install-manifests-binaries
|
|
|
|
ifdef BUILD_VERBOSE_LOG
|
|
verbose_flag = -v
|
|
endif
|
|
|
|
recurse_artifact:
|
|
$(PYTHON3) $(topsrcdir)/mach --log-no-times artifact install$(if $(MOZ_ARTIFACT_BUILD_SYMBOLS), --symbols$(addprefix =,$(filter full,$(MOZ_ARTIFACT_BUILD_SYMBOLS)))) $(if $(ENABLE_TESTS),,--no-tests) $(verbose_flag)
|
|
|
|
ifdef MOZ_ANDROID_FAT_AAR_ARCHITECTURES
|
|
recurse_android-fat-aar-artifact:
|
|
$(call py_action,fat_aar,$(MOZ_ANDROID_FAT_AAR_ARCHITECTURES) \
|
|
$(if $(MOZ_ANDROID_FAT_AAR_ARMEABI_V7A),--armeabi-v7a $(MOZ_ANDROID_FAT_AAR_ARMEABI_V7A)) \
|
|
$(if $(MOZ_ANDROID_FAT_AAR_ARM64_V8A),--arm64-v8a $(MOZ_ANDROID_FAT_AAR_ARM64_V8A)) \
|
|
$(if $(MOZ_ANDROID_FAT_AAR_X86_64),--x86-64 $(MOZ_ANDROID_FAT_AAR_X86_64)) \
|
|
--distdir $(abspath $(DIST)/fat-aar))
|
|
endif
|
|
|
|
ifeq ($(MOZ_BUILD_APP),mobile/android)
|
|
|
|
recurse_android-stage-package: stage-package
|
|
|
|
recurse_android-archive-geckoview:
|
|
GRADLE_INVOKED_WITHIN_MACH_BUILD=1 $(PYTHON3) $(topsrcdir)/mach --log-no-times android archive-geckoview $(if $(MOZ_AUTOMATION),--no-configuration-cache)
|
|
endif
|
|
|
|
ifdef MOZ_WIDGET_TOOLKIT
|
|
ifdef ENABLE_TESTS
|
|
# Additional makefile targets to call automated test suites
|
|
include $(topsrcdir)/testing/testsuite-targets.mk
|
|
endif
|
|
endif
|
|
|
|
default all::
|
|
$(call BUILDSTATUS,TIERS $(TIERS) $(if $(MOZ_AUTOMATION),$(MOZ_AUTOMATION_TIERS)))
|
|
|
|
include $(topsrcdir)/config/rules.mk
|
|
|
|
ifdef SCCACHE_VERBOSE_STATS
|
|
default::
|
|
-$(CCACHE) --show-adv-stats --stats-format=json > '$(UPLOAD_PATH)/sccache-stats.json'
|
|
@echo "===SCCACHE STATS==="
|
|
-$(CCACHE) --show-adv-stats
|
|
@echo "==================="
|
|
endif
|
|
|
|
ifdef MOZ_CRASHREPORTER
|
|
include $(topsrcdir)/toolkit/mozapps/installer/package-name.mk
|
|
|
|
endif
|
|
|
|
.PHONY: prepsymbolsarchive
|
|
prepsymbolsarchive:
|
|
echo packing symbols
|
|
$(NSINSTALL) -D $(DIST)/$(PKG_PATH)
|
|
|
|
ifndef MOZ_AUTOMATION
|
|
prepsymbolsarchive: recurse_syms
|
|
endif
|
|
|
|
.PHONY: symbolsfullarchive
|
|
symbolsfullarchive: prepsymbolsarchive
|
|
$(RM) '$(DIST)/$(PKG_PATH)$(SYMBOL_FULL_ARCHIVE_BASENAME).tar.zst'
|
|
$(call py_action,symbols_archive $(SYMBOL_FULL_ARCHIVE_BASENAME).tar.zst,'$(DIST)/$(PKG_PATH)$(SYMBOL_FULL_ARCHIVE_BASENAME).tar.zst' \
|
|
$(abspath $(DIST)/crashreporter-symbols) \
|
|
--full-archive)
|
|
|
|
.PHONY: symbolsarchive
|
|
symbolsarchive: prepsymbolsarchive
|
|
$(RM) '$(DIST)/$(PKG_PATH)$(SYMBOL_ARCHIVE_BASENAME).zip'
|
|
$(call py_action,symbols_archive $(SYMBOL_ARCHIVE_BASENAME).zip,'$(DIST)/$(PKG_PATH)$(SYMBOL_ARCHIVE_BASENAME).zip' \
|
|
$(abspath $(DIST)/crashreporter-symbols))
|
|
|
|
# Set MOZ_ENABLE_FULL_SYMBOLS to enable generation and upload of the full
|
|
# crashreporter symbols archives
|
|
ifdef MOZ_ENABLE_FULL_SYMBOLS
|
|
buildsymbols: symbolsfullarchive symbolsarchive
|
|
else
|
|
ifdef MOZ_CRASHREPORTER
|
|
buildsymbols: symbolsarchive
|
|
else
|
|
buildsymbols:
|
|
@echo "Skipping symbols generation because MOZ_CRASHREPORTER is not set."
|
|
endif # MOZ_CRASHREPORTER
|
|
endif # MOZ_ENABLE_FULL_SYMBOLS
|
|
|
|
uploadsymbols:
|
|
ifdef MOZ_ENABLE_FULL_SYMBOLS
|
|
$(PYTHON3) -u $(topsrcdir)/toolkit/crashreporter/tools/upload_symbols.py '$(DIST)/$(PKG_PATH)$(SYMBOL_FULL_ARCHIVE_BASENAME).tar.zst'
|
|
endif
|
|
|
|
.PHONY: package-generated-sources
|
|
package-generated-sources:
|
|
$(call py_action,package_generated_sources,'$(DIST)/$(PKG_PATH)$(GENERATED_SOURCE_FILE_PACKAGE)')
|
|
|
|
ifdef JS_STANDALONE
|
|
# Delegate js-specific rules to js
|
|
check-%:
|
|
$(MAKE) -C js/src $@
|
|
|
|
install:
|
|
$(MAKE) -C js/src $@
|
|
|
|
# Every export rule depends on config/export, but the rule for config/export
|
|
# doesn't exist when building js non-standalone.
|
|
.PHONY: config/export
|
|
config/export:
|
|
|
|
endif
|
|
|
|
# There used to be build interdependencies here. They are now in config/recurse.mk
|