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