Home | History | Annotate | Line # | Download | only in mk
bsd.subdir.mk revision 1.44
      1 #	$NetBSD: bsd.subdir.mk,v 1.44 2001/09/22 05:01:26 tv Exp $
      2 #	@(#)bsd.subdir.mk	8.1 (Berkeley) 6/8/93
      3 
      4 .if !target(__initialized__)
      5 __initialized__:
      6 .if exists(${.CURDIR}/../Makefile.inc)
      7 .include "${.CURDIR}/../Makefile.inc"
      8 .endif
      9 .include <bsd.own.mk>
     10 .MAIN:		all
     11 .endif
     12 
     13 .for dir in ${SUBDIR}
     14 .if exists(${dir}.${MACHINE})
     15 __REALSUBDIR+=${dir}.${MACHINE}
     16 .else
     17 __REALSUBDIR+=${dir}
     18 .endif
     19 .endfor
     20 
     21 __recurse: .USE
     22 	@targ=${.TARGET:C/-.*$//};dir=${.TARGET:C/^[^-]*-//};		\
     23 	case "$$dir" in /*)						\
     24 		echo "$$targ ===> $$dir";				\
     25 		cd "$$dir";						\
     26 		${MAKE} "_THISDIR_=$$dir/" $$targ;			\
     27 		;;							\
     28 	*)								\
     29 		echo "$$targ ===> ${_THISDIR_}$$dir";			\
     30 		cd "${.CURDIR}/$$dir";					\
     31 		${MAKE} "_THISDIR_=${_THISDIR_}$$dir/" $$targ;		\
     32 		;;							\
     33 	esac
     34 
     35 .if make(cleandir)
     36 __RECURSETARG=	${TARGETS:Nclean}
     37 .else
     38 __RECURSETARG=	${TARGETS}
     39 .endif
     40 
     41 # for obscure reasons, we can't do a simple .if ${dir} == ".WAIT"
     42 # but have to assign to __TARGDIR first.
     43 .for targ in ${__RECURSETARG}
     44 .for dir in ${__REALSUBDIR}
     45 __TARGDIR := ${dir}
     46 .if ${__TARGDIR} == ".WAIT"
     47 SUBDIR_${targ} += .WAIT
     48 .elif !commands(${targ}-${dir})
     49 .PHONY: ${targ}-${dir}
     50 ${targ}-${dir}: .MAKE __recurse
     51 SUBDIR_${targ} += ${targ}-${dir}
     52 .endif
     53 .endfor
     54 .if defined(__REALSUBDIR)
     55 .PHONY: subdir-${targ}
     56 subdir-${targ}: ${SUBDIR_${targ}}
     57 ${targ}: subdir-${targ}
     58 .endif
     59 .endfor
     60 
     61 # Make sure all of the standard targets are defined, even if they do nothing.
     62 ${TARGETS}:
     63