mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-14 02:31:59 +00:00
1340edfe51
A new build tier is introduced: precompile. The intention is to replace the export subtier with something better and nonrecursive. IPDL and WebIDL code generation have been moved into this new tier and are performed concurrently. This appears to reduce build times due to fewer "single threaded" build actions. The subtier tracking UI has been updated to reflect operations that can occur in parallel. As subtiers are started, they turn yellow. They can then complete in any order. Nonrecursive targets have been added to preserve the IPDL and WebIDL build targets such that developers can type |make| from leaf directories like they have always done.
69 lines
2.4 KiB
Makefile
69 lines
2.4 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/.
|
|
|
|
# The purpose of this file is to pull in non-recursive targets when performing
|
|
# a partial tree (not top-level) build. This will allow people to continue to
|
|
# build individual directories while some of the targets may not be normally
|
|
# defined in that make file.
|
|
#
|
|
# Non-recursive targets are attached to existing make targets. The
|
|
# NONRECURSIVE_TARGETS variable lists the make targets that modified. For
|
|
# each target in this list, the NONRECURSIVE_TARGET_<target> variable will
|
|
# contain a list of partial variable names. We will then look in variables
|
|
# named NONRECURSIVE_TARGETS_<target>_<fragment>_* for information describing
|
|
# how to evaluate non-recursive make targets.
|
|
#
|
|
# Targets are defined by the following variables:
|
|
#
|
|
# FILE - The make file to evaluate. This is equivalent to
|
|
# |make -f <FILE>|
|
|
# DIRECTORY - The directory whose Makefile to evaluate. This is
|
|
# equivalent to |make -C <DIRECTORY>|.
|
|
# TARGETS - Targets to evaluate in that make file.
|
|
#
|
|
# Only 1 of FILE or DIRECTORY may be defined.
|
|
#
|
|
# For example:
|
|
#
|
|
# NONRECURSIVE_TARGETS = export libs
|
|
# NONRECURSIVE_TARGETS_export = headers
|
|
# NONRECURSIVE_TARGETS_export_headers_FILE = /path/to/exports.mk
|
|
# NONRECURSIVE_TARGETS_export_headers_TARGETS = $(DIST)/include/foo.h $(DIST)/include/bar.h
|
|
# NONRECURSIVE_TARGETS_libs = cppsrcs
|
|
# NONRECURSIVE_TARGETS_libs_cppsrcs_DIRECTORY = $(DEPTH)/foo
|
|
# NONRECURSIVE_TARGETS_libs_cppsrcs_TARGETS = /path/to/foo.o /path/to/bar.o
|
|
#
|
|
# Will get turned into the following:
|
|
#
|
|
# exports::
|
|
# $(MAKE) -C $(DEPTH) -f /path/to/exports.mk $(DIST)/include/foo.h $(DIST)/include/bar.h
|
|
#
|
|
# libs::
|
|
# $(MAKE) -C $(DEPTH)/foo /path/to/foo.o /path/to/bar.o
|
|
|
|
ifndef INCLUDED_NONRECURSIVE_MK
|
|
|
|
define define_nonrecursive_target
|
|
$(1)::
|
|
$$(MAKE) -C $(or $(4),$$(DEPTH)) $(addprefix -f ,$(3)) $(2)
|
|
endef
|
|
|
|
$(foreach target,$(NONRECURSIVE_TARGETS), \
|
|
$(foreach entry,$(NONRECURSIVE_TARGETS_$(target)), \
|
|
$(eval $(call define_nonrecursive_target, \
|
|
$(target), \
|
|
$(NONRECURSIVE_TARGETS_$(target)_$(entry)_TARGETS), \
|
|
$(NONRECURSIVE_TARGETS_$(target)_$(entry)_FILE), \
|
|
$(NONRECURSIVE_TARGETS_$(target)_$(entry)_DIRECTORY), \
|
|
)) \
|
|
) \
|
|
)
|
|
|
|
INCLUDED_NONRECURSIVE_MK := 1
|
|
endif
|
|
|