On 12/15/15 10:54 AM, Mark Millard wrote:
> On 2015-Dec-15, at 10:37 AM, Bryan Drewery <bdrew...@freebsd.org> wrote:
>>
>> On 12/8/15 2:14 PM, Bryan Drewery wrote:
>>> On 12/7/15 1:33 PM, Mark Millard wrote:
>>>>
>>>>> 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 
>>>> .if/.else/.endif).
>>>>
>>>> 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?
>>>
>>>
>>> Yes. sys.mk and src-env.conf are included *before* Makefile. Think of it
>>> as being in line 0.
>>>
>>> Technically you should be able to use MAKEOBJDIRPREFIX in make.conf or
>>> src.conf if you are not using any of the meta mode features (all off by
>>> default).
>>>
>>
>> Clarification: We *could* support this but it does not work today. We
>> can use .OBJDIR to force using a MAKEOBJDIRPREFIX from make.conf but
>> only if we also force creating the directory as well. Getting this all
>> right just ends up falling into the new auto.obj.mk territory anyhow. I
>> do want to expand that to the default build, which would allow setting
>> MAKEOBJDIRPREFIX in src-env.conf.
> 
> 
> So may be the paragraph below from "man src.conf" should not (yet?) suggest 
> that MAKEOBJDIRPREFIX is valid in a file to be referenced by SRC_ENV_CONF:
> 
>> The environment of make(1) for the build can be controlled via the
>>     SRC_ENV_CONF variable, which defaults to /etc/src-env.conf.  Some
>>     examples that may only be set in this file are MAKEOBJDIRPREFIX,
>>     WITH_DIRDEPS_BUILD, and WITH_META_MODE as they are environment-only
>>     variables.
> 
> 

Yes, I fixed it after my mail.


-- 
Regards,
Bryan Drewery
_______________________________________________
freebsd-current@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"

Reply via email to