bsd.obj.mk revision 1.31
1# $NetBSD: bsd.obj.mk,v 1.31 2001/11/11 23:07:26 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 31.if defined(OBJMACHINE) 32__objdir= obj.${MACHINE} 33.else 34__objdir= obj 35.endif 36 37.if defined(USR_OBJMACHINE) 38__usrobjdir= ${BSDOBJDIR}.${MACHINE} 39__usrobjdirpf= 40.else 41__usrobjdir= ${BSDOBJDIR} 42.if defined(OBJMACHINE) 43__usrobjdirpf= .${MACHINE} 44.else 45__usrobjdirpf= 46.endif 47.endif 48 49PAWD?= /bin/pwd 50 51obj: 52 @cd ${__curdir}; \ 53 here=`${PAWD}`/; subdir=$${here#${BSDSRCDIR}/}; \ 54 if [ "$$here" != "$$subdir" ]; then \ 55 if [ ! -d ${__usrobjdir} ]; then \ 56 echo "BSDOBJDIR ${__usrobjdir} does not exist, bailing..."; \ 57 exit 1; \ 58 fi; \ 59 subdir=$${subdir%/}; \ 60 dest=${__usrobjdir}/$$subdir${__usrobjdirpf}; \ 61 if [ -h $${here}${__objdir} ]; then \ 62 curtarg=`ls -ld $${here}${__objdir} | awk '{print $$NF}'` ; \ 63 if [ "$$curtarg" = "$$dest" ]; then \ 64 : ; \ 65 else \ 66 echo "$${here}${__objdir} -> $$dest"; \ 67 rm -rf ${__objdir}; \ 68 ln -s $$dest ${__objdir}; \ 69 fi; \ 70 else \ 71 echo "$${here}${__objdir} -> $$dest"; \ 72 rm -rf ${__objdir}; \ 73 ln -s $$dest ${__objdir}; \ 74 fi; \ 75 if [ ! -d $$dest ]; then \ 76 mkdir -p $$dest; \ 77 else \ 78 true; \ 79 fi; \ 80 else \ 81 true ; \ 82 dest=$${here}${__objdir} ; \ 83 if [ ! -d ${__objdir} ] || [ -h ${__objdir} ]; then \ 84 echo "making $$dest" ; \ 85 rm -f ${__objdir}; \ 86 mkdir $$dest; \ 87 fi ; \ 88 fi; 89.endif 90.endif 91 92print-objdir: 93 @echo ${.OBJDIR} 94.endif 95