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. -- 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"