Rename META_MODE option to DIRDEPS_BUILD
This allows META_FILES option to be renamed META_MODE. Also add META_COOKIE_TOUCH for use in targets that can benefit from a cookie when in meta mode. Differential Revision: https://reviews.freebsd.org/D4153 Reviewed by: bdrewery
This commit is contained in:
parent
ca298cac31
commit
948f327ee4
10
Makefile
10
Makefile
@ -106,7 +106,7 @@
|
|||||||
|
|
||||||
# Note: we use this awkward construct to be compatible with FreeBSD's
|
# Note: we use this awkward construct to be compatible with FreeBSD's
|
||||||
# old make used in 10.0 and 9.2 and earlier.
|
# old make used in 10.0 and 9.2 and earlier.
|
||||||
.if defined(MK_META_MODE) && ${MK_META_MODE} == "yes" && !make(showconfig)
|
.if defined(MK_DIRDEPS_BUILD) && ${MK_DIRDEPS_BUILD} == "yes" && !make(showconfig)
|
||||||
# targets/Makefile plays the role of top-level
|
# targets/Makefile plays the role of top-level
|
||||||
.include "targets/Makefile"
|
.include "targets/Makefile"
|
||||||
.else
|
.else
|
||||||
@ -498,15 +498,15 @@ buildLINT:
|
|||||||
# This makefile does not run in meta mode
|
# This makefile does not run in meta mode
|
||||||
.MAKE.MODE= normal
|
.MAKE.MODE= normal
|
||||||
# Normally the things we run from here don't either.
|
# Normally the things we run from here don't either.
|
||||||
# Using -DWITH_META_FILES
|
# Using -DWITH_META_MODE
|
||||||
# we can buildworld with meta files created which are useful
|
# we can buildworld with meta files created which are useful
|
||||||
# for debugging, but without any of the rest of a meta mode build.
|
# for debugging, but without any of the rest of a meta mode build.
|
||||||
MK_META_MODE= no
|
MK_DIRDEPS_BUILD= no
|
||||||
MK_STAGING= no
|
MK_STAGING= no
|
||||||
# tell meta.autodep.mk to not even think about updating anything.
|
# tell meta.autodep.mk to not even think about updating anything.
|
||||||
UPDATE_DEPENDFILE= NO
|
UPDATE_DEPENDFILE= NO
|
||||||
.if !make(showconfig)
|
.if !make(showconfig)
|
||||||
.export MK_META_MODE MK_STAGING UPDATE_DEPENDFILE
|
.export MK_DIRDEPS_BUILD MK_STAGING UPDATE_DEPENDFILE
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
.if make(universe)
|
.if make(universe)
|
||||||
@ -516,4 +516,4 @@ MAKE_JOB_ERROR_TOKEN= no
|
|||||||
.endif
|
.endif
|
||||||
.endif # bmake
|
.endif # bmake
|
||||||
|
|
||||||
.endif # META_MODE
|
.endif # DIRDEPS_BUILD
|
||||||
|
@ -166,7 +166,7 @@ compat:
|
|||||||
mtree -deU ${MTREE_FOLLOWS_SYMLINKS} \
|
mtree -deU ${MTREE_FOLLOWS_SYMLINKS} \
|
||||||
-f ${.CURDIR}/../etc/mtree/BSD.include.dist \
|
-f ${.CURDIR}/../etc/mtree/BSD.include.dist \
|
||||||
-p ${DESTDIR}${INCLUDEDIR} > /dev/null
|
-p ${DESTDIR}${INCLUDEDIR} > /dev/null
|
||||||
.if ${MK_META_MODE} == "yes"
|
.if ${MK_DIRDEPS_BUILD} == "yes"
|
||||||
@touch ${.TARGET}
|
@touch ${.TARGET}
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
@ -255,7 +255,7 @@ copies:
|
|||||||
cd ${.CURDIR}/../sys/teken; \
|
cd ${.CURDIR}/../sys/teken; \
|
||||||
${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 teken.h \
|
${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 teken.h \
|
||||||
${DESTDIR}${INCLUDEDIR}/teken
|
${DESTDIR}${INCLUDEDIR}/teken
|
||||||
.if ${MK_META_MODE} == "yes"
|
.if ${MK_DIRDEPS_BUILD} == "yes"
|
||||||
@touch ${.OBJDIR}/${.TARGET}
|
@touch ${.OBJDIR}/${.TARGET}
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
@ -372,7 +372,7 @@ symlinks:
|
|||||||
ln -fs ../../../sys/rpc/$$h \
|
ln -fs ../../../sys/rpc/$$h \
|
||||||
${DESTDIR}${INCLUDEDIR}/rpc; \
|
${DESTDIR}${INCLUDEDIR}/rpc; \
|
||||||
done
|
done
|
||||||
.if ${MK_META_MODE} == "yes"
|
.if ${MK_DIRDEPS_BUILD} == "yes"
|
||||||
@touch ${.OBJDIR}/${.TARGET}
|
@touch ${.OBJDIR}/${.TARGET}
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
|
@ -163,7 +163,7 @@ beforedepend: ${DHDRS}
|
|||||||
beforebuild: ${DHDRS}
|
beforebuild: ${DHDRS}
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
.if ${MK_META_MODE} == "yes"
|
.if ${MK_DIRDEPS_BUILD} == "yes"
|
||||||
.include <meta.autodep.mk>
|
.include <meta.autodep.mk>
|
||||||
# this depend: bypasses that below
|
# this depend: bypasses that below
|
||||||
# the dependency helps when bootstrapping
|
# the dependency helps when bootstrapping
|
||||||
|
@ -49,7 +49,7 @@ STANDALONE_SUBDIR_TARGETS?= obj checkdpadd clean cleandepend cleandir \
|
|||||||
.include <bsd.init.mk>
|
.include <bsd.init.mk>
|
||||||
|
|
||||||
.if !defined(NEED_SUBDIR)
|
.if !defined(NEED_SUBDIR)
|
||||||
.if ${.MAKE.LEVEL} == 0 && ${MK_META_MODE} == "yes" && !empty(SUBDIR) && !(make(clean*) || make(destroy*))
|
.if ${.MAKE.LEVEL} == 0 && ${MK_DIRDEPS_BUILD} == "yes" && !empty(SUBDIR) && !(make(clean*) || make(destroy*))
|
||||||
.include <meta.subdir.mk>
|
.include <meta.subdir.mk>
|
||||||
# ignore this
|
# ignore this
|
||||||
_SUBDIR:
|
_SUBDIR:
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
# local configuration specific to meta mode
|
# local configuration specific to meta mode
|
||||||
# XXX some of this should be in meta.sys.mk
|
# XXX some of this should be in meta.sys.mk
|
||||||
# we assume that MK_META_MODE=yes
|
# we assume that MK_DIRDEPS_BUILD=yes
|
||||||
|
|
||||||
# we need this until there is an alternative
|
# we need this until there is an alternative
|
||||||
MK_INSTALL_AS_USER= yes
|
MK_INSTALL_AS_USER= yes
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# $FreeBSD$
|
# $FreeBSD$
|
||||||
|
|
||||||
.if ${MK_META_MODE} == "yes"
|
.if ${MK_DIRDEPS_BUILD} == "yes"
|
||||||
MAKE_PRINT_VAR_ON_ERROR+= \
|
MAKE_PRINT_VAR_ON_ERROR+= \
|
||||||
.CURDIR \
|
.CURDIR \
|
||||||
.MAKE \
|
.MAKE \
|
||||||
@ -23,3 +23,15 @@ MAKE_PRINT_VAR_ON_ERROR += .MAKE.MAKEFILES .PATH
|
|||||||
.endif
|
.endif
|
||||||
|
|
||||||
.include "src.sys.mk"
|
.include "src.sys.mk"
|
||||||
|
|
||||||
|
.if ${.MAKE.MODE:Unormal:Mmeta*} != ""
|
||||||
|
# we can afford to use cookies to prevent some targets
|
||||||
|
# re-running needlessly
|
||||||
|
META_COOKIE_TOUCH= touch ${COOKIE.${.TARGET}:U${.OBJDIR}/${.TARGET}}
|
||||||
|
# some targets need to be .PHONY - but not in meta mode
|
||||||
|
META_NOPHONY=
|
||||||
|
.else
|
||||||
|
META_COOKIE_TOUCH=
|
||||||
|
META_NOPHONY= .PHONY
|
||||||
|
.endif
|
||||||
|
|
||||||
|
@ -20,14 +20,14 @@ MACHINE_CPUARCH=${MACHINE_ARCH:C/mips(n32|64)?(el)?/mips/:C/arm(v6)?(eb|hf)?/arm
|
|||||||
# Some options we need now
|
# Some options we need now
|
||||||
__DEFAULT_NO_OPTIONS= \
|
__DEFAULT_NO_OPTIONS= \
|
||||||
DIRDEPS_CACHE \
|
DIRDEPS_CACHE \
|
||||||
|
DIRDEPS_BUILD \
|
||||||
META_MODE \
|
META_MODE \
|
||||||
META_FILES \
|
|
||||||
|
|
||||||
|
|
||||||
__DEFAULT_DEPENDENT_OPTIONS= \
|
__DEFAULT_DEPENDENT_OPTIONS= \
|
||||||
AUTO_OBJ/META_MODE \
|
AUTO_OBJ/DIRDEPS_BUILD \
|
||||||
STAGING/META_MODE \
|
STAGING/DIRDEPS_BUILD \
|
||||||
SYSROOT/META_MODE
|
SYSROOT/DIRDEPS_BUILD
|
||||||
|
|
||||||
__ENV_ONLY_OPTIONS:= \
|
__ENV_ONLY_OPTIONS:= \
|
||||||
${__DEFAULT_NO_OPTIONS} \
|
${__DEFAULT_NO_OPTIONS} \
|
||||||
@ -43,9 +43,9 @@ __ENV_ONLY_OPTIONS:= \
|
|||||||
|
|
||||||
.include <bsd.mkopt.mk>
|
.include <bsd.mkopt.mk>
|
||||||
|
|
||||||
.if ${MK_META_MODE} == "yes"
|
.if ${MK_DIRDEPS_BUILD} == "yes"
|
||||||
.sinclude <meta.sys.mk>
|
.sinclude <meta.sys.mk>
|
||||||
.elif ${MK_META_FILES} == "yes" && defined(.MAKEFLAGS)
|
.elif ${MK_META_MODE} == "yes" && defined(.MAKEFLAGS)
|
||||||
.if ${.MAKEFLAGS:M-B} == ""
|
.if ${.MAKEFLAGS:M-B} == ""
|
||||||
.MAKE.MODE= meta verbose
|
.MAKE.MODE= meta verbose
|
||||||
.endif
|
.endif
|
||||||
|
37
tools/build/options/WITH_DIRDEPS_BUILD
Normal file
37
tools/build/options/WITH_DIRDEPS_BUILD
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
.\" $FreeBSD$
|
||||||
|
Enable building in meta mode.
|
||||||
|
This is an experimental build feature.
|
||||||
|
For details see
|
||||||
|
http://www.crufty.net/sjg/docs/freebsd-meta-mode.htm.
|
||||||
|
.Pp
|
||||||
|
The build is driven by dirdeps.mk using
|
||||||
|
.Va DIRDEPS
|
||||||
|
stored in
|
||||||
|
Makefile.depend files found in each directory.
|
||||||
|
.Pp
|
||||||
|
The build can be started from anywhere, and behaves the same.
|
||||||
|
The initial instance of
|
||||||
|
.Xr make 1
|
||||||
|
recursively reads
|
||||||
|
.Va DIRDEPS
|
||||||
|
from Makefile.depend
|
||||||
|
computing a graph of tree dependencies from the current origin.
|
||||||
|
Setting
|
||||||
|
.Va NO_DIRDEPS
|
||||||
|
will skip checking dirdep dependencies and will only build in the current
|
||||||
|
directory.
|
||||||
|
.Pp
|
||||||
|
As each target is made
|
||||||
|
.Xr make 1
|
||||||
|
produces a meta file which is used to capture (and compare)
|
||||||
|
the command line,
|
||||||
|
as well as any command output.
|
||||||
|
If
|
||||||
|
.Xr filemon 4
|
||||||
|
is available the meta file will also capture a record of files
|
||||||
|
used to produce the target by tracking syscalls.
|
||||||
|
.Pp
|
||||||
|
The build will hide commands ran unless
|
||||||
|
.Va NO_SILENT
|
||||||
|
is defined.
|
||||||
|
.Pp
|
@ -2,4 +2,4 @@
|
|||||||
Cache result of dirdeps.mk which can save significant time
|
Cache result of dirdeps.mk which can save significant time
|
||||||
for subsequent builds.
|
for subsequent builds.
|
||||||
Depends on
|
Depends on
|
||||||
.Va WITH_META_MODE .
|
.Va WITH_DIRDEPS_BUILD .
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
.\" $FreeBSD$
|
|
||||||
Create meta files during non META_MODE build.
|
|
||||||
The meta files can be useful for debugging.
|
|
@ -1,37 +1,3 @@
|
|||||||
.\" $FreeBSD$
|
.\" $FreeBSD$
|
||||||
Enable building in meta mode.
|
Create meta files when not doing DIRDEPS_BUILD.
|
||||||
This is an experimental build feature.
|
The meta files can be useful for debugging.
|
||||||
For details see
|
|
||||||
http://www.crufty.net/sjg/docs/freebsd-meta-mode.htm.
|
|
||||||
.Pp
|
|
||||||
The build is driven by dirdeps.mk using
|
|
||||||
.Va DIRDEPS
|
|
||||||
stored in
|
|
||||||
Makefile.depend files found in each directory.
|
|
||||||
.Pp
|
|
||||||
The build can be started from anywhere, and behaves the same.
|
|
||||||
The initial instance of
|
|
||||||
.Xr make 1
|
|
||||||
recursively reads
|
|
||||||
.Va DIRDEPS
|
|
||||||
from Makefile.depend
|
|
||||||
computing a graph of tree dependencies from the current origin.
|
|
||||||
Setting
|
|
||||||
.Va NO_DIRDEPS
|
|
||||||
will skip checking dirdep dependencies and will only build in the current
|
|
||||||
directory.
|
|
||||||
.Pp
|
|
||||||
As each target is made
|
|
||||||
.Xr make 1
|
|
||||||
produces a meta file which is used to capture (and compare)
|
|
||||||
the command line,
|
|
||||||
as well as any command output.
|
|
||||||
If
|
|
||||||
.Xr filemon 4
|
|
||||||
is available the meta file will also capture a record of files
|
|
||||||
used to produce the target by tracking syscalls.
|
|
||||||
.Pp
|
|
||||||
The build will hide commands ran unless
|
|
||||||
.Va NO_SILENT
|
|
||||||
is defined.
|
|
||||||
.Pp
|
|
||||||
|
@ -4,4 +4,4 @@ This can be best thought of as auto-install to
|
|||||||
.Va DESTDIR
|
.Va DESTDIR
|
||||||
with some extra meta data to ensure dependencies can be tracked.
|
with some extra meta data to ensure dependencies can be tracked.
|
||||||
Depends on
|
Depends on
|
||||||
.Va WITH_META_MODE .
|
.Va WITH_DIRDEPS_BUILD .
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
.\" $FreeBSD$
|
.\" $FreeBSD$
|
||||||
Enable use of sysroot during build.
|
Enable use of sysroot during build.
|
||||||
Depends on
|
Depends on
|
||||||
.Va WITH_META_MODE .
|
.Va WITH_DIRDEPS_BUILD .
|
||||||
|
@ -16,6 +16,6 @@ llib-lstdc.ln: llib-lstdc
|
|||||||
|
|
||||||
.include <bsd.prog.mk>
|
.include <bsd.prog.mk>
|
||||||
|
|
||||||
.if ${MK_META_MODE} == "yes"
|
.if ${MK_DIRDEPS_BUILD} == "yes"
|
||||||
LINTFLAGS+= -I${STAGE_INCLUDEDIR}
|
LINTFLAGS+= -I${STAGE_INCLUDEDIR}
|
||||||
.endif
|
.endif
|
||||||
|
Loading…
Reference in New Issue
Block a user