bsd.obj.mk revision 1.50
1#	$NetBSD: bsd.obj.mk,v 1.50 2016/12/08 03:25:35 christos Exp $
2
3.if !defined(_BSD_OBJ_MK_)
4_BSD_OBJ_MK_=1
5
6.include <bsd.own.mk>
7
8__curdir:=	${.CURDIR}
9
10.if ${MKOBJ} == "no"
11obj:
12.else
13.if defined(MAKEOBJDIRPREFIX) || defined(MAKEOBJDIR)
14.if defined(MAKEOBJDIRPREFIX)
15__objdir:= ${MAKEOBJDIRPREFIX}${__curdir}
16.else
17__objdir:= ${MAKEOBJDIR}
18.endif
19# MAKEOBJDIR and MAKEOBJDIRPREFIX are env variables supported
20# by make(1).  We simply mkdir -p the specified path.
21# If that fails - we do a mkdir to get the appropriate error message
22# before bailing out.
23obj:
24.if defined(MAKEOBJDIRPREFIX)
25	@if [ ! -d ${MAKEOBJDIRPREFIX} ]; then \
26		echo "MAKEOBJDIRPREFIX ${MAKEOBJDIRPREFIX} does not exist, bailing..."; \
27		exit 1; \
28	fi;
29.endif
30	@if [ ! -d ${__objdir} ]; then \
31		mkdir -p ${__objdir}; \
32		if [ ! -d ${__objdir} ]; then \
33			mkdir ${__objdir}; exit 1; \
34		fi; \
35		${_MKSHMSG} " objdir  ${__objdir}"; \
36	fi
37.else
38PAWD?=		/bin/pwd
39
40__objdirsuffix=	${OBJMACHINE:D.${MACHINE}}
41__objdir=	obj${__objdirsuffix}
42
43__usrobjdir=	${BSDOBJDIR}${USR_OBJMACHINE:D.${MACHINE}}
44__usrobjdirpf=	${USR_OBJMACHINE:D:U${__objdirsuffix}}
45
46.if defined(BUILDID)
47__objdir:=	${__objdir}.${BUILDID}
48__usrobjdirpf:=	${__usrobjdirpf}.${BUILDID}
49__need_objdir_target=yes
50.endif
51
52.if defined(OBJHOSTMACHINE) && (${MKHOSTOBJ:Uno} != "no")
53# In case .CURDIR has been twiddled by a .mk file and is now relative,
54# make it absolute again.
55.if ${__curdir:M/*} == ""
56__curdir!=	cd "${__curdir}" && ${PAWD}
57.endif
58
59__objdir:=	${__objdir}.${HOST_OSTYPE}
60__usrobjdirpf:=	${__usrobjdirpf}.${HOST_OSTYPE}
61__need_objdir_target=yes
62.endif
63
64.if defined(__need_objdir_target)
65# Get make to change its internal definition of .OBJDIR
66.OBJDIR:	${__objdir}
67.endif
68
69obj:
70	@cd "${__curdir}"; \
71	here=`${PAWD}`/; subdir=$${here#${BSDSRCDIR}/}; \
72	if [ "$$here" != "$$subdir" ]; then \
73		if [ ! -d ${__usrobjdir} ]; then \
74			echo "BSDOBJDIR ${__usrobjdir} does not exist, bailing..."; \
75			exit 1; \
76		fi; \
77		subdir=$${subdir%/}; \
78		dest=${__usrobjdir}/$$subdir${__usrobjdirpf}; \
79		if  [ -x ${TOOL_STAT} ] && \
80		    ttarg=`${TOOL_STAT} -qf '%Y' $${here}${__objdir}` && \
81		    [ "$$dest" = "$$ttarg" ]; then \
82			: ; \
83		else \
84			${_MKSHMSG} " objdir  $$dest"; \
85			rm -rf ${__objdir}; \
86			ln -s $$dest ${__objdir}; \
87		fi; \
88		if [ ! -d $$dest ]; then \
89			mkdir -p $$dest; \
90		else \
91			true; \
92		fi; \
93	else \
94		true ; \
95		dest=$${here}${__objdir} ; \
96		if [ ! -d ${__objdir} ] || [ -h ${__objdir} ]; then \
97			${_MKSHMSG} " objdir  $$dest"; \
98			rm -f ${__objdir}; \
99			mkdir $$dest; \
100		fi ; \
101	fi;
102.endif
103.endif
104
105print-objdir:
106	@echo ${.OBJDIR}
107
108.include <bsd.sys.mk>
109
110.endif	# !defined(_BSD_OBJ_MK_)
111