bsd.obj.mk revision 1.24
1#	$NetBSD: bsd.obj.mk,v 1.24 2000/02/18 06:09:11 itohy Exp $
2
3.if !target(__initialized_obj__)
4__initialized_obj__:
5.include <bsd.own.mk>
6.endif
7
8.if ${MKOBJ} == "no"
9obj:
10.else
11.if defined(MAKEOBJDIRPREFIX) || defined(MAKEOBJDIR)
12.if defined(MAKEOBJDIRPREFIX)
13__objdir:= ${MAKEOBJDIRPREFIX}${.CURDIR}
14.else
15__objdir:= ${MAKEOBJDIR}
16.endif
17# MAKEOBJDIR and MAKEOBJDIRPREFIX are env variables supported
18# by make(1).  We simply mkdir -p the specified path.
19# If that fails - we do a mkdir to get the appropriate error message
20# before bailing out.
21obj:
22	@if ! test -d ${__objdir}; then \
23		mkdir -p ${__objdir}; \
24		if ! test -d ${__objdir}; then \
25			mkdir ${__objdir}; exit 1; \
26		fi; \
27		echo "${.CURDIR} -> ${__objdir}"; \
28	fi
29.else
30.if defined(OBJMACHINE)
31__objdir=	obj.${MACHINE}
32.else
33__objdir=	obj
34.endif
35
36.if defined(USR_OBJMACHINE)
37__usrobjdir=	${BSDOBJDIR}.${MACHINE}
38__usrobjdirpf=	
39.else
40__usrobjdir=	${BSDOBJDIR}
41.if defined(OBJMACHINE)
42__usrobjdirpf=	.${MACHINE}
43.else
44__usrobjdirpf=
45.endif
46.endif
47
48PAWD?=		/bin/pwd
49
50obj:
51	@cd ${.CURDIR}; \
52	here=`${PAWD}`; subdir=$${here#${BSDSRCDIR}/}; \
53	if test $$here != $$subdir ; then \
54		dest=${__usrobjdir}/$$subdir${__usrobjdirpf} ; \
55		if [ -L $$here/${__objdir} ]; then \
56			curtarg=`ls -ld $$here/${__objdir} | awk '{print $$NF}'` ; \
57			if [ "$$curtarg" = "$$dest" ]; then \
58				: ; \
59			else \
60				echo "$$here/${__objdir} -> $$dest"; \
61				rm -rf ${__objdir}; \
62				ln -s $$dest ${__objdir}; \
63			fi; \
64		else \
65			echo "$$here/${__objdir} -> $$dest"; \
66			rm -rf ${__objdir}; \
67			ln -s $$dest ${__objdir}; \
68		fi; \
69		if test -d ${__usrobjdir} -a ! -d $$dest; then \
70			mkdir -p $$dest; \
71		else \
72			true; \
73		fi; \
74	else \
75		true ; \
76		dest=$$here/${__objdir} ; \
77		if test ! -d ${__objdir} || test -L ${__objdir}; then \
78			echo "making $$dest" ; \
79			rm -f ${__objdir}; \
80			mkdir $$dest; \
81		fi ; \
82	fi;
83.endif
84.endif
85
86print-objdir:
87	@echo ${.OBJDIR}
88