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