mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 19:35:51 +00:00
4e8e23f4e8
Historically, client.mk was not invoked with -jn because it would create race conditions, but that was actually mostly solved by the addition of `.NOTPARALLEL` in bug 422986, although the mechanism of adding -jn via `MOZ_MAKE_FLAGS` or `MOZ_PARALLEL_BUILD` has continued well past that. Nowadays, client.mk is only invoked by mach (it will even bail out if that's not the case) and only has one target (`build`) and no dependencies. This means we don't need to rely on `MOZ_PARALLEL_BUILD` to pass `-jn` in some cases, and can just always invoke `make -f client.mk` with `-jn`, even when we just want no parallelism, in which case we can use `-j1`. This, in turn, allows to remove the extra allow_parallel argument to `_run_make`, and only rely on `num_jobs`, and to remove some of the multiple ways the `n` in `-jn` could be set. Differential Revision: https://phabricator.services.mozilla.com/D124729
69 lines
2.0 KiB
Makefile
69 lines
2.0 KiB
Makefile
# -*- makefile -*-
|
|
# vim:set ts=8 sw=8 sts=8 noet:
|
|
# 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/.
|
|
|
|
# Defines main targets for driving the Firefox build system.
|
|
#
|
|
# This make file should not be invoked directly. Instead, use
|
|
# `mach` (likely `mach build`) for invoking the build system.
|
|
#
|
|
# Options:
|
|
# MOZ_OBJDIR - Destination object directory
|
|
# MOZ_MAKE_FLAGS - Flags to pass to $(MAKE)
|
|
#
|
|
#######################################################################
|
|
|
|
ifndef MACH
|
|
$(error client.mk must be used via `mach`. Try running \
|
|
`./mach $(firstword $(MAKECMDGOALS) $(.DEFAULT_GOAL))`)
|
|
endif
|
|
|
|
### Load mozconfig options
|
|
include $(OBJDIR)/.mozconfig-client-mk
|
|
|
|
### Set up make flags
|
|
ifdef MOZ_AUTOMATION
|
|
ifeq (4.0,$(firstword $(sort 4.0 $(MAKE_VERSION))))
|
|
MOZ_MAKE_FLAGS += --output-sync=line
|
|
endif
|
|
endif
|
|
|
|
MOZ_MAKE = $(MAKE) $(MOZ_MAKE_FLAGS) -C $(OBJDIR)
|
|
|
|
### Rules
|
|
# The default rule is build
|
|
build::
|
|
|
|
# In automation, manage an sccache daemon. The starting of the server
|
|
# needs to be in a make file so sccache inherits the jobserver.
|
|
ifdef MOZBUILD_MANAGE_SCCACHE_DAEMON
|
|
build::
|
|
# Terminate any sccache server that might still be around.
|
|
-$(MOZBUILD_MANAGE_SCCACHE_DAEMON) --stop-server > /dev/null 2>&1
|
|
# Start a new server, ensuring it gets the jobserver file descriptors
|
|
# from make (but don't use the + prefix when make -n is used, so that
|
|
# the command doesn't run in that case)
|
|
mkdir -p $(UPLOAD_PATH)
|
|
$(if $(findstring n,$(filter-out --%, $(MAKEFLAGS))),,+)env SCCACHE_LOG=sccache=debug SCCACHE_ERROR_LOG=$(UPLOAD_PATH)/sccache.log $(MOZBUILD_MANAGE_SCCACHE_DAEMON) --start-server
|
|
endif
|
|
|
|
### Build it
|
|
build::
|
|
+$(MOZ_MAKE)
|
|
|
|
ifdef MOZ_AUTOMATION
|
|
build::
|
|
+$(MOZ_MAKE) automation/build
|
|
endif
|
|
|
|
ifdef MOZBUILD_MANAGE_SCCACHE_DAEMON
|
|
build::
|
|
# Terminate sccache server. This prints sccache stats.
|
|
-$(MOZBUILD_MANAGE_SCCACHE_DAEMON) --stop-server
|
|
endif
|
|
|
|
.PHONY: \
|
|
build
|