bsd.subdir.mk revision 134904
155714Skris#	from: @(#)bsd.subdir.mk	5.9 (Berkeley) 2/1/91
255714Skris# $FreeBSD: head/share/mk/bsd.subdir.mk 134903 2004-09-07 15:19:40Z imp $
355714Skris#
455714Skris# The include file <bsd.subdir.mk> contains the default targets
555714Skris# for building subdirectories. 
655714Skris#
755714Skris# For all of the directories listed in the variable SUBDIRS, the
855714Skris# specified directory will be visited and the target made. There is
955714Skris# also a default target which allows the command "make subdir" where
1055714Skris# subdir is any directory listed in the variable SUBDIRS.
1155714Skris#
1255714Skris#
1355714Skris# +++ variables +++
1455714Skris#
1555714Skris# DISTRIBUTION	Name of distribution. [base]
1655714Skris#
1755714Skris# SUBDIR	A list of subdirectories that should be built as well.
1855714Skris#		Each of the targets will execute the same target in the
1955714Skris#		subdirectories.
2055714Skris#
2155714Skris# +++ targets +++
2255714Skris#
2355714Skris#	distribute:
2455714Skris# 		This is a variant of install, which will
2555714Skris# 		put the stuff into the right "distribution".
2655714Skris#
2755714Skris#	afterinstall, all, all-man, beforeinstall, checkdpadd,
2855714Skris#	clean, cleandepend, cleandir, depend, install, lint, maninstall,
2955714Skris#	obj, objlink, realinstall, regress, tags
3055714Skris#
3155714Skris
3255714Skris.include <bsd.init.mk>
3355714Skris
3455714SkrisDISTRIBUTION?=	base
3555714Skris.if !target(distribute)
3655714Skrisdistribute:
3755714Skris.for dist in ${DISTRIBUTION}
3855714Skris	${_+_}cd ${.CURDIR}; \
3955714Skris	    ${MAKE} install -DNO_SUBDIR DESTDIR=${DISTDIR}/${dist} SHARED=copies
4055714Skris.endfor
4155714Skris.endif
4255714Skris
4355714Skris_SUBDIR: .USE
4455714Skris.if defined(SUBDIR) && !empty(SUBDIR) && !defined(NO_SUBDIR)
4555714Skris	@${_+_}for entry in ${SUBDIR}; do \
4655714Skris		if test -d ${.CURDIR}/$${entry}.${MACHINE_ARCH}; then \
4755714Skris			${ECHODIR} "===> ${DIRPRFX}$${entry}.${MACHINE_ARCH} (${.TARGET:realinstall=install})"; \
4855714Skris			edir=$${entry}.${MACHINE_ARCH}; \
4955714Skris			cd ${.CURDIR}/$${edir}; \
5055714Skris		else \
5155714Skris			${ECHODIR} "===> ${DIRPRFX}$$entry (${.TARGET:realinstall=install})"; \
5255714Skris			edir=$${entry}; \
5355714Skris			cd ${.CURDIR}/$${edir}; \
5455714Skris		fi; \
5555714Skris		${MAKE} ${.TARGET:realinstall=install} \
5655714Skris		    DIRPRFX=${DIRPRFX}$$edir/; \
5755714Skris	done
5855714Skris.endif
5959191Skris
6055714Skris${SUBDIR}::
6155714Skris	${_+_}@if test -d ${.TARGET}.${MACHINE_ARCH}; then \
6255714Skris		cd ${.CURDIR}/${.TARGET}.${MACHINE_ARCH}; \
63109998Smarkm	else \
6455714Skris		cd ${.CURDIR}/${.TARGET}; \
6555714Skris	fi; \
6655714Skris	${_+_}${MAKE} all
6755714Skris
6855714Skris
6955714Skris.for __target in all all-man checkdpadd clean cleandepend cleandir \
7055714Skris    depend distribute lint maninstall \
7155714Skris    obj objlink realinstall regress tags
7255714Skris${__target}: _SUBDIR
7355714Skris.endfor
7455714Skris
7555714Skris.for __target in files includes
76160814Ssimon.for __stage in build install
77160814Ssimon${__stage}${__target}:
78160814Ssimon.if make(${__stage}${__target})
79160814Ssimon${__stage}${__target}: _SUBDIR
80160814Ssimon.endif
81160814Ssimon.endfor
8255714Skris${__target}:
8355714Skris	${_+_}cd ${.CURDIR}; ${MAKE} build${__target}; ${MAKE} install${__target}
8455714Skris.endfor
8555714Skris
8655714Skris.if !target(install)
8755714Skris.if !target(beforeinstall)
8855714Skrisbeforeinstall:
8955714Skris.endif
90160814Ssimon.if !target(afterinstall)
9155714Skrisafterinstall:
9255714Skris.endif
9355714Skrisinstall: beforeinstall realinstall afterinstall
9455714Skris.ORDER: beforeinstall realinstall afterinstall
9555714Skris.endif
9655714Skris