1# $NetBSD: bsd.obj.mk,v 1.40 2002/03/14 18:26:32 thorpej 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 defined(MAKEOBJDIRPREFIX) 24 @if [ ! -d ${MAKEOBJDIRPREFIX} ]; then \ 25 echo "MAKEOBJDIRPREFIX ${MAKEOBJDIRPREFIX} does not exist, bailing..."; \ 26 exit 1; \ 27 fi; 28.endif 29 @if [ ! -d ${__objdir} ]; then \ 30 mkdir -p ${__objdir}; \ 31 if [ ! -d ${__objdir} ]; then \ 32 mkdir ${__objdir}; exit 1; \ 33 fi; \ 34 echo "${__curdir} -> ${__objdir}"; \ 35 fi 36.else 37PAWD?= /bin/pwd 38 39__objdir= obj${OBJMACHINE:D.${MACHINE}} 40 41__usrobjdir= ${BSDOBJDIR}${USR_OBJMACHINE:D.${MACHINE}} 42__usrobjdirpf= ${USR_OBJMACHINE:D:U${OBJMACHINE:D.${MACHINE}}} 43 44.if defined(BUILDID) 45__objdir:= ${__objdir}.${BUILDID} 46__usrobjdirpf:= ${__usrobjdirpf}.${BUILDID} 47__need_objdir_target=yes 48.endif 49 50.if defined(OBJHOSTMACHINE) && (${MKHOSTOBJ:Uno} != "no") 51# In case .CURDIR has been twiddled by a .mk file and is now relative, 52# make it absolute again. 53.if ${__curdir:M/*} == "" 54__curdir!= cd ${__curdir} && ${PAWD} 55.endif 56 57__objdir:= ${__objdir}.${HOST_OSTYPE} 58__usrobjdirpf:= ${__usrobjdirpf}.${HOST_OSTYPE} 59__need_objdir_target=yes 60.endif 61 62.if defined(__need_objdir_target) 63.OBJDIR: ${__objdir} 64.endif 65 66obj: 67 @cd ${__curdir}; \ 68 here=`${PAWD}`/; subdir=$${here#${BSDSRCDIR}/}; \ 69 if [ "$$here" != "$$subdir" ]; then \ 70 if [ ! -d ${__usrobjdir} ]; then \ 71 echo "BSDOBJDIR ${__usrobjdir} does not exist, bailing..."; \ 72 exit 1; \ 73 fi; \ 74 subdir=$${subdir%/}; \ 75 dest=${__usrobjdir}/$$subdir${__usrobjdirpf}; \ 76 if [ -h $${here}${__objdir} ]; then \ 77 curtarg=`ls -ld $${here}${__objdir} | awk '{print $$NF}'` ; \ 78 if [ "$$curtarg" = "$$dest" ]; then \ 79 : ; \ 80 else \ 81 echo "$${here}${__objdir} -> $$dest"; \ 82 rm -rf ${__objdir}; \ 83 ln -s $$dest ${__objdir}; \ 84 fi; \ 85 else \ 86 echo "$${here}${__objdir} -> $$dest"; \ 87 rm -rf ${__objdir}; \ 88 ln -s $$dest ${__objdir}; \ 89 fi; \ 90 if [ ! -d $$dest ]; then \ 91 mkdir -p $$dest; \ 92 else \ 93 true; \ 94 fi; \ 95 else \ 96 true ; \ 97 dest=$${here}${__objdir} ; \ 98 if [ ! -d ${__objdir} ] || [ -h ${__objdir} ]; then \ 99 echo "making $$dest" ; \ 100 rm -f ${__objdir}; \ 101 mkdir $$dest; \ 102 fi ; \ 103 fi; 104.endif 105.endif 106 107print-objdir: 108 @echo ${.OBJDIR} 109.endif 110