123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- #
- # OS/161 build environment: recurse into subdirectories
- #
- # Usage:
- # TOP=../..
- # .include "$(TOP)/mk/os161.config.mk"
- # [defs go here]
- # .include "$(TOP)/mk/os161.subdir.mk"
- # [any extra rules go here]
- #
- # Variables controlling this file:
- #
- # SUBDIRS Directories to recurse into.
- # EXTRATARGETS Additional targets to define.
- #
- # BASETARGETS may also be set to empty to suppress the usual targets.
- #
- # Note: SUBDIRS may contain .WAIT, which is treated as a parallelism
- # barrier like in the right hand side of a make rule.
- #
- # Further note: if combining os161.subdir.mk with other os161.*.mk
- # files (other than os161.config.mk), include os161.subdir.mk first;
- # then the ordering of things will cause recursion to happen
- # first. Also, .WAIT is inserted so that the recursion will finish
- # before anything else happens, which is almost always desirable.
- #
- BASETARGETS?=\
- all depend install install-staging clean distclean tags \
- cleandir stage dependall build rebuild fullrebuild
- # first, make each target depend on its -subdirs target,
- # and declare both PHONY.
- .for _T_ in $(BASETARGETS) $(EXTRATARGETS)
- $(_T_): $(_T_)-subdirs .WAIT
- .PHONY: $(_T_) $(_T_)-subdirs
- .endfor
- # now, make each -subdirs target depend on a rule for each subdir.
- .for _D_ in $(SUBDIRS)
- .for _T_ in $(BASETARGETS) $(EXTRATARGETS)
- .if "$(_D_)" == ".WAIT"
- $(_T_)-subdirs: .WAIT
- .else
- $(_T_)-subdirs: $(_T_)-subdirs-$(_D_)
- .PHONY: $(_T_)-subdirs-$(_D_)
- $(_T_)-subdirs-$(_D_):
- (cd $(_D_) && $(MAKE) $(_T_))
- .endif
- .endfor
- .endfor
|