Separating out building bootstrap and system compilers

Warner Losh imp at bsdimp.com
Wed Apr 9 03:33:12 UTC 2014


I’d love to be able to say

make buildworld WITHOUT_GCC=t WITHOUT_CLANG=t

and get a working system out of it, without compilers. Too bad I can’t right now.

Luckily, I worked up these patches. Here’s my proposed commit message. Please comment on the patch
(which can be found at http://people.freebsd.org/~imp/patch-queue/bootstrap)

Separate out enabling building clang and/or gcc for the system and
building clang and/or gcc as the bootstrap compiler. Normally, the
default compiler is used. WITH_CLANG_BOOTSTRAP and/or
WITH_GCC_BOOTSTRAP will enable building these compilers as part
bootstrap phase.  WITH/WITHOUT_CLANG_IS_CC controls which compiler is
used by default for the bootstrap phase, as well as which compiler is
installed as cc.  buildworld now successfully completes building the
cross compiler with WITHOUT_CLANG=t and WITHOUT_GCC=t and produces a
built system with neither of these included.

MK_CROSS_COMPILER will now force MK_CLANG_BOOTSTRAP=no and
MK_GCC_BOOTSTRAP=no.

BOOTSTRAP_COMPILER was considered, but rejected, since pc98 needs both
clang and gcc to bootstrap still. It should be revisisted in the
future if this requirement goes away. Values should be gcc, clang or
none.

Chances are good that MK_BINUTILS is a good candidate for similar
treatment. We likely need to fold Xxx causing things to magically not
happen into this scheme as well, but that may be a larger, more disruptive
change.

Comments?

Warner



More information about the freebsd-arch mailing list