1# $Id: obj.mk,v 1.20 2025/08/09 22:42:24 sjg Exp $ 2# 3# @(#) Copyright (c) 1999-2010, Simon J. Gerraty 4# 5# SPDX-License-Identifier: BSD-2-Clause 6# 7# Please send copies of changes and bug-fixes to: 8# sjg@crufty.net 9# 10 11# should be set properly in sys.mk 12_this ?= ${.PARSEFILE:S,bsd.,,} 13 14.if !target(__${_this}__) 15__${_this}__: .NOTMAIN 16 17.include <init.mk> 18 19ECHO_TRACE ?= echo 20 21.if ${MK_OBJDIRS} == "no" 22obj: 23objlink: 24objwarn: 25.else 26 27# this has to match how make behaves 28.if defined(MAKEOBJDIRPREFIX) || defined(MAKEOBJDIR) 29.if defined(MAKEOBJDIRPREFIX) 30__objdir:= ${MAKEOBJDIRPREFIX}${.CURDIR} 31.else 32__objdir:= ${MAKEOBJDIR} 33.endif 34.else 35__objdir= ${__objlink} 36.endif 37 38.if defined(OBJMACHINE) 39__objlink= obj.${MACHINE} 40.else 41__objlink= obj 42.endif 43 44.if ${MK_AUTO_OBJ} == "yes" 45.-include "auto.obj.mk" 46.endif 47 48.NOPATH: ${__objdir} 49.PHONY: obj 50 51obj: _SUBDIRUSE 52 @if test ! -d ${__objdir}/.; then \ 53 mkdir -p ${__objdir}; \ 54 if test ! -d ${__objdir}; then \ 55 mkdir ${__objdir}; exit 1; \ 56 fi; \ 57 ${ECHO_TRACE} "[Creating objdir ${__objdir}...]" >&2; \ 58 fi 59 60.if !target(_SUBDIRUSE) 61# this just allows us to be included by ourselves 62_SUBDIRUSE: 63.endif 64 65# so we can interact with freebsd makefiles 66.if !target(objwarn) 67objwarn: 68.if ${.OBJDIR} == ${.CURDIR} 69 @echo "Warning Object directory is ${.CURDIR}" 70.elif ${.OBJDIR} != ${__objdir} 71 @echo "Warning Object directory is ${.OBJDIR} vs. ${__objdir}" 72.endif 73.endif 74 75.if !target(objlink) 76objlink: 77.if ${__objdir:T} != ${__objlink} 78 @if test -d ${__objdir}/.; then \ 79 ${RM} -f ${.CURDIR}/${__objlink}; \ 80 ${LN} -s ${__objdir} ${.CURDIR}/${__objlink}; \ 81 echo "${__objlink} -> ${__objdir}"; \ 82 else \ 83 echo "No ${__objdir} to link to - do a 'make obj'"; \ 84 fi 85.endif 86.endif 87.endif 88 89_CURDIR?= ${.CURDIR} 90_OBJDIR?= ${.OBJDIR} 91 92.if !target(print-objdir) 93print-objdir: 94 @echo ${_OBJDIR} 95.endif 96 97.if !target(whereobj) 98whereobj: 99 @echo ${_OBJDIR} 100.endif 101 102.if !target(destroy) 103.if ${.CURDIR} != ${.OBJDIR} 104destroy: 105 (cd ${_CURDIR} && rm -rf ${_OBJDIR}) 106.else 107destroy: clean 108.endif 109.endif 110 111.endif 112