1# $MirOS: src/share/mk/bsd.obj.mk,v 1.9 2008/07/11 11:33:20 tg Exp $
2# $OpenBSD: bsd.obj.mk,v 1.12 2003/10/28 17:09:33 espie Exp $
3# $NetBSD: bsd.obj.mk,v 1.9 1996/04/10 21:08:05 thorpej Exp $
4
5.if !defined(BSD_OBJ_MK)
6BSD_OBJ_MK=1
7
8.if !defined(BSD_OWN_MK)
9.  include <bsd.own.mk>
10.endif
11
12.if !target(obj)
13.  if ${NOOBJ:L} != "no"
14obj:
15.  else
16
17.    if defined(MAKEOBJDIR) && !empty(MAKEOBJDIR)
18__baseobjdir=	${MAKEOBJDIR}
19.    else
20__baseobjdir=	obj
21.    endif
22
23.    if defined(OBJMACHINE)
24__objdir=	${__baseobjdir}.${MACHINE}
25.    else
26__objdir=	${__baseobjdir}
27.    endif
28
29.    if defined(USR_OBJMACHINE)
30__usrobjdir!=	realpath ${BSDOBJDIR}.${MACHINE} 2>&- || \
31		    print -nr -- ${BSDOBJDIR:Q}.${MACHINE:Q}
32__usrobjdirpf=
33.    else
34__usrobjdir!=	realpath ${BSDOBJDIR} 2>&- || print -nr -- ${BSDOBJDIR:Q}
35.      if defined(OBJMACHINE)
36__usrobjdirpf=	.${MACHINE}
37.      else
38__usrobjdirpf=
39.      endif
40.    endif
41
42_SUBDIRUSE:
43
44obj! _SUBDIRUSE
45	@cd ${.CURDIR}; \
46	tryobjdir=0; here=.; \
47	if bsdsrcdir=$$(realpath ${BSDSRCDIR} 2>&-); then \
48		here=$$(realpath .); \
49		subdir=$${here#$${bsdsrcdir}/}; \
50		[[ $$here = $$subdir ]] || tryobjdir=1; \
51	fi; \
52	if [[ $$tryobjdir = 1 ]]; then \
53		dest=${__usrobjdir}/$$subdir${__usrobjdirpf}; \
54		print -r "$$here/${__objdir} -> $$dest"; \
55		if [[ ! -L ${__objdir} \
56		    || $$(readlink ${__objdir}) != $$dest ]]; then \
57			[[ ! -e ${__objdir} ]] || rm -rf ${__objdir}; \
58			ln -sf $$dest ${__objdir}; \
59		fi; \
60		[[ ! -d ${__usrobjdir} || -d $$dest ]] || mkdir -p $$dest; \
61	elif [[ ! -d ${__objdir} ]]; then \
62		print -r "making $$here/${__objdir}"; \
63		mkdir ${__objdir}; \
64	fi
65.  endif
66.endif	# ! not target obj
67
68.endif
69