bsd.subdir.mk revision 200178
1235537Sgber# from: @(#)bsd.subdir.mk 5.9 (Berkeley) 2/1/91 2235537Sgber# $FreeBSD: head/share/mk/bsd.subdir.mk 200178 2009-12-06 08:59:19Z ed $ 3235537Sgber# 4235537Sgber# The include file <bsd.subdir.mk> contains the default targets 5235537Sgber# for building subdirectories. 6235537Sgber# 7235537Sgber# For all of the directories listed in the variable SUBDIRS, the 8235537Sgber# specified directory will be visited and the target made. There is 9235537Sgber# also a default target which allows the command "make subdir" where 10235537Sgber# subdir is any directory listed in the variable SUBDIRS. 11235537Sgber# 12235537Sgber# 13235537Sgber# +++ variables +++ 14235537Sgber# 15235537Sgber# DISTRIBUTION Name of distribution. [base] 16235537Sgber# 17235537Sgber# SUBDIR A list of subdirectories that should be built as well. 18235537Sgber# Each of the targets will execute the same target in the 19235537Sgber# subdirectories. 20235537Sgber# 21235537Sgber# +++ targets +++ 22235537Sgber# 23235537Sgber# distribute: 24235537Sgber# This is a variant of install, which will 25235537Sgber# put the stuff into the right "distribution". 26235537Sgber# 27235537Sgber# afterinstall, all, all-man, beforeinstall, checkdpadd, clean, 28235537Sgber# cleandepend, cleandir, cleanilinks depend, install, lint, 29235537Sgber# maninstall, manlint, obj, objlink, realinstall, regress, tags 30235537Sgber# 31235537Sgber 32235537Sgber.include <bsd.init.mk> 33235537Sgber 34235537SgberDISTRIBUTION?= base 35235537Sgber.if !target(distribute) 36235537Sgberdistribute: 37235537Sgber.for dist in ${DISTRIBUTION} 38235537Sgber ${_+_}cd ${.CURDIR}; \ 39235537Sgber ${MAKE} install -DNO_SUBDIR DESTDIR=${DISTDIR}/${dist} SHARED=copies 40235537Sgber.endfor 41235537Sgber.endif 42235537Sgber 43235537Sgber_SUBDIR: .USE 44235537Sgber.if defined(SUBDIR) && !empty(SUBDIR) && !defined(NO_SUBDIR) 45235537Sgber @${_+_}for entry in ${SUBDIR}; do \ 46235537Sgber if test -d ${.CURDIR}/$${entry}.${MACHINE_ARCH}; then \ 47235537Sgber ${ECHODIR} "===> ${DIRPRFX}$${entry}.${MACHINE_ARCH} (${.TARGET:realinstall=install})"; \ 48235537Sgber edir=$${entry}.${MACHINE_ARCH}; \ 49235537Sgber cd ${.CURDIR}/$${edir}; \ 50235537Sgber else \ 51235537Sgber ${ECHODIR} "===> ${DIRPRFX}$$entry (${.TARGET:realinstall=install})"; \ 52235537Sgber edir=$${entry}; \ 53235537Sgber cd ${.CURDIR}/$${edir}; \ 54235537Sgber fi; \ 55235537Sgber ${MAKE} ${.TARGET:realinstall=install} \ 56235537Sgber DIRPRFX=${DIRPRFX}$$edir/; \ 57235537Sgber done 58235537Sgber.endif 59235537Sgber 60235537Sgber${SUBDIR}: .PHONY 61235537Sgber ${_+_}@if test -d ${.TARGET}.${MACHINE_ARCH}; then \ 62235537Sgber cd ${.CURDIR}/${.TARGET}.${MACHINE_ARCH}; \ 63235537Sgber else \ 64235537Sgber cd ${.CURDIR}/${.TARGET}; \ 65235537Sgber fi; \ 66235537Sgber ${MAKE} all 67235537Sgber 68235537Sgber.for __target in all all-man checkdpadd clean cleandepend cleandir \ 69235537Sgber cleanilinks depend distribute lint maninstall manlint obj objlink \ 70235537Sgber realinstall regress tags ${SUBDIR_TARGETS} 71235537Sgber${__target}: _SUBDIR 72235537Sgber.endfor 73235537Sgber 74235537Sgber.for __target in files includes 75235537Sgber.for __stage in build install 76235537Sgber${__stage}${__target}: 77235537Sgber.if make(${__stage}${__target}) 78235537Sgber${__stage}${__target}: _SUBDIR 79235537Sgber.endif 80235537Sgber.endfor 81235537Sgber${__target}: 82235537Sgber ${_+_}cd ${.CURDIR}; ${MAKE} build${__target}; ${MAKE} install${__target} 83235537Sgber.endfor 84235537Sgber 85235537Sgber.if !target(install) 86235537Sgber.if !target(beforeinstall) 87235537Sgberbeforeinstall: 88235537Sgber.endif 89235537Sgber.if !target(afterinstall) 90235537Sgberafterinstall: 91235537Sgber.endif 92235537Sgberinstall: beforeinstall realinstall afterinstall 93235537Sgber.ORDER: beforeinstall realinstall afterinstall 94235537Sgber.endif 95235537Sgber