> On 2015-Dec-7, at 12:48 PM, Simon J. Gerraty <s...@juniper.net> wrote:
> Mark Millard <mar...@dsl-only.net> wrote:
>> My guess is that it is picking up the
>> MAKEOBJDIRPREFIX=/usr/obj/xtoolchain
> You should use ?= if you want this to work.
> There are many places in Makefile.inc1 where MAKEOBJDIRPREFIX is tweaked
> in the environment of a sub-make.
> By using = above, you break that.

That presumes that MAKEOBJDIRPREFIX has not been assigned a default value 
before the SRC_ENV_CONF file has been included the first time. If 
MAKEOBJDIRPREFIX had been defined already then the ?= would do nothing and the 
wrong value would be used.

I believe that the following trace shows that such an assignment of a default 
value does happen first, making ?= not work either.

/usr/src/Makefile (head/Makefile 29160) has

> MAKEOBJDIRPREFIX?=      /usr/obj

at line 145 (used when it is not using targets/Makefile from the relevant 

Line 105 has .include <bsd.compiler.mk> and there no others before the above 
assignment. bsd.compiler.mk in turn includes bsd.opt.mk (only), which in turns 
includes bsd.mkopt.mk (only). That in turn includes nothing else. So these 
files and only these files are the involved files before that assignment as far 
as I can tell.

None of these get to src.sys.env.mk and so SRC_ENV_CONF use has not happened 
yet when 

> MAKEOBJDIRPREFIX?=      /usr/obj

is executed.

So, if I understand right, MAKEOBJDIRPREFIX is already defined before the code

> SRC_ENV_CONF?= /etc/src-env.conf
> .if !empty(SRC_ENV_CONF) && !target(_src_env_conf_included_)
> .-include "${SRC_ENV_CONF}"
> _src_env_conf_included_:        .NOTMAIN
> .endif

is executed and so using ?= would not be effective in the included file.

Did I miss something?

Mark Millard
markmi at dsl-only.net

freebsd-current@freebsd.org mailing list
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"

Reply via email to