How exactly does the base toolchain determine WHICH language to build with?

Dimitry Andric dim at
Sat Nov 8 13:46:29 UTC 2014

On 08 Nov 2014, at 01:23, Chris H <bsd-lists at> wrote:
> Sorry for the long title. I've been [needlessly] struggling
> with getting ports within the ports tree to build, on a
> fresh 11-CURRENT install from 2014-11-05. With custom
> KERNEL and WORLD built, and installed.
> Here's my situation, which has worked well since ~8.2;
> make.conf(5)
> src.conf(5)

If you don't want to use and build clang at all, I think you also need
these two settings (at least on recent -CURRENT):


The latter variable determines whether /usr/bin/cc, /usr/bin/c++ and so
on are linked to clang or gcc.  I suspect the root of all your problems
is that you don't have this setting.

> I'll neither argue, nor defend rational for w/o clang. To
> boring and out of scope for this thread. That said; I
> realize that lang/clang(33/34/35) is the default toolchain
> for 10+, and that's just fine by me. So I shouldn't be
> terribly surprised when install kernel/world, followed by
> make delete-old removes the clang built, or provided by
> the base install from the (initial) install procedure. But
> what _does_ surprise me, is that the install of lang/gcc-48
> does _not_ become the compiler of choice with the above
> $ENV, after [seemingly] deleting clang.

It does not work that way.  If you configure the base system to use gcc
only, individual ports can decide that they need newer C++ support, or
other features not available in the version of gcc in base (which is
very old by now).  In that case, they will use one of the gcc ports,
or possibly even one of the clang ports.


More information about the freebsd-ports mailing list