Allow use of .WAIT in the LOCAL_DIRS and LOCAL_LIB_DIRS lists.

A comment in Makefile.inc1 has long stated that LOCAL_DIRS are built last,
after the base system.  Incremental improvements in parallel building over
the years have led to LOCAL_DIRS being built in parallel with base system
directories.  This change allows the .WAIT directive to appear in LOCAL_DIRS
and LOCAL_LIB_DIRS lists to give the user some control over parallel
building of local additions.

Differential Revision:	https://reviews.freebsd.org/D13622
This commit is contained in:
Ian Lepore 2017-12-31 18:53:13 +00:00
parent 0ac9f3f67f
commit e93e5bb0fa
2 changed files with 25 additions and 6 deletions

View File

@ -262,10 +262,11 @@ SUBDIR+= tests
SUBDIR+=contrib/ofed
.endif
# Local directories are last, since it is nice to at least get the base
# system rebuilt before you do them.
# Local directories are built in parallel with the base system directories.
# Users may insert a .WAIT directive at the beginning or elsewhere within
# the LOCAL_DIRS and LOCAL_LIB_DIRS lists as needed.
.for _DIR in ${LOCAL_DIRS}
.if exists(${.CURDIR}/${_DIR}/Makefile)
.if ${_DIR} == ".WAIT" || exists(${.CURDIR}/${_DIR}/Makefile)
SUBDIR+= ${_DIR}
.endif
.endfor
@ -276,7 +277,7 @@ SUBDIR+= ${_DIR}
_REDUNDANT_LIB_DIRS+= ${LOCAL_LIB_DIRS:M${_DIR}*}
.endfor
.for _DIR in ${LOCAL_LIB_DIRS}
.if empty(_REDUNDANT_LIB_DIRS:M${_DIR}) && exists(${.CURDIR}/${_DIR}/Makefile)
.if ${_DIR} == ".WAIT" || (empty(_REDUNDANT_LIB_DIRS:M${_DIR}) && exists(${.CURDIR}/${_DIR}/Makefile))
SUBDIR+= ${_DIR}
.endif
.endfor
@ -2445,7 +2446,7 @@ _generic_libs= ${_cddl_lib} gnu/lib ${_kerberos5_lib} lib ${_secure_lib} usr.bin
_generic_libs+= sbin/ipf/libipf
.endif
.for _DIR in ${LOCAL_LIB_DIRS}
.if exists(${.CURDIR}/${_DIR}/Makefile) && empty(_generic_libs:M${_DIR})
.if ${_DIR} == ".WAIT" || (empty(_generic_libs:M${_DIR}) && exists(${.CURDIR}/${_DIR}/Makefile))
_generic_libs+= ${_DIR}
.endif
.endfor

View File

@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
.Dd November 3, 2017
.Dd December 24, 2017
.Dt BUILD 7
.Os
.Sh NAME
@ -509,6 +509,15 @@ If set, this variable supplies a list of additional directories relative to
the root of the source tree to build as part of the
.Cm everything
target.
The directories are built in parallel with each other,
and with the base system directories.
Insert a
.Va .WAIT
directive at the beginning of the
.Va LOCAL_DIRS
list to ensure all base system directories are built first.
.Va .WAIT
may also be used as needed elsewhere within the list.
.It Va LOCAL_ITOOLS
If set, this variable supplies a list of additional tools that are used by the
.Cm installworld
@ -520,6 +529,15 @@ If set, this variable supplies a list of additional directories relative to
the root of the source tree to build as part of the
.Cm libraries
target.
The directories are built in parallel with each other,
and with the base system libraries.
Insert a
.Va .WAIT
directive at the beginning of the
.Va LOCAL_DIRS
list to ensure all base system libraries are built first.
.Va .WAIT
may also be used as needed elsewhere within the list.
.It Va LOCAL_MTREE
If set, this variable supplies a list of additional mtrees relative to the
root of the source tree to use as part of the