f5e7a58e87
additional targets that will cause descending into subdirs. Example: cd /sys/modules; make load SUBDIR_TARGETS=load (But don't try it with your pet.) Submitted by: Alexey Klimov PR: 47601
97 lines
2.5 KiB
Makefile
97 lines
2.5 KiB
Makefile
# from: @(#)bsd.subdir.mk 5.9 (Berkeley) 2/1/91
|
|
# $FreeBSD$
|
|
#
|
|
# 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. [base]
|
|
#
|
|
# SUBDIR A list of subdirectories that should be built as well.
|
|
# Each of the targets will execute the same target in the
|
|
# subdirectories.
|
|
#
|
|
# +++ targets +++
|
|
#
|
|
# distribute:
|
|
# This is a variant of install, which will
|
|
# put the stuff into the right "distribution".
|
|
#
|
|
# afterinstall, all, all-man, beforeinstall, checkdpadd,
|
|
# clean, cleandepend, cleandir, depend, install, lint, maninstall,
|
|
# obj, objlink, realinstall, regress, tags
|
|
#
|
|
|
|
.include <bsd.init.mk>
|
|
|
|
DISTRIBUTION?= base
|
|
.if !target(distribute)
|
|
distribute:
|
|
.for dist in ${DISTRIBUTION}
|
|
${_+_}cd ${.CURDIR}; \
|
|
${MAKE} install -DNO_SUBDIR DESTDIR=${DISTDIR}/${dist} SHARED=copies
|
|
.endfor
|
|
.endif
|
|
|
|
_SUBDIR: .USE
|
|
.if defined(SUBDIR) && !empty(SUBDIR) && !defined(NO_SUBDIR)
|
|
@${_+_}for entry in ${SUBDIR}; do \
|
|
if test -d ${.CURDIR}/$${entry}.${MACHINE_ARCH}; then \
|
|
${ECHODIR} "===> ${DIRPRFX}$${entry}.${MACHINE_ARCH} (${.TARGET:realinstall=install})"; \
|
|
edir=$${entry}.${MACHINE_ARCH}; \
|
|
cd ${.CURDIR}/$${edir}; \
|
|
else \
|
|
${ECHODIR} "===> ${DIRPRFX}$$entry (${.TARGET:realinstall=install})"; \
|
|
edir=$${entry}; \
|
|
cd ${.CURDIR}/$${edir}; \
|
|
fi; \
|
|
${MAKE} ${.TARGET:realinstall=install} \
|
|
DIRPRFX=${DIRPRFX}$$edir/; \
|
|
done
|
|
.endif
|
|
|
|
${SUBDIR}::
|
|
${_+_}@if test -d ${.TARGET}.${MACHINE_ARCH}; then \
|
|
cd ${.CURDIR}/${.TARGET}.${MACHINE_ARCH}; \
|
|
else \
|
|
cd ${.CURDIR}/${.TARGET}; \
|
|
fi; \
|
|
${_+_}${MAKE} all
|
|
|
|
|
|
.for __target in all all-man checkdpadd clean cleandepend cleandir \
|
|
depend distribute lint maninstall \
|
|
obj objlink realinstall regress tags \
|
|
${SUBDIR_TARGETS}
|
|
${__target}: _SUBDIR
|
|
.endfor
|
|
|
|
.for __target in files includes
|
|
.for __stage in build install
|
|
${__stage}${__target}:
|
|
.if make(${__stage}${__target})
|
|
${__stage}${__target}: _SUBDIR
|
|
.endif
|
|
.endfor
|
|
${__target}:
|
|
${_+_}cd ${.CURDIR}; ${MAKE} build${__target}; ${MAKE} install${__target}
|
|
.endfor
|
|
|
|
.if !target(install)
|
|
.if !target(beforeinstall)
|
|
beforeinstall:
|
|
.endif
|
|
.if !target(afterinstall)
|
|
afterinstall:
|
|
.endif
|
|
install: beforeinstall realinstall afterinstall
|
|
.ORDER: beforeinstall realinstall afterinstall
|
|
.endif
|