1#	$OpenBSD: bsd.obj.mk,v 1.19 2017/01/24 03:22:13 tb Exp $
2#	$NetBSD: bsd.obj.mk,v 1.9 1996/04/10 21:08:05 thorpej Exp $
3
4.if !target(obj)
5.  if defined(NOOBJ)
6obj:
7.  else
8
9.  if defined(MAKEOBJDIR)
10__objdir=	${MAKEOBJDIR}
11.  else
12__objdir=	obj
13.  endif
14
15_SUBDIRUSE:
16
17obj! _SUBDIRUSE
18	@cd ${.CURDIR}; \
19	umask ${WOBJUMASK}; \
20	here=`/bin/pwd`; bsdsrcdir=`cd ${BSDSRCDIR}; /bin/pwd`; \
21	subdir=$${here#$${bsdsrcdir}/}; \
22	if [[ `id -u` -eq 0 && ${BUILDUSER} != root ]]; then \
23		SETOWNER="chown -h ${BUILDUSER}:${WOBJGROUP}"; \
24		if [[ $$here != $$subdir ]]; then \
25			_mkdirs() { \
26				su ${BUILDUSER} -c "mkdir -p $$1"; \
27			}; \
28			MKDIRS=_mkdirs; \
29		fi; \
30	elif [[ `id` == *'('${WOBJGROUP}')'* && $$here == $$subdir ]]; then \
31		SETOWNER="chown :${WOBJGROUP}"; \
32	else \
33		SETOWNER=:; \
34	fi; \
35	[[ -z $$MKDIRS ]] && MKDIRS="mkdir -p"; \
36	if [[ $$here != $$subdir ]]; then \
37		dest=${BSDOBJDIR}/$$subdir ; \
38		echo "$$here/${__objdir} -> $$dest"; \
39		if [[ ! -L ${__objdir} || `readlink ${__objdir}` != $$dest ]]; \
40		    then \
41			[[ -e ${__objdir} ]] && rm -rf ${__objdir}; \
42			ln -sf $$dest ${__objdir}; \
43			$$SETOWNER ${__objdir}; \
44		fi; \
45		if [[ -d ${BSDOBJDIR} ]]; then \
46			[[ -d $$dest ]] || $$MKDIRS $$dest; \
47		else \
48			if [[ -e ${BSDOBJDIR} ]]; then \
49				echo "${BSDOBJDIR} is not a directory"; \
50			else \
51				echo "${BSDOBJDIR} does not exist"; \
52			fi; \
53		fi; \
54	else \
55		dest=$$here/${__objdir} ; \
56		if [[ ! -d ${__objdir} ]]; then \
57			echo "making $$dest" ; \
58			$$MKDIRS $$dest; \
59			$$SETOWNER $$dest; \
60		fi ; \
61	fi;
62.  endif
63.endif
64
65.include <bsd.own.mk>
66