bsd.subdir.mk revision 90311
179455Sobrien#	from: @(#)bsd.subdir.mk	5.9 (Berkeley) 2/1/91
279455Sobrien# $FreeBSD: head/share/mk/bsd.subdir.mk 90311 2002-02-06 18:05:53Z ru $
379455Sobrien#
479455Sobrien# The include file <bsd.subdir.mk> contains the default targets
579455Sobrien# for building subdirectories. 
679455Sobrien#
779455Sobrien# For all of the directories listed in the variable SUBDIRS, the
879455Sobrien# specified directory will be visited and the target made. There is
979455Sobrien# also a default target which allows the command "make subdir" where
1079455Sobrien# subdir is any directory listed in the variable SUBDIRS.
1179455Sobrien#
1279455Sobrien#
1379455Sobrien# +++ variables +++
1479455Sobrien#
1579455Sobrien# DISTRIBUTION	Name of distribution. [bin]
1679455Sobrien#
1779455Sobrien# SUBDIR	A list of subdirectories that should be built as well.
1879455Sobrien#		Each of the targets will execute the same target in the
1979455Sobrien#		subdirectories.
2079455Sobrien#
2179455Sobrien# +++ targets +++
2279455Sobrien#
2379455Sobrien#	distribute:
2479455Sobrien# 		This is a variant of install, which will
2579455Sobrien# 		put the stuff into the right "distribution".
2679455Sobrien#
2779455Sobrien#	afterdistribute, afterinstall, all, all-man, beforeinstall, checkdpadd,
2879455Sobrien#	clean, cleandepend, cleandir, depend, install, lint, maninstall,
29128463Stjr#	obj, objlink, realinstall, regress, tags
3079455Sobrien#
3179455Sobrien
3279455Sobrien.if !target(__initialized__)
3379455Sobrien__initialized__:
3479455Sobrien.if exists(${.CURDIR}/../Makefile.inc)
3579455Sobrien.include "${.CURDIR}/../Makefile.inc"
3679455Sobrien.endif
3779455Sobrien.endif  
3879455Sobrien
3979455Sobrien.MAIN: all
4079455Sobrien
4179455Sobrien_SUBDIRUSE: .USE
4279455Sobrien	@for entry in ${SUBDIR}; do \
43203872Skib		(if test -d ${.CURDIR}/$${entry}.${MACHINE_ARCH}; then \
4479455Sobrien			${ECHODIR} "===> ${DIRPRFX}$${entry}.${MACHINE_ARCH}"; \
4579455Sobrien			edir=$${entry}.${MACHINE_ARCH}; \
4679455Sobrien			cd ${.CURDIR}/$${edir}; \
4779455Sobrien		else \
4879455Sobrien			${ECHODIR} "===> ${DIRPRFX}$$entry"; \
49203872Skib			edir=$${entry}; \
5079455Sobrien			cd ${.CURDIR}/$${edir}; \
51203872Skib		fi; \
5279455Sobrien		${MAKE} ${.TARGET:realinstall=install} \
5379455Sobrien		    DIRPRFX=${DIRPRFX}$$edir/); \
5479455Sobrien	done
5579455Sobrien
5679455Sobrien${SUBDIR}::
5779455Sobrien	@if test -d ${.TARGET}.${MACHINE_ARCH}; then \
5879455Sobrien		cd ${.CURDIR}/${.TARGET}.${MACHINE_ARCH}; \
5979455Sobrien	else \
6079455Sobrien		cd ${.CURDIR}/${.TARGET}; \
6179455Sobrien	fi; \
6279455Sobrien	${MAKE} all
6379455Sobrien
6479455Sobrien
65203874Skib.for __target in all all-man checkdpadd clean cleandepend cleandir depend lint \
66203874Skib		 maninstall obj objlink regress tags \
67203874Skib		 install.debug reinstall.debug
68203874Skib.if !target(${__target})
69203874Skib${__target}: _SUBDIRUSE
70203874Skib.endif
71203874Skib.endfor
72203874Skib
7379455Sobrien.if !target(install)
74203874Skib.if !target(beforeinstall)
75203874Skibbeforeinstall:
76203874Skib.endif
7779455Sobrien.if !target(afterinstall)
78203874Skibafterinstall:
7979455Sobrien.endif
80203874Skibinstall: afterinstall
8179455Sobrienafterinstall: realinstall
8279455Sobrienrealinstall: beforeinstall _SUBDIRUSE
8379455Sobrien.endif
8479455Sobrien
8579455SobrienDISTRIBUTION?=	bin
8679455Sobrien.if !target(afterdistribute)
8779455Sobrienafterdistribute:
8879455Sobrien.endif
8979455Sobrien.if !target(distribute)
9079455Sobriendistribute: _SUBDIRUSE
91102231Strhodes.for dist in ${DISTRIBUTION}
9279455Sobrien	cd ${.CURDIR} ; ${MAKE} afterdistribute DESTDIR=${DISTDIR}/${dist}
9379455Sobrien.endfor
9479455Sobrien.endif
95203874Skib