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