52 lines
1.5 KiB
Makefile
52 lines
1.5 KiB
Makefile
#
|
|
# 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
|