1.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
2
3Optionally Using an External Toolchain
4**************************************
5
6You might want to use an external toolchain as part of your development.
7If this is the case, the fundamental steps you need to accomplish are as
8follows:
9
10-  Understand where the installed toolchain resides. For cases where you
11   need to build the external toolchain, you would need to take separate
12   steps to build and install the toolchain.
13
14-  Make sure you add the layer that contains the toolchain to your
15   ``bblayers.conf`` file through the
16   :term:`BBLAYERS` variable.
17
18-  Set the :term:`EXTERNAL_TOOLCHAIN` variable in your ``local.conf`` file
19   to the location in which you installed the toolchain.
20
21The toolchain configuration is very flexible and customizable. It
22is primarily controlled with the :term:`TCMODE` variable. This variable
23controls which ``tcmode-*.inc`` file to include from the
24``meta/conf/distro/include`` directory within the :term:`Source Directory`.
25
26The default value of :term:`TCMODE` is "default", which tells the
27OpenEmbedded build system to use its internally built toolchain (i.e.
28``tcmode-default.inc``). However, other patterns are accepted. In
29particular, "external-\*" refers to external toolchains. One example is
30the Mentor Graphics Sourcery G++ Toolchain. Support for this toolchain resides
31in the separate ``meta-sourcery`` layer at
32https://github.com/MentorEmbedded/meta-sourcery/.
33See its ``README`` file for details about how to use this layer.
34
35Another example of external toolchain layer is
36:yocto_git:`meta-arm-toolchain </meta-arm/tree/meta-arm-toolchain/>`
37supporting GNU toolchains released by ARM.
38
39You can find further information by reading about the :term:`TCMODE` variable
40in the Yocto Project Reference Manual's variable glossary.
41