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