bsd.obj.mk revision 1.51
1# $NetBSD: bsd.obj.mk,v 1.51 2016/12/10 23:12:39 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__objdirsuffix= ${OBJMACHINE:D.${MACHINE}${OBJMACHINE_ARCH:D-${MACHINE_ARCH}}} 41__objdir= obj${__objdirsuffix} 42 43__usrobjdir= ${BSDOBJDIR}${USR_OBJMACHINE:D.${MACHINE}} 44__usrobjdirpf= ${USR_OBJMACHINE:D:U${__objdirsuffix}} 45 46.if defined(BUILDID) 47__objdir:= ${__objdir}.${BUILDID} 48__usrobjdirpf:= ${__usrobjdirpf}.${BUILDID} 49__need_objdir_target=yes 50.endif 51 52.if defined(OBJHOSTMACHINE) && (${MKHOSTOBJ:Uno} != "no") 53# In case .CURDIR has been twiddled by a .mk file and is now relative, 54# make it absolute again. 55.if ${__curdir:M/*} == "" 56__curdir!= cd "${__curdir}" && ${PAWD} 57.endif 58 59__objdir:= ${__objdir}.${HOST_OSTYPE} 60__usrobjdirpf:= ${__usrobjdirpf}.${HOST_OSTYPE} 61__need_objdir_target=yes 62.endif 63 64.if defined(__need_objdir_target) 65# Get make to change its internal definition of .OBJDIR 66.OBJDIR: ${__objdir} 67.endif 68 69obj: 70 @cd "${__curdir}"; \ 71 here=`${PAWD}`/; subdir=$${here#${BSDSRCDIR}/}; \ 72 if [ "$$here" != "$$subdir" ]; then \ 73 if [ ! -d ${__usrobjdir} ]; then \ 74 echo "BSDOBJDIR ${__usrobjdir} does not exist, bailing..."; \ 75 exit 1; \ 76 fi; \ 77 subdir=$${subdir%/}; \ 78 dest=${__usrobjdir}/$$subdir${__usrobjdirpf}; \ 79 if [ -x ${TOOL_STAT} ] && \ 80 ttarg=`${TOOL_STAT} -qf '%Y' $${here}${__objdir}` && \ 81 [ "$$dest" = "$$ttarg" ]; then \ 82 : ; \ 83 else \ 84 ${_MKSHMSG} " objdir $$dest"; \ 85 rm -rf ${__objdir}; \ 86 ln -s $$dest ${__objdir}; \ 87 fi; \ 88 if [ ! -d $$dest ]; then \ 89 mkdir -p $$dest; \ 90 else \ 91 true; \ 92 fi; \ 93 else \ 94 true ; \ 95 dest=$${here}${__objdir} ; \ 96 if [ ! -d ${__objdir} ] || [ -h ${__objdir} ]; then \ 97 ${_MKSHMSG} " objdir $$dest"; \ 98 rm -f ${__objdir}; \ 99 mkdir $$dest; \ 100 fi ; \ 101 fi; 102.endif 103.endif 104 105print-objdir: 106 @echo ${.OBJDIR} 107 108.include <bsd.sys.mk> 109 110.endif # !defined(_BSD_OBJ_MK_) 111