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