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