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