freebsd-src/mk/subdir.mk
Simon J. Gerraty e917534a84 Import bmake-20160512
Interesting changes (from ChangeLog):
o meta.c: ignore paths that match .MAKE.META.IGNORE_PATTERNS
  this is useful for gcov builds.
o propagate errors from filemon(4).
o meta.c: apply realpath() before matching against metaIgnorePaths
o allow makefile to set .MAKE.JOBS
2016-05-20 16:19:56 +00:00

98 lines
2.1 KiB
Makefile

# $Id: subdir.mk,v 1.15 2016/04/05 15:58:37 sjg Exp $
# skip missing directories...
# $NetBSD: bsd.subdir.mk,v 1.11 1996/04/04 02:05:06 jtc Exp $
# @(#)bsd.subdir.mk 5.9 (Berkeley) 2/1/91
.if ${.MAKE.LEVEL} == 0 && ${.MAKE.MODE:Uno:Mmeta*} != ""
.include <meta.subdir.mk>
# keep everyone happy
_SUBDIRUSE:
.elif !commands(_SUBDIRUSE) && !defined(NO_SUBDIR) && !defined(NOSUBDIR)
.-include <${.CURDIR}/Makefile.inc>
.if !target(.MAIN)
.MAIN: all
.endif
ECHO_DIR ?= echo
.ifdef SUBDIR_MUST_EXIST
MISSING_DIR=echo "Missing ===> ${.CURDIR}/$${entry}"; exit 1
.else
MISSING_DIR=echo "Skipping ===> ${.CURDIR}/$${entry}"; continue
.endif
_SUBDIRUSE: .USE
.if defined(SUBDIR)
@Exists() { test -f $$1; }; \
for entry in ${SUBDIR}; do \
(set -e; \
if Exists ${.CURDIR}/$${entry}.${MACHINE}/[mM]akefile; then \
_newdir_="$${entry}.${MACHINE}"; \
elif Exists ${.CURDIR}/$${entry}/[mM]akefile; then \
_newdir_="$${entry}"; \
else \
${MISSING_DIR}; \
fi; \
if test X"${_THISDIR_}" = X""; then \
_nextdir_="$${_newdir_}"; \
else \
_nextdir_="$${_THISDIR_}/$${_newdir_}"; \
fi; \
${ECHO_DIR} "===> $${_nextdir_}"; \
cd ${.CURDIR}/$${_newdir_}; \
${.MAKE} _THISDIR_="$${_nextdir_}" \
${.TARGET:S/realinstall/install/:S/.depend/depend/}) || exit 1; \
done
${SUBDIR}::
@set -e; if test -d ${.CURDIR}/${.TARGET}.${MACHINE}; then \
_newdir_=${.TARGET}.${MACHINE}; \
else \
_newdir_=${.TARGET}; \
fi; \
${ECHO_DIR} "===> $${_newdir_}"; \
cd ${.CURDIR}/$${_newdir_}; \
${.MAKE} _THISDIR_="$${_newdir_}" all
.endif
.if !target(install)
.if !target(beforeinstall)
beforeinstall:
.endif
.if !target(afterinstall)
afterinstall:
.endif
install: maninstall
maninstall: afterinstall
afterinstall: realinstall
realinstall: beforeinstall _SUBDIRUSE
.endif
.if defined(SRCS)
etags: ${SRCS}
-cd ${.CURDIR}; etags `echo ${.ALLSRC:N*.h} | sed 's;${.CURDIR}/;;'`
.endif
SUBDIR_TARGETS += \
all \
clean \
cleandir \
includes \
depend \
lint \
obj \
tags \
etags
.for t in ${SUBDIR_TARGETS:O:u}
$t: _SUBDIRUSE
.endfor
.include <own.mk>
.if make(destroy*)
.include <obj.mk>
.endif
.endif
# make sure this exists
all: