Mark Millard <mark...@yahoo.com> wrote:
> Yes, if the value of MAKEOBJDIRPREFIX isn't consistent that's going to
> cause problems (I'd call it a bug). If so don't use MAKEOBJDIRPREFIX
> directly, set some other variable and export that.
> Hmm src.sys.obj.mk plays games with MAKEOBJDIRPREFIX so that's
> probably not a good option.
> Perhaps:
> 
> diff --git a/share/mk/src.sys.obj.mk b/share/mk/src.sys.obj.mk
> index 3b48fc3c5514..3c7e570dbdbd 100644
> --- a/share/mk/src.sys.obj.mk
> +++ b/share/mk/src.sys.obj.mk
> @@ -67,6 +67,9 @@ SB_OBJROOT?= ${SB}/obj/
> OBJROOT?= ${SB_OBJROOT}
> .endif
> OBJROOT?= ${_default_makeobjdirprefix}${SRCTOP}/
> +# save the value before we mess with it
> +_OBJROOT:= ${OBJROOT:tA}
> +.export _OBJROOT
> .if ${OBJROOT:M*/} != ""
> OBJROOT:= ${OBJROOT:H:tA}/
> .else

I think you could use something like this, which should be safe to
commit:

diff --git a/share/mk/src.sys.obj.mk b/share/mk/src.sys.obj.mk
index 708559edcdb8..e4fe3fa9a2aa 100644
--- a/share/mk/src.sys.obj.mk
+++ b/share/mk/src.sys.obj.mk
@@ -73,6 +73,12 @@ OBJROOT:=    ${OBJROOT:H:tA}/${OBJROOT:T}
 .endif
 # Must export since OBJDIR will dynamically be based on it
 .export OBJROOT SRCTOP
+# if we didn't get SB_OBJROOT from env,
+# it is handy to set it now, so we can remember it
+.if empty(SB_OBJROOT)
+SB_OBJROOT:= ${OBJROOT}
+.export SB_OBJROOT
+.endif
 .endif
 
 .if ${MK_DIRDEPS_BUILD} == "no"

You can then use ${SB_OBJROOT} in your .MAKE.META.IGNORE_PATHS
The difference is that nothing in the FreeBSD build should ever touch
SB_OBJROOT so it should meet your need.
I think ;-)

And the above won't break our builds - which set SB_OBJROOT
before running make.


--sjg

Reply via email to