2002-04-17 13:49:29 +00:00
|
|
|
# $FreeBSD$
|
|
|
|
|
2014-04-24 02:02:51 +00:00
|
|
|
# The include file <bsd.init.mk> includes <bsd.opts.mk>,
|
|
|
|
# ../Makefile.inc and <bsd.own.mk>; this is used at the
|
|
|
|
# top of all <bsd.*.mk> files that actually "build something".
|
|
|
|
# bsd.opts.mk is included early so Makefile.inc can use the
|
|
|
|
# MK_FOO variables.
|
2002-04-17 13:49:29 +00:00
|
|
|
|
|
|
|
.if !target(__<bsd.init.mk>__)
|
|
|
|
__<bsd.init.mk>__:
|
2014-04-24 02:02:51 +00:00
|
|
|
.include <bsd.opts.mk>
|
2015-06-13 19:20:56 +00:00
|
|
|
.-include "local.init.mk"
|
2017-11-05 00:11:58 +00:00
|
|
|
|
|
|
|
# This is also done in bsd.obj.mk
|
2017-11-10 02:09:33 +00:00
|
|
|
.if defined(NO_OBJ) && ${.OBJDIR} != ${.CURDIR}
|
2017-11-05 00:11:58 +00:00
|
|
|
.OBJDIR: ${.CURDIR}
|
|
|
|
.endif
|
|
|
|
|
2002-04-17 13:49:29 +00:00
|
|
|
.if exists(${.CURDIR}/../Makefile.inc)
|
|
|
|
.include "${.CURDIR}/../Makefile.inc"
|
|
|
|
.endif
|
|
|
|
.include <bsd.own.mk>
|
|
|
|
.MAIN: all
|
2012-08-22 19:25:57 +00:00
|
|
|
|
2017-09-16 05:42:27 +00:00
|
|
|
# This is used in bsd.{dep,lib,prog}.mk as ${OBJS_SRCS_FILTER:ts:}
|
|
|
|
# Some makefiles may want T as well to avoid nested objdirs.
|
|
|
|
OBJS_SRCS_FILTER+= R
|
|
|
|
|
2017-05-28 00:43:12 +00:00
|
|
|
# Handle INSTALL_AS_USER here to maximize the chance that
|
|
|
|
# it has final authority over fooOWN and fooGRP.
|
|
|
|
.if ${MK_INSTALL_AS_USER} != "no"
|
|
|
|
.if !defined(_uid)
|
|
|
|
_uid!= id -u
|
|
|
|
.export _uid
|
|
|
|
.endif
|
|
|
|
.if ${_uid} != 0
|
|
|
|
.if !defined(_gid)
|
|
|
|
_gid!= id -g
|
|
|
|
.export _gid
|
|
|
|
.endif
|
|
|
|
.for x in BIN CONF DOC DTB INFO KMOD LIB MAN NLS SHARE
|
2017-05-28 00:45:28 +00:00
|
|
|
$xOWN= ${_uid}
|
2017-05-28 00:43:12 +00:00
|
|
|
$xGRP= ${_gid}
|
|
|
|
.endfor
|
|
|
|
.endif
|
|
|
|
.endif
|
|
|
|
|
2016-11-13 00:11:02 +00:00
|
|
|
# Some targets need to know when something may build. This is used to
|
|
|
|
# optimize targets that are only needed when building something, such as
|
|
|
|
# (not) reading in depend files. For DIRDEPS_BUILD, it will only calculate
|
|
|
|
# the dependency graph at .MAKE.LEVEL==0, so nothing should be built there.
|
|
|
|
# Skip "build" logic if:
|
|
|
|
# - DIRDEPS_BUILD at MAKELEVEL 0
|
|
|
|
# - make -V is used without an override
|
|
|
|
# - make install is used without other targets. This is to avoid breaking
|
|
|
|
# things like 'make all install' or 'make foo install'.
|
|
|
|
# - non-build targets are called
|
2020-11-24 21:45:38 +00:00
|
|
|
.if ${MK_DIRDEPS_BUILD} == "yes" && ${.MAKE.LEVEL} == 0
|
|
|
|
# targets that are ok at level 0
|
|
|
|
DIRDEPS_BUILD_LEVEL0_TARGETS += clean* destroy*
|
|
|
|
M_ListToSkip?= O:u:S,^,N,:ts:
|
|
|
|
.if ${.TARGETS:Uall:${DIRDEPS_BUILD_LEVEL0_TARGETS:${M_ListToSkip}}} != ""
|
2016-11-13 00:11:02 +00:00
|
|
|
_SKIP_BUILD= not building at level 0
|
2020-11-24 21:45:38 +00:00
|
|
|
.endif
|
2017-05-06 05:37:36 +00:00
|
|
|
.elif !empty(.MAKEFLAGS:M-V${_V_DO_BUILD}) || \
|
2016-11-13 00:11:02 +00:00
|
|
|
${.TARGETS:M*install*} == ${.TARGETS} || \
|
2017-06-20 20:52:06 +00:00
|
|
|
${.TARGETS:Mclean*} == ${.TARGETS} || \
|
2019-07-04 14:51:44 +00:00
|
|
|
${.TARGETS:M*clean} == ${.TARGETS} || \
|
2017-06-20 20:52:06 +00:00
|
|
|
${.TARGETS:Mdestroy*} == ${.TARGETS} || \
|
2017-11-05 00:12:12 +00:00
|
|
|
${.TARGETS:Mobj} == ${.TARGETS} || \
|
|
|
|
make(analyze) || make(print-dir)
|
2016-11-13 00:11:02 +00:00
|
|
|
# Skip building, but don't show a warning.
|
|
|
|
_SKIP_BUILD=
|
2012-08-22 19:25:57 +00:00
|
|
|
.endif
|
2016-11-13 00:11:02 +00:00
|
|
|
.if ${MK_DIRDEPS_BUILD} == "yes" && ${.MAKE.LEVEL} > 0 && !empty(_SKIP_BUILD)
|
2015-06-13 19:20:56 +00:00
|
|
|
.warning ${_SKIP_BUILD}
|
|
|
|
.endif
|
2012-08-22 19:25:57 +00:00
|
|
|
|
2016-11-13 00:10:59 +00:00
|
|
|
beforebuild: .PHONY .NOTMAIN
|
|
|
|
.if !defined(_SKIP_BUILD)
|
|
|
|
all: beforebuild .WAIT
|
|
|
|
.endif
|
|
|
|
|
2016-06-14 16:20:19 +00:00
|
|
|
.if ${MK_META_MODE} == "yes"
|
|
|
|
.if !exists(/dev/filemon) && \
|
|
|
|
${UPDATE_DEPENDFILE:Uyes:tl} != "no" && !defined(NO_FILEMON) && \
|
2018-06-20 17:20:39 +00:00
|
|
|
!make(test-system-*) && !make(showconfig) && !make(print-dir) && \
|
|
|
|
${.MAKEFLAGS:M-V} == ""
|
2016-06-14 16:20:19 +00:00
|
|
|
.warning The filemon module (/dev/filemon) is not loaded.
|
|
|
|
.warning META_MODE is less useful for incremental builds without filemon.
|
|
|
|
.warning 'kldload filemon' or pass -DNO_FILEMON to suppress this warning.
|
|
|
|
.endif
|
|
|
|
.endif # ${MK_META_MODE} == "yes"
|
|
|
|
|
2005-04-11 07:13:29 +00:00
|
|
|
.endif # !target(__<bsd.init.mk>__)
|