summaryrefslogtreecommitdiff
path: root/devel/bmake/files/mk/subdir.mk
blob: d2684f907dde8ff3169f519e9f409126749422cb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#	$Id: subdir.mk,v 1.1.1.1 2020/05/24 05:35:53 nia Exp $
#	skip missing directories...

#	$NetBSD: subdir.mk,v 1.1.1.1 2020/05/24 05:35:53 nia Exp $
#	@(#)bsd.subdir.mk	5.9 (Berkeley) 2/1/91

.if ${.MAKE.LEVEL} == 0 && ${.MAKE.MODE:Uno:Mmeta*} != ""
.include <meta.subdir.mk>
# keep everyone happy
_SUBDIRUSE:
.elif !commands(_SUBDIRUSE) && !defined(NO_SUBDIR) && !defined(NOSUBDIR)
.-include <${.CURDIR}/Makefile.inc>
.if !target(.MAIN)
.MAIN: all
.endif

ECHO_DIR ?= echo
.ifdef SUBDIR_MUST_EXIST
MISSING_DIR=echo "Missing ===> ${.CURDIR}/$${entry}"; exit 1
.else
MISSING_DIR=echo "Skipping ===> ${.CURDIR}/$${entry}"; continue
.endif

_SUBDIRUSE: .USE
.if defined(SUBDIR)
	@Exists() { test -f $$1; }; \
	for entry in ${SUBDIR}; do \
		(set -e; \
		if Exists ${.CURDIR}/$${entry}.${MACHINE}/[mM]akefile; then \
			_newdir_="$${entry}.${MACHINE}"; \
		elif  Exists ${.CURDIR}/$${entry}/[mM]akefile; then \
			_newdir_="$${entry}"; \
		else \
			${MISSING_DIR}; \
		fi; \
		if test X"${_THISDIR_}" = X""; then \
			_nextdir_="$${_newdir_}"; \
		else \
			_nextdir_="$${_THISDIR_}/$${_newdir_}"; \
		fi; \
		${ECHO_DIR} "===> $${_nextdir_}"; \
		cd ${.CURDIR}/$${_newdir_}; \
		${.MAKE} _THISDIR_="$${_nextdir_}" \
		    ${.TARGET:S/realinstall/install/:S/.depend/depend/}) || exit 1; \
	done

${SUBDIR}::
	@set -e; _r=${.CURDIR}/; \
	if test -z "${.TARGET:M/*}"; then \
		if test -d ${.CURDIR}/${.TARGET}.${MACHINE}; then \
			_newdir_=${.TARGET}.${MACHINE}; \
		else \
			_newdir_=${.TARGET}; \
		fi; \
	else \
		_r= _newdir_=${.TARGET}; \
	fi; \
	${ECHO_DIR} "===> $${_newdir_}"; \
	cd $${_r}$${_newdir_}; \
	${.MAKE} _THISDIR_="$${_newdir_}" all
.endif

.if !target(install)
.if !target(beforeinstall)
beforeinstall:
.endif
.if !target(afterinstall)
afterinstall:
.endif
install: maninstall
maninstall: afterinstall
afterinstall: realinstall
realinstall: beforeinstall _SUBDIRUSE
.endif

.if defined(SRCS)
etags: ${SRCS}
	-cd ${.CURDIR}; etags `echo ${.ALLSRC:N*.h} | sed 's;${.CURDIR}/;;'`
.endif

SUBDIR_TARGETS += \
	all \
	clean \
	cleandir \
	includes \
	depend \
	lint \
	obj \
	tags \
	etags

.for t in ${SUBDIR_TARGETS:O:u}
$t: _SUBDIRUSE
.endfor

.include <own.mk>
.if make(destroy*)
.include <obj.mk>
.endif
.endif
# make sure this exists
all: