// -*- mode:doc; -*-
// vim: set syntax=asciidoc:

[[toolchain-custom]]
Customizing the toolchain
~~~~~~~~~~~~~~~~~~~~~~~~~

There are three distinct types of toolchain backend supported in Buildroot,
available under the menu +Toolchain+, invoking +make menuconfig+.

Using the external toolchain backend
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

There is no way of tuning an external toolchain since Buildroot does not
generate it.

It also requires to set the Buildroot settings according to the toolchain ones
(see xref:external-toolchain-backend[]).

When using an external toolchain, Buildroot generates a wrapper program, that
passes the appropriate options (according to the configuration) to the
external toolchain programs. In case you need to debug this wrapper, you can
set the environment variable BR_DEBUG_WRAPPER to either one of:

* +0+, empty or not set: no debug

* +1+: trace all arguments on a single line

* +2+: trace one argument per line

Using the internal Buildroot toolchain backend
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The internal Buildroot toolchain backend allows to generate toolchains
based on http://www.uclibc.org/[uClibc],
https://www.gnu.org/software/libc/[glibc] and
http://www.eglibc.org/[eglibc].
Generation of (e)glibc-based toolchains is still experimental in
Buildroot.

It allows to tune major settings, such as:

* Linux headers version;

* C library configuration (only available for
  http://www.uclibc.org/[uClibc], see xref:uclibc-custom[uClibc]);

* Binutils, GCC, Gdb and toolchain options.

These settings are available after selecting the +Buildroot toolchain+ type in
the menu +Toolchain+.
