git: 839cada5af34 - stable/12 - Makefile: Fix MAKEOBJDIRPREFIX command-line variable check for bmake
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 21 Dec 2021 16:02:06 UTC
The branch stable/12 has been updated by dim:
URL: https://cgit.FreeBSD.org/src/commit/?id=839cada5af3470afa1cd4531c9c108f5adb8a5b1
commit 839cada5af3470afa1cd4531c9c108f5adb8a5b1
Author: Jessica Clarke <jrtc27@FreeBSD.org>
AuthorDate: 2021-07-21 01:48:10 +0000
Commit: Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2021-12-21 15:14:36 +0000
Makefile: Fix MAKEOBJDIRPREFIX command-line variable check for bmake
Unlike the old fmake, running make FOO=bar when using bmake doesn't put
FOO=bar in .MAKEFLAGS at the top level, it instead just puts FOO in
.MAKEOVERRIDES and the full MAKEFLAGS will be formed for sub-makes.
Moreover, this only applies for sub-makes in rules, so this doesn't
apply to those in shell assignments. This means that the current check
does not catch make MAKEOBJDIRPREFIX=..., only those defined in config
files. Thus we must also check .MAKEOVERRIDES explicitly.
Reviewed by: sjg
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D31015
(cherry picked from commit d0c737e18454868447f731fe2b10d04f50d9d53b)
---
Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
index 21ce26f215c9..9ad32d27fc1d 100644
--- a/Makefile
+++ b/Makefile
@@ -207,7 +207,7 @@ _MAKEOBJDIRPREFIX!= /usr/bin/env -i PATH=${PATH} ${MAKE} MK_AUTO_OBJ=no \
${.MAKEFLAGS:MMAKEOBJDIRPREFIX=*} __MAKE_CONF=${__MAKE_CONF} \
SRCCONF=${SRCCONF} SRC_ENV_CONF= \
-f /dev/null -V MAKEOBJDIRPREFIX dummy
-.if !empty(_MAKEOBJDIRPREFIX)
+.if !empty(_MAKEOBJDIRPREFIX) || !empty(.MAKEOVERRIDES:MMAKEOBJDIRPREFIX)
.error MAKEOBJDIRPREFIX can only be set in environment or src-env.conf(5),\
not as a global (in make.conf(5) or src.conf(5)) or command-line variable.
.endif