External GCC Update
Brandon Bergren
freebsd at bdragon.rtk0.net
Sat Feb 23 02:03:47 UTC 2019
On Fri, Feb 22, 2019, at 1:01 PM, John Baldwin wrote:
> I was recently able to install base/binutils and base/gcc into an amd64 VM
> and do a self-hosted build and install. Some of the port patches have been
> committed from this, but I have some source patches before the final ports
> patches can be finished.
>
> The source patches are here:
> https://github.com/bsdjhb/freebsd/compare/master...base_gcc
>
> They do a couple of things I'd like some feedback on:
>
> 1) MK_GDB no longer depends on MK_BINUTILS so that /usr/libexec/gdb can
> still be built/installed when WITHOUT_BINUTILS=yes is true
Good thinking.
> 2) WITH_BASE_GCC and WITH_BASE_BINUTILS knobs can be set in src.conf to
> ensure that 'make delete-old' doesn't delete files installed by the
> base/* packages if you also set WITHOUT_BINUTILS=yes, and similar
> knobs (because you don't want to build/install the ones from src)
I was really confused about the naming when I read through the diff. Bikeshedding but I think WITH_PORTS_BASE_BINUTILS / WITH_PORTS_BASE_GCC would help quite a lot cognitively, to differentiate between "base as in in-tree binutils" and "base as in the base/binutils port"
> 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?
> 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.
>
> Thoughts?
>
> --
> John Baldwin
>
>
>
--
Brandon Bergren
Technical Generalist
More information about the freebsd-toolchain
mailing list