xref: /freebsd/share/mk/local.sys.mk (revision 90d30dd1a9dc7f1dc7ef75e86a85f732754dd9d7)
1# $FreeBSD$
2
3.if ${MK_DIRDEPS_BUILD} == "yes"
4MAKE_PRINT_VAR_ON_ERROR+= \
5	.CURDIR \
6	.MAKE \
7	.OBJDIR \
8	.TARGETS \
9	DESTDIR \
10	LD_LIBRARY_PATH \
11	MACHINE \
12	MACHINE_ARCH \
13	MAKEOBJDIRPREFIX \
14	MAKESYSPATH \
15	MAKE_VERSION\
16	PATH \
17	SRCTOP \
18	OBJTOP \
19	${MAKE_PRINT_VAR_ON_ERROR_XTRAS}
20
21.if ${.MAKE.LEVEL} > 0
22MAKE_PRINT_VAR_ON_ERROR += .MAKE.MAKEFILES .PATH
23.endif
24.endif
25
26.if !empty(.OBJDIR)
27OBJTOP?= ${.OBJDIR:S,${.CURDIR},,}${SRCTOP}
28.endif
29
30.include "src.sys.mk"
31
32.if ${.MAKE.MODE:Mmeta*} != ""
33# we can afford to use cookies to prevent some targets
34# re-running needlessly but only when using filemon.
35.if ${.MAKE.MODE:Mnofilemon} == ""
36META_COOKIE_COND=	empty(.TARGET:M${.OBJDIR})
37META_COOKIE=		${COOKIE.${.TARGET}:U${${META_COOKIE_COND}:?${.OBJDIR}/${.TARGET}:${.TARGET}}}
38META_COOKIE_RM=		@rm -f ${META_COOKIE}
39META_COOKIE_TOUCH=	@touch ${META_COOKIE}
40CLEANFILES+=		${META_TARGETS}
41_meta_dep_before:	.USEBEFORE .NOTMAIN
42	${META_COOKIE_RM}
43_meta_dep_after:	.USE .NOTMAIN
44	${META_COOKIE_TOUCH}
45# Attach this to a target to allow it to benefit from meta mode's
46# not rerunning a command if it doesn't need to be considering its
47# metafile/filemon-tracked dependencies.
48META_DEPS=	_meta_dep_before _meta_dep_after .META
49.endif
50.else
51# some targets need to be .PHONY - but not in meta mode
52META_NOPHONY=	.PHONY
53.endif
54META_NOPHONY?=
55META_COOKIE_RM?=
56META_COOKIE_TOUCH?=
57META_DEPS+=	${META_NOPHONY}
58