On Mon, Feb 25, 2019 at 10:50:40AM -0800, John Baldwin wrote:
> On 2/22/19 6:03 PM, Brandon Bergren wrote:
> >
> >
> > On Fri, Feb 22, 2019, at 1:01 PM, John Baldwin wrote:
> >> 3) I add support for an /etc/src.conf.d dir that can hold files that get
> >> treated as if they are part of /etc/src.conf. The current patch on
> >> github for this only fixes world and not yet kern.pre.mk and probably
> >> needs the most review if we want to go forward with this route. With
> >> this, I plan to have the base/* packages install suitable files in this
> >> dir that disable build of the src-based components and also set
> >> WITH_BASE_<foo> to make sure 'delete-old' DTRT.
> >
> > Not sure if I like this. Can't src.opts.mk just call `pkg info -e
> > base/binutils` and so forth and use the exit result to adjust the defaults?
>
> That requires src.opts.mk to encode the policy that each package wants to
> enforce rather than letting the package choose the policy it wants to
> enforce. I think we want the latter.
>
> >> The file for base/binutils would be:
> >>
> >> CROSS_BINUTILS_PREFIX=/usr/bin/
> >> WITH_BASE_BINUTILS=yes
> >> WITHOUT_BINUTILS=yes
> >> WITHOUT_LLD_IS_LD=yes
> >>
> >> The file for base/gcc would be:
> >>
> >> XCC=/usr/bin/cc
> >> XCXX=/usr/bin/c++
> >> XCPP=/usr/bin/cpp
> >> X_COMPILER_TYPE=gcc
> >> WITH_BASE_GCC=yes
> >> WITHOUT_GCC=yes
> >> WITHOUT_CLANG_IS_CC=yes
> >
> > I don't like the concept of packages messing with anything related to
> > src.conf. I have a bunch of conditional stuff in mine broken out by
> > ${TARGET_ARCH} and extra config suddenly appearing would break a lot of my
> > cross compiling stuff, even if it is in a separate *.d folder.
> >
> > Seems to me that just influencing src.opts.mk's defaults would be more
> > robust.
>
> Hmm, cross compiling is indeed a bear. My original version of this was to
> have base/gcc install a special 'freebsd-gcc.mk' toolchain file to
> /usr/share/toolchains and modify Makefile.inc1 to use this as the default
> CROSS_TOOLCHAIN if present. I mostly didn't like this because it would be
> a single file that so you can't set separate policy if, for example, some
> arch or install only wanted base/binutils and not base/gcc. On the other
> hand, it had the advantage that setting an explicit CROSS_TOOLCHAIN when you
> are cross compiling would work correctly.
>
> Perhaps I can rework this to use two files in /usr/share/toolchains and have
> Makefile.inc1 explicitly include any files in that directory if
> CROSS_TOOLCHAIN isn't set?I think I like that option best. Another way to deal with the two-files issue would be to have a base/toolchain metaport with options that installs the consolidated file you want. That mirrors (somewhat) the setup in devel/*xtoolchain*, but I'm not convinced it won't just lead to confusion. -- Brooks
signature.asc
Description: PGP signature
