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