1# $NetBSD: bsd.obj.mk,v 1.49 2010/01/25 00:43:00 christos 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# Get make to change its internal definition of .OBJDIR 65.OBJDIR: ${__objdir} 66.endif 67 68obj: 69 @cd "${__curdir}"; \ 70 here=`${PAWD}`/; subdir=$${here#${BSDSRCDIR}/}; \ 71 if [ "$$here" != "$$subdir" ]; then \ 72 if [ ! -d ${__usrobjdir} ]; then \ 73 echo "BSDOBJDIR ${__usrobjdir} does not exist, bailing..."; \ 74 exit 1; \ 75 fi; \ 76 subdir=$${subdir%/}; \ 77 dest=${__usrobjdir}/$$subdir${__usrobjdirpf}; \ 78 if [ -x ${TOOL_STAT} ] && \ 79 ttarg=`${TOOL_STAT} -qf '%Y' $${here}${__objdir}` && \ 80 [ "$$dest" = "$$ttarg" ]; then \ 81 : ; \ 82 else \ 83 ${_MKSHMSG} " objdir $$dest"; \ 84 rm -rf ${__objdir}; \ 85 ln -s $$dest ${__objdir}; \ 86 fi; \ 87 if [ ! -d $$dest ]; then \ 88 mkdir -p $$dest; \ 89 else \ 90 true; \ 91 fi; \ 92 else \ 93 true ; \ 94 dest=$${here}${__objdir} ; \ 95 if [ ! -d ${__objdir} ] || [ -h ${__objdir} ]; then \ 96 ${_MKSHMSG} " objdir $$dest"; \ 97 rm -f ${__objdir}; \ 98 mkdir $$dest; \ 99 fi ; \ 100 fi; 101.endif 102.endif 103 104print-objdir: 105 @echo ${.OBJDIR} 106 107.include <bsd.sys.mk> 108 109.endif # !defined(_BSD_OBJ_MK_) 110