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