bsd.subdir.mk revision 1.40 1 # $NetBSD: bsd.subdir.mk,v 1.40 2001/01/01 15:27:31 sommerfeld 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 .if defined(DESTDIR) && exists(${DESTDIR}/usr/share/mk/sys.mk)
22 _M=-m ${DESTDIR}/usr/share/mk
23 .else
24 _M=
25 .endif
26
27 __recurse: .USE
28 @targ=${.TARGET:C/-.*$//};dir=${.TARGET:C/^[^-]*-//}; \
29 case "$$dir" in /*) \
30 echo "$$targ ===> $$dir"; \
31 cd "$$dir"; \
32 ${MAKE} ${_M} "_THISDIR_=$$dir/" $$targ; \
33 ;; \
34 *) \
35 echo "$$targ ===> ${_THISDIR_}$$dir"; \
36 cd "${.CURDIR}/$$dir"; \
37 ${MAKE} ${_M} "_THISDIR_=${_THISDIR_}$$dir/" $$targ; \
38 ;; \
39 esac
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 ${TARGETS}
44 .for dir in ${__REALSUBDIR}
45 __TARGDIR := ${dir}
46 .if ${__TARGDIR} == ".WAIT"
47 SUBDIR_${targ} += .WAIT
48 .else
49 .PHONY: ${targ}-${dir}
50 ${targ}-${dir}: .MAKE __recurse
51 subdir-${targ}: ${targ}-${dir}
52 .endif
53 .endfor
54 .if defined(__REALSUBDIR)
55 ${targ}: subdir-${targ}
56 .endif
57 .endfor
58
59 # Make sure all of the standard targets are defined, even if they do nothing.
60 ${TARGETS}:
61