From 7e0aabd961995cf708f5a3796163f5f5bc31ffe1 Mon Sep 17 00:00:00 2001 From: Bryan Drewery Date: Sat, 18 Nov 2017 20:01:15 +0000 Subject: [PATCH] Fix top-level targets with read-only OBJDIR. This also makes it so that top-level build targets do not immediately create the OBJDIR. Only sub-make targets will do so. This avoids creating object directories for targets like 'make check-old' or creating unneeded MACHINE.MACHINE_ARCH directories during 'make tinderbox'. Reported by: npn, lifanov Tested by: npn, Mark Millard Sponsored by: Dell --- Makefile.sys.inc | 5 +++++ share/mk/src.sys.obj.mk | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/Makefile.sys.inc b/Makefile.sys.inc index c21ed19bdc62..6bb597de2fd7 100644 --- a/Makefile.sys.inc +++ b/Makefile.sys.inc @@ -33,6 +33,11 @@ _CAN_USE_AUTO_OBJ?= yes .if !defined(_CAN_USE_AUTO_OBJ) _MAKEARGS+= MK_AUTO_OBJ=no MK_AUTO_OBJ= no +# This will prevent src.sys.obj.mk from opportunistically enabling AUTO_OBJ +# in this make execution and for sub-makes. For all of these targets we +# just want to read any existing OBJDIR but we don't care if we can create +# or write to them. +.MAKEOVERRIDES+= MK_AUTO_OBJ .endif .endif # empty(.MAKEOVERRIDES:MMK_AUTO_OBJ) diff --git a/share/mk/src.sys.obj.mk b/share/mk/src.sys.obj.mk index fe15717d4f05..3671f974742a 100644 --- a/share/mk/src.sys.obj.mk +++ b/share/mk/src.sys.obj.mk @@ -19,6 +19,12 @@ # TARGET.TARGET_ARCH added in as it assumes that MAKEOBJDIRPREFIX is # nested in the existing OBJTOP with TARGET.TARGET_ARCH in it. # +# The expected OBJDIR is stored in __objdir for auto.obj.mk to use. +# +# AUTO_OBJ is opportunistically enabled if the computed .OBJDIR is writable +# by the current user. Some top-level targets disable this behavior in +# Makefile.sys.inc. +# _default_makeobjdirprefix?= /usr/obj _default_makeobjdir= $${.CURDIR:S,^$${SRCTOP},$${OBJTOP},}