External GCC Update

Brooks Davis brooks at freebsd.org
Mon Feb 25 20:24:30 UTC 2019


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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 455 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/freebsd-toolchain/attachments/20190225/e8074c90/attachment.sig>


More information about the freebsd-toolchain mailing list