bsd.obj.mk revision 1.46
1# $NetBSD: bsd.obj.mk,v 1.46 2003/12/04 12:15:20 lukem Exp $ 2 3.if !defined(_BSD_OBJ_MK_) 4_BSD_OBJ_MK_=1 5 6.include <bsd.own.mk> 7 8__curdir:= ${.CURDIR} 9 10.if ${MKOBJ} == "no" 11obj: 12.else 13.if defined(MAKEOBJDIRPREFIX) || defined(MAKEOBJDIR) 14.if defined(MAKEOBJDIRPREFIX) 15__objdir:= ${MAKEOBJDIRPREFIX}${__curdir} 16.else 17__objdir:= ${MAKEOBJDIR} 18.endif 19# MAKEOBJDIR and MAKEOBJDIRPREFIX are env variables supported 20# by make(1). We simply mkdir -p the specified path. 21# If that fails - we do a mkdir to get the appropriate error message 22# before bailing out. 23obj: 24.if defined(MAKEOBJDIRPREFIX) 25 @if [ ! -d ${MAKEOBJDIRPREFIX} ]; then \ 26 echo "MAKEOBJDIRPREFIX ${MAKEOBJDIRPREFIX} does not exist, bailing..."; \ 27 exit 1; \ 28 fi; 29.endif 30 @if [ ! -d ${__objdir} ]; then \ 31 mkdir -p ${__objdir}; \ 32 if [ ! -d ${__objdir} ]; then \ 33 mkdir ${__objdir}; exit 1; \ 34 fi; \ 35 ${_MKSHMSG} " objdir ${__objdir}"; \ 36 fi 37.else 38PAWD?= /bin/pwd 39 40__objdir= obj${OBJMACHINE:D.${MACHINE}} 41 42__usrobjdir= ${BSDOBJDIR}${USR_OBJMACHINE:D.${MACHINE}} 43__usrobjdirpf= ${USR_OBJMACHINE:D:U${OBJMACHINE:D.${MACHINE}}} 44 45.if defined(BUILDID) 46__objdir:= ${__objdir}.${BUILDID} 47__usrobjdirpf:= ${__usrobjdirpf}.${BUILDID} 48__need_objdir_target=yes 49.endif 50 51.if defined(OBJHOSTMACHINE) && (${MKHOSTOBJ:Uno} != "no") 52# In case .CURDIR has been twiddled by a .mk file and is now relative, 53# make it absolute again. 54.if ${__curdir:M/*} == "" 55__curdir!= cd ${__curdir} && ${PAWD} 56.endif 57 58__objdir:= ${__objdir}.${HOST_OSTYPE} 59__usrobjdirpf:= ${__usrobjdirpf}.${HOST_OSTYPE} 60__need_objdir_target=yes 61.endif 62 63.if defined(__need_objdir_target) 64.OBJDIR: ${__objdir} 65.endif 66 67obj: 68 @cd ${__curdir}; \ 69 here=`${PAWD}`/; subdir=$${here#${BSDSRCDIR}/}; \ 70 if [ "$$here" != "$$subdir" ]; then \ 71 if [ ! -d ${__usrobjdir} ]; then \ 72 echo "BSDOBJDIR ${__usrobjdir} does not exist, bailing..."; \ 73 exit 1; \ 74 fi; \ 75 subdir=$${subdir%/}; \ 76 dest=${__usrobjdir}/$$subdir${__usrobjdirpf}; \ 77 if [ -x ${TOOL_STAT} ] && \ 78 ttarg=`${TOOL_STAT} -qf '%Y' $${here}${__objdir}` && \ 79 [ "$$dest" = "$$ttarg" ]; then \ 80 : ; \ 81 else \ 82 ${_MKSHMSG} " objdir $$dest"; \ 83 rm -rf ${__objdir}; \ 84 ln -s $$dest ${__objdir}; \ 85 fi; \ 86 if [ ! -d $$dest ]; then \ 87 mkdir -p $$dest; \ 88 else \ 89 true; \ 90 fi; \ 91 else \ 92 true ; \ 93 dest=$${here}${__objdir} ; \ 94 if [ ! -d ${__objdir} ] || [ -h ${__objdir} ]; then \ 95 ${_MKSHMSG} " objdir $$dest"; \ 96 rm -f ${__objdir}; \ 97 mkdir $$dest; \ 98 fi ; \ 99 fi; 100.endif 101.endif 102 103print-objdir: 104 @echo ${.OBJDIR} 105 106.include <bsd.sys.mk> 107 108.endif # !defined(_BSD_OBJ_MK_) 109