1246149Ssjg# $Id: obj.mk,v 1.15 2012/11/11 22:37:02 sjg Exp $
2246149Ssjg#
3246149Ssjg#	@(#) Copyright (c) 1999-2010, Simon J. Gerraty
4246149Ssjg#
5246149Ssjg#	This file is provided in the hope that it will
6246149Ssjg#	be of use.  There is absolutely NO WARRANTY.
7246149Ssjg#	Permission to copy, redistribute or otherwise
8246149Ssjg#	use this file is hereby granted provided that 
9246149Ssjg#	the above copyright notice and this notice are
10246149Ssjg#	left intact. 
11246149Ssjg#      
12246149Ssjg#	Please send copies of changes and bug-fixes to:
13246149Ssjg#	sjg@crufty.net
14246149Ssjg#
15246149Ssjg
16246149Ssjg.if !target(__${.PARSEFILE:S,bsd.,,}__)
17246149Ssjg__${.PARSEFILE:S,bsd.,,}__:
18246149Ssjg
19246149Ssjg.include <init.mk>
20246149Ssjg
21246149SsjgECHO_TRACE ?= echo
22246149Ssjg
23246149Ssjg.if ${MK_OBJDIRS} == "no"
24246149Ssjgobj:
25246149Ssjgobjlink:
26246149Ssjgobjwarn:
27246149Ssjg.else
28246149Ssjg
29246149Ssjg# this has to match how make behaves
30246149Ssjg.if defined(MAKEOBJDIRPREFIX) || defined(MAKEOBJDIR)
31246149Ssjg.if defined(MAKEOBJDIRPREFIX)
32246149Ssjg__objdir:= ${MAKEOBJDIRPREFIX}${.CURDIR}
33246149Ssjg.else
34246149Ssjg__objdir:= ${MAKEOBJDIR}
35246149Ssjg.endif
36246149Ssjg.else
37246149Ssjg__objdir= ${__objlink}
38246149Ssjg.endif
39246149Ssjg
40246149Ssjg.if defined(OBJMACHINE)
41246149Ssjg__objlink=	obj.${MACHINE}
42246149Ssjg.else
43246149Ssjg__objlink=	obj
44246149Ssjg.endif
45246149Ssjg
46246149Ssjg.if ${MK_AUTO_OBJ} == "yes"
47246149Ssjg.-include "auto.obj.mk"
48246149Ssjg.endif
49246149Ssjg
50246149Ssjg.NOPATH:	${__objdir}
51246149Ssjg.PHONY:		obj
52246149Ssjg
53246149Ssjgobj: _SUBDIRUSE
54246149Ssjg	@if test ! -d ${__objdir}/.; then \
55246149Ssjg		mkdir -p ${__objdir}; \
56246149Ssjg		if test ! -d ${__objdir}; then \
57246149Ssjg			mkdir ${__objdir}; exit 1; \
58246149Ssjg		fi; \
59246149Ssjg		${ECHO_TRACE} "[Creating objdir ${__objdir}...]" >&2; \
60246149Ssjg	fi
61246149Ssjg
62246149Ssjg.if !target(_SUBDIRUSE)
63246149Ssjg# this just allows us to be included by ourselves
64246149Ssjg_SUBDIRUSE:
65246149Ssjg.endif
66246149Ssjg
67246149Ssjg# so we can interact with freebsd makefiles
68246149Ssjg.if !target(objwarn)
69246149Ssjgobjwarn:
70246149Ssjg.if ${.OBJDIR} == ${.CURDIR}
71246149Ssjg	@echo "Warning Object directory is ${.CURDIR}"
72246149Ssjg.elif ${.OBJDIR} != ${__objdir}
73246149Ssjg	@echo "Warning Object directory is ${.OBJDIR} vs. ${__objdir}"
74246149Ssjg.endif
75246149Ssjg.endif
76246149Ssjg
77246149Ssjg.if !target(objlink)
78246149Ssjgobjlink:
79246149Ssjg.if ${__objdir:T} != ${__objlink}
80246149Ssjg	@if test -d ${__objdir}/.; then \
81246149Ssjg		${RM} -f ${.CURDIR}/${__objlink}; \
82246149Ssjg		${LN} -s ${__objdir} ${.CURDIR}/${__objlink}; \
83246149Ssjg		echo "${__objlink} -> ${__objdir}"; \
84246149Ssjg	else \
85246149Ssjg		echo "No ${__objdir} to link to - do a 'make obj'"; \
86246149Ssjg	fi
87246149Ssjg.endif
88246149Ssjg.endif
89246149Ssjg.endif
90246149Ssjg
91246149Ssjg_CURDIR?= ${.CURDIR}
92246149Ssjg_OBJDIR?= ${.OBJDIR}
93246149Ssjg
94246149Ssjg.if !target(print-objdir)
95246149Ssjgprint-objdir:
96246149Ssjg	@echo ${_OBJDIR}
97246149Ssjg.endif
98246149Ssjg
99246149Ssjg.if !target(whereobj)
100246149Ssjgwhereobj:
101246149Ssjg	@echo ${_OBJDIR}
102246149Ssjg.endif
103246149Ssjg
104246149Ssjg.if !target(destroy)
105246149Ssjg.if ${.CURDIR} != ${.OBJDIR}
106246149Ssjgdestroy:
107246149Ssjg	(cd ${_CURDIR} && rm -rf ${_OBJDIR})
108246149Ssjg.else
109246149Ssjgdestroy:  clean
110246149Ssjg.endif
111246149Ssjg.endif
112246149Ssjg
113246149Ssjg.endif
114