bsd.obj.mk revision 1.32
1#	$NetBSD: bsd.obj.mk,v 1.32 2001/11/11 23:19:14 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
31PAWD?=		/bin/pwd
32
33__objdir=	obj${OBJMACHINE:D.${MACHINE}}
34
35.if defined(USR_OBJMACHINE)
36__usrobjdir=	${BSDOBJDIR}.${MACHINE}
37__usrobjdirpf=	
38.else
39__usrobjdir=	${BSDOBJDIR}
40__usrobjdirpf=	${OBJMACHINE:D.${MACHINE}}
41.endif
42
43.if defined(OBJMACHINE) && defined(OBJHOSTMACHINE)
44# In case .CURDIR has been twiddled by a .mk file and is now relative,
45# make it absolute again.
46.if ${.CURDIR:M/*} == ""
47.CURDIR!=	${PAWD}
48.endif
49
50__objdir:=	${__objdir}.${HOST_OSTYPE}
51__usrobjdirpf:=	${__usrobjdirpf}.${HOST_OSTYPE}
52.OBJDIR:	${__objdir}
53.endif
54
55obj:
56	@cd ${__curdir}; \
57	here=`${PAWD}`/; subdir=$${here#${BSDSRCDIR}/}; \
58	if [ "$$here" != "$$subdir" ]; then \
59		if [ ! -d ${__usrobjdir} ]; then \
60			echo "BSDOBJDIR ${__usrobjdir} does not exist, bailing..."; \
61			exit 1; \
62		fi; \
63		subdir=$${subdir%/}; \
64		dest=${__usrobjdir}/$$subdir${__usrobjdirpf}; \
65		if [ -h $${here}${__objdir} ]; then \
66			curtarg=`ls -ld $${here}${__objdir} | awk '{print $$NF}'` ; \
67			if [ "$$curtarg" = "$$dest" ]; then \
68				: ; \
69			else \
70				echo "$${here}${__objdir} -> $$dest"; \
71				rm -rf ${__objdir}; \
72				ln -s $$dest ${__objdir}; \
73			fi; \
74		else \
75			echo "$${here}${__objdir} -> $$dest"; \
76			rm -rf ${__objdir}; \
77			ln -s $$dest ${__objdir}; \
78		fi; \
79		if [ ! -d $$dest ]; then \
80			mkdir -p $$dest; \
81		else \
82			true; \
83		fi; \
84	else \
85		true ; \
86		dest=$${here}${__objdir} ; \
87		if [ ! -d ${__objdir} ] || [ -h ${__objdir} ]; then \
88			echo "making $$dest" ; \
89			rm -f ${__objdir}; \
90			mkdir $$dest; \
91		fi ; \
92	fi;
93.endif
94.endif
95
96print-objdir:
97	@echo ${.OBJDIR}
98.endif
99