freebsd-dev/share/mk/bsd.subdir.mk
peter e7ae2a4d0b Make ../Makefile.inc handling more consistant to prevent multiple includes
when certain .mk files include other .mk files.  This will remove the
need for multiple include protection in some other makefiles around the
tree (and helps some elf conditionals).
1998-08-08 07:02:08 +00:00

119 lines
3.2 KiB
Makefile

# from: @(#)bsd.subdir.mk 5.9 (Berkeley) 2/1/91
# $Id: bsd.subdir.mk,v 1.24 1998/05/06 16:53:53 wosch Exp $
#
# The include file <bsd.subdir.mk> contains the default targets
# for building subdirectories.
#
# For all of the directories listed in the variable SUBDIRS, the
# specified directory will be visited and the target made. There is
# also a default target which allows the command "make subdir" where
# subdir is any directory listed in the variable SUBDIRS.
#
#
# +++ variables +++
#
# DISTRIBUTION Name of distribution. [bin]
#
# SUBDIR A list of subdirectories that should be built as well.
# Each of the targets will execute the same target in the
# subdirectories.
#
# SUBDIR_CHANGE A directory-tree that contains overrides for
# corresponding build subdirs.
# Each override is a file containing one subdirname per line:
# 'subdirlist' is a pure override
# 'subdirdrop' drops directories from the build
# 'subdiradd' adds directories to the build
#
# +++ targets +++
#
# distribute:
# This is a variant of install, which will
# put the stuff into the right "distribution".
#
# afterdistribute, afterinstall, all, beforeinstall, checkdpadd,
# clean, cleandepend, cleandir, depend, install, lint, maninstall,
# obj, objlink, realinstall, regress, tags
#
.if !target(__initialized__)
__initialized__:
.if exists(${.CURDIR}/../Makefile.inc)
.include "${.CURDIR}/../Makefile.inc"
.endif
.endif
.MAIN: all
.if defined(SUBDIR_CHANGE) && !empty(SUBDIR_CHANGE) && \
exists(${SUBDIR_CHANGE}/${DIRPRFX}/subdirlist)
SUBDIR!=cat ${SUBDIR_CHANGE}/${DIRPRFX}/subdirlist
.endif
.if defined(SUBDIR_CHANGE) && !empty(SUBDIR_CHANGE) && \
exists(${SUBDIR_CHANGE}/${DIRPRFX}/subdirlist)
_SUBDIR_EXTRA!=cat ${SUBDIR_CHANGE}/${DIRPRFX}/subdiradd
.endif
_SUBDIRUSE: .USE
@for entry in ${SUBDIR} ${_SUBDIR_EXTRA}; do \
(if ! (test -f ${SUBDIR_CHANGE}/${DIRPRFX}/subdirdrop && \
grep -w $${entry} \
${SUBDIR_CHANGE}/${DIRPRFX}/subdirdrop \
> /dev/null); then \
if test -d ${.CURDIR}/$${entry}.${MACHINE}; then \
${ECHODIR} \
"===> ${DIRPRFX}$${entry}.${MACHINE}"; \
edir=$${entry}.${MACHINE}; \
cd ${.CURDIR}/$${edir}; \
else \
${ECHODIR} "===> ${DIRPRFX}$$entry"; \
edir=$${entry}; \
cd ${.CURDIR}/$${edir}; \
fi; \
${MAKE} ${.TARGET:realinstall=install} \
SUBDIR_CHANGE=${SUBDIR_CHANGE} \
DIRPRFX=${DIRPRFX}$$edir/; \
fi; \
); \
done
${SUBDIR}::
@if test -d ${.TARGET}.${MACHINE}; then \
cd ${.CURDIR}/${.TARGET}.${MACHINE}; \
else \
cd ${.CURDIR}/${.TARGET}; \
fi; \
${MAKE} all
.for __target in all checkdpadd clean cleandepend cleandir depend lint \
maninstall obj objlink regress tags
.if !target(${__target})
${__target}: _SUBDIRUSE
.endif
.endfor
.if !target(install)
.if !target(beforeinstall)
beforeinstall:
.endif
.if !target(afterinstall)
afterinstall:
.endif
install: afterinstall
afterinstall: realinstall
realinstall: beforeinstall _SUBDIRUSE
.endif
DISTRIBUTION?= bin
.if !target(afterdistribute)
afterdistribute:
.endif
.if !target(distribute)
distribute: _SUBDIRUSE
.for dist in ${DISTRIBUTION}
cd ${.CURDIR} ; ${MAKE} afterdistribute DESTDIR=${DISTDIR}/${dist}
.endfor
.endif