bsd.obj.mk revision 1.28
1# $NetBSD: bsd.obj.mk,v 1.28 2001/08/14 09:30:48 tv Exp $ 2 3.if !target(__initialized_obj__) 4__initialized_obj__: 5.include <bsd.own.mk> 6 7.if ${MKOBJ} == "no" 8obj: 9.else 10.if defined(MAKEOBJDIRPREFIX) || defined(MAKEOBJDIR) 11.if defined(MAKEOBJDIRPREFIX) 12__objdir:= ${MAKEOBJDIRPREFIX}${.CURDIR} 13.else 14__objdir:= ${MAKEOBJDIR} 15.endif 16# MAKEOBJDIR and MAKEOBJDIRPREFIX are env variables supported 17# by make(1). We simply mkdir -p the specified path. 18# If that fails - we do a mkdir to get the appropriate error message 19# before bailing out. 20obj: 21 @if test ! -d ${__objdir}; then \ 22 mkdir -p ${__objdir}; \ 23 if test ! -d ${__objdir}; then \ 24 mkdir ${__objdir}; exit 1; \ 25 fi; \ 26 echo "${.CURDIR} -> ${__objdir}"; \ 27 fi 28.else 29.if defined(OBJMACHINE) 30__objdir= obj.${MACHINE} 31.else 32__objdir= obj 33.endif 34 35.if defined(USR_OBJMACHINE) 36__usrobjdir= ${BSDOBJDIR}.${MACHINE} 37__usrobjdirpf= 38.else 39__usrobjdir= ${BSDOBJDIR} 40.if defined(OBJMACHINE) 41__usrobjdirpf= .${MACHINE} 42.else 43__usrobjdirpf= 44.endif 45.endif 46 47PAWD?= /bin/pwd 48__curdir:= ${.CURDIR} 49 50obj: 51 @cd ${__curdir}; \ 52 here=`${PAWD}`; subdir=$${here#${BSDSRCDIR}/}; \ 53 if test $$here != $$subdir ; then \ 54 if test ! -d ${__usrobjdir}; then \ 55 echo "BSDOBJDIR ${__usrobjdir} does not exist, bailing..."; \ 56 exit 1; \ 57 fi; \ 58 dest=${__usrobjdir}/$$subdir${__usrobjdirpf} ; \ 59 if [ -h $$here/${__objdir} ]; then \ 60 curtarg=`ls -ld $$here/${__objdir} | awk '{print $$NF}'` ; \ 61 if [ "$$curtarg" = "$$dest" ]; then \ 62 : ; \ 63 else \ 64 echo "$$here/${__objdir} -> $$dest"; \ 65 rm -rf ${__objdir}; \ 66 ln -s $$dest ${__objdir}; \ 67 fi; \ 68 else \ 69 echo "$$here/${__objdir} -> $$dest"; \ 70 rm -rf ${__objdir}; \ 71 ln -s $$dest ${__objdir}; \ 72 fi; \ 73 if test ! -d $$dest; then \ 74 mkdir -p $$dest; \ 75 else \ 76 true; \ 77 fi; \ 78 else \ 79 true ; \ 80 dest=$$here/${__objdir} ; \ 81 if test ! -d ${__objdir} || test -h ${__objdir}; then \ 82 echo "making $$dest" ; \ 83 rm -f ${__objdir}; \ 84 mkdir $$dest; \ 85 fi ; \ 86 fi; 87.endif 88.endif 89 90print-objdir: 91 @echo ${.OBJDIR} 92.endif 93