// -*- 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[]).

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

The internal Buildroot toolchain backend *only* allows to generate
*http://www.uclibc.org/[uClibc]-based toolchains*.

However, it allows to tune major settings, such as:

* Linux headers version;

* http://www.uclibc.org/[uClibc] configuration (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+.

Using the Crosstool-NG backend
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The http://crosstool-ng.org[crosstool-NG] toolchain backend enables a rather
limited set of settings under the Buildroot +Toolchain+ menu:

* The http://crosstool-ng.org[crosstool-NG] configuration file

* Gdb and some toolchain options

Then, the toolchain can be fine-tuned by invoking +make ctng-menuconfig+.
