xref: /dflybsd-src/contrib/bmake/mk/obj.mk (revision 9e7ae5a0527a977cab412aede3a532cfe2903bbb)
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