1*6eef5f0cSAntonio Huete Jimenez# $Id: obj.mk,v 1.17 2021/12/08 05:56:50 sjg Exp $ 25f1e34d9SAlexandre Perrin# 35f1e34d9SAlexandre Perrin# @(#) Copyright (c) 1999-2010, Simon J. Gerraty 45f1e34d9SAlexandre Perrin# 55f1e34d9SAlexandre Perrin# This file is provided in the hope that it will 65f1e34d9SAlexandre Perrin# be of use. There is absolutely NO WARRANTY. 75f1e34d9SAlexandre Perrin# Permission to copy, redistribute or otherwise 85f1e34d9SAlexandre Perrin# use this file is hereby granted provided that 95f1e34d9SAlexandre Perrin# the above copyright notice and this notice are 105f1e34d9SAlexandre Perrin# left intact. 115f1e34d9SAlexandre Perrin# 125f1e34d9SAlexandre Perrin# Please send copies of changes and bug-fixes to: 135f1e34d9SAlexandre Perrin# sjg@crufty.net 145f1e34d9SAlexandre Perrin# 155f1e34d9SAlexandre Perrin 165f1e34d9SAlexandre Perrin.if !target(__${.PARSEFILE:S,bsd.,,}__) 17*6eef5f0cSAntonio Huete Jimenez__${.PARSEFILE:S,bsd.,,}__: .NOTMAIN 185f1e34d9SAlexandre Perrin 195f1e34d9SAlexandre Perrin.include <init.mk> 205f1e34d9SAlexandre Perrin 215f1e34d9SAlexandre PerrinECHO_TRACE ?= echo 225f1e34d9SAlexandre Perrin 235f1e34d9SAlexandre Perrin.if ${MK_OBJDIRS} == "no" 245f1e34d9SAlexandre Perrinobj: 255f1e34d9SAlexandre Perrinobjlink: 265f1e34d9SAlexandre Perrinobjwarn: 275f1e34d9SAlexandre Perrin.else 285f1e34d9SAlexandre Perrin 295f1e34d9SAlexandre Perrin# this has to match how make behaves 305f1e34d9SAlexandre Perrin.if defined(MAKEOBJDIRPREFIX) || defined(MAKEOBJDIR) 315f1e34d9SAlexandre Perrin.if defined(MAKEOBJDIRPREFIX) 325f1e34d9SAlexandre Perrin__objdir:= ${MAKEOBJDIRPREFIX}${.CURDIR} 335f1e34d9SAlexandre Perrin.else 345f1e34d9SAlexandre Perrin__objdir:= ${MAKEOBJDIR} 355f1e34d9SAlexandre Perrin.endif 365f1e34d9SAlexandre Perrin.else 375f1e34d9SAlexandre Perrin__objdir= ${__objlink} 385f1e34d9SAlexandre Perrin.endif 395f1e34d9SAlexandre Perrin 405f1e34d9SAlexandre Perrin.if defined(OBJMACHINE) 415f1e34d9SAlexandre Perrin__objlink= obj.${MACHINE} 425f1e34d9SAlexandre Perrin.else 435f1e34d9SAlexandre Perrin__objlink= obj 445f1e34d9SAlexandre Perrin.endif 455f1e34d9SAlexandre Perrin 465f1e34d9SAlexandre Perrin.if ${MK_AUTO_OBJ} == "yes" 475f1e34d9SAlexandre Perrin.-include "auto.obj.mk" 485f1e34d9SAlexandre Perrin.endif 495f1e34d9SAlexandre Perrin 505f1e34d9SAlexandre Perrin.NOPATH: ${__objdir} 515f1e34d9SAlexandre Perrin.PHONY: obj 525f1e34d9SAlexandre Perrin 535f1e34d9SAlexandre Perrinobj: _SUBDIRUSE 545f1e34d9SAlexandre Perrin @if test ! -d ${__objdir}/.; then \ 555f1e34d9SAlexandre Perrin mkdir -p ${__objdir}; \ 565f1e34d9SAlexandre Perrin if test ! -d ${__objdir}; then \ 575f1e34d9SAlexandre Perrin mkdir ${__objdir}; exit 1; \ 585f1e34d9SAlexandre Perrin fi; \ 595f1e34d9SAlexandre Perrin ${ECHO_TRACE} "[Creating objdir ${__objdir}...]" >&2; \ 605f1e34d9SAlexandre Perrin fi 615f1e34d9SAlexandre Perrin 625f1e34d9SAlexandre Perrin.if !target(_SUBDIRUSE) 635f1e34d9SAlexandre Perrin# this just allows us to be included by ourselves 645f1e34d9SAlexandre Perrin_SUBDIRUSE: 655f1e34d9SAlexandre Perrin.endif 665f1e34d9SAlexandre Perrin 675f1e34d9SAlexandre Perrin# so we can interact with freebsd makefiles 685f1e34d9SAlexandre Perrin.if !target(objwarn) 695f1e34d9SAlexandre Perrinobjwarn: 705f1e34d9SAlexandre Perrin.if ${.OBJDIR} == ${.CURDIR} 715f1e34d9SAlexandre Perrin @echo "Warning Object directory is ${.CURDIR}" 725f1e34d9SAlexandre Perrin.elif ${.OBJDIR} != ${__objdir} 735f1e34d9SAlexandre Perrin @echo "Warning Object directory is ${.OBJDIR} vs. ${__objdir}" 745f1e34d9SAlexandre Perrin.endif 755f1e34d9SAlexandre Perrin.endif 765f1e34d9SAlexandre Perrin 775f1e34d9SAlexandre Perrin.if !target(objlink) 785f1e34d9SAlexandre Perrinobjlink: 795f1e34d9SAlexandre Perrin.if ${__objdir:T} != ${__objlink} 805f1e34d9SAlexandre Perrin @if test -d ${__objdir}/.; then \ 815f1e34d9SAlexandre Perrin ${RM} -f ${.CURDIR}/${__objlink}; \ 825f1e34d9SAlexandre Perrin ${LN} -s ${__objdir} ${.CURDIR}/${__objlink}; \ 835f1e34d9SAlexandre Perrin echo "${__objlink} -> ${__objdir}"; \ 845f1e34d9SAlexandre Perrin else \ 855f1e34d9SAlexandre Perrin echo "No ${__objdir} to link to - do a 'make obj'"; \ 865f1e34d9SAlexandre Perrin fi 875f1e34d9SAlexandre Perrin.endif 885f1e34d9SAlexandre Perrin.endif 895f1e34d9SAlexandre Perrin.endif 905f1e34d9SAlexandre Perrin 915f1e34d9SAlexandre Perrin_CURDIR?= ${.CURDIR} 925f1e34d9SAlexandre Perrin_OBJDIR?= ${.OBJDIR} 935f1e34d9SAlexandre Perrin 945f1e34d9SAlexandre Perrin.if !target(print-objdir) 955f1e34d9SAlexandre Perrinprint-objdir: 965f1e34d9SAlexandre Perrin @echo ${_OBJDIR} 975f1e34d9SAlexandre Perrin.endif 985f1e34d9SAlexandre Perrin 995f1e34d9SAlexandre Perrin.if !target(whereobj) 1005f1e34d9SAlexandre Perrinwhereobj: 1015f1e34d9SAlexandre Perrin @echo ${_OBJDIR} 1025f1e34d9SAlexandre Perrin.endif 1035f1e34d9SAlexandre Perrin 1045f1e34d9SAlexandre Perrin.if !target(destroy) 1055f1e34d9SAlexandre Perrin.if ${.CURDIR} != ${.OBJDIR} 1065f1e34d9SAlexandre Perrindestroy: 1075f1e34d9SAlexandre Perrin (cd ${_CURDIR} && rm -rf ${_OBJDIR}) 1085f1e34d9SAlexandre Perrin.else 1095f1e34d9SAlexandre Perrindestroy: clean 1105f1e34d9SAlexandre Perrin.endif 1115f1e34d9SAlexandre Perrin.endif 1125f1e34d9SAlexandre Perrin 1135f1e34d9SAlexandre Perrin.endif 114