[Bug 233265] 'make -V MAKEOBJDIRPREFIX' at the top of base source tree doesn't work if value of MAKEOBJDIRPREFIX is customized
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 08 Jun 2022 17:40:10 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=233265
Bryan Drewery <bdrewery@FreeBSD.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |sjg@FreeBSD.org
--- Comment #1 from Bryan Drewery <bdrewery@FreeBSD.org> ---
This is quite old but yes that change did remove MAKEOBJDIRPREFIX there. The
code was activated / moved from another file and originated from here (for a
different build mode involving MK_DIRDEPS_BUILD):
commit 916c1cd0abd348b515a8ac1e6dc4326eb52bbbed
Author: Simon J. Gerraty <sjg@FreeBSD.org>
Date: Sat Jun 20 21:48:07 2015 +0000
Deal with MAKEOBJDIRPREFIX
MAKEOBJDIRPREFIX does not really fit our model.
Use it to set OBJROOT to about where user expects
and set MAKEOBJDIR to do what we want.
Notes:
svn path=/head/; revision=284650
diff --git share/mk/local.meta.sys.mk share/mk/local.meta.sys.mk
index 2b7f81d49b82..b3cb2575d457 100644
--- share/mk/local.meta.sys.mk
+++ share/mk/local.meta.sys.mk
@@ -8,6 +8,18 @@
MK_INSTALL_AS_USER= yes
.if empty(OBJROOT) || ${.MAKE.LEVEL} == 0
+.if defined(MAKEOBJDIRPREFIX) && exists(${MAKEOBJDIRPREFIX})
+.warning MAKEOBJDIRPREFIX not supported; setting MAKEOBJDIR...
+# put things approximately where they want
+OBJROOT:=${MAKEOBJDIRPREFIX}${SRCTOP:S,/src,,}/
+# OBJTOP set below
+MAKEOBJDIR=$${.CURDIR:S,$${SRCTOP},$${OBJTOP},}
+MAKEOBJDIRPREFIX=
+# export but do not track
+.export-env MAKEOBJDIRPREFIX MAKEOBJDIR
+# now for our own use
+MAKEOBJDIR= ${.CURDIR:S,${SRCTOP},${OBJTOP},}
+.endif
.if !empty(SB)
SB_OBJROOT ?= ${SB}/obj/
# this is what we use below
I think the following patch will fix it but it is not fully tested. There are a
lot of complex cases that need testing before committing.
diff --git share/mk/src.sys.obj.mk share/mk/src.sys.obj.mk
index 3b48fc3c5514..236548b5e94b 100644
--- share/mk/src.sys.obj.mk
+++ share/mk/src.sys.obj.mk
@@ -48,9 +48,12 @@ MAKEOBJDIRPREFIX:=
${MAKEOBJDIRPREFIX}${TARGET:D/${TARGET}.${TARGET_ARCH}}
.if !empty(MAKEOBJDIRPREFIX)
# put things approximately where they want
OBJROOT:= ${MAKEOBJDIRPREFIX}${SRCTOP}/
+_saveMAKEOBJDIRPREFIX:= ${MAKEOBJDIRPREFIX}
MAKEOBJDIRPREFIX=
# export but do not track
.export-env MAKEOBJDIRPREFIX
+MAKEOBJDIRPREFIX:= ${_saveMAKEOBJDIRPREFIX}
+.undef _saveMAKEOBJDIRPREFIX
.endif
.if empty(MAKEOBJDIR)
# OBJTOP set below
(I expected '.export-env MAKEOBJDIRPREFIX=' to work but it did not. I had to do
the dance above to export a blank value but keep the current value available)
--
You are receiving this mail because:
You are the assignee for the bug.