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