Andrew Geissler | 517393d | 2023-01-13 08:55:19 -0600 | [diff] [blame] | 1 | .. SPDX-License-Identifier: CC-BY-SA-2.0-UK |
| 2 | |
| 3 | Optionally Using an External Toolchain |
| 4 | ************************************** |
| 5 | |
| 6 | You might want to use an external toolchain as part of your development. |
| 7 | If this is the case, the fundamental steps you need to accomplish are as |
| 8 | follows: |
| 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 | |
| 21 | The toolchain configuration is very flexible and customizable. It |
| 22 | is primarily controlled with the :term:`TCMODE` variable. This variable |
| 23 | controls which ``tcmode-*.inc`` file to include from the |
| 24 | ``meta/conf/distro/include`` directory within the :term:`Source Directory`. |
| 25 | |
| 26 | The default value of :term:`TCMODE` is "default", which tells the |
| 27 | OpenEmbedded build system to use its internally built toolchain (i.e. |
| 28 | ``tcmode-default.inc``). However, other patterns are accepted. In |
| 29 | particular, "external-\*" refers to external toolchains. One example is |
| 30 | the Mentor Graphics Sourcery G++ Toolchain. Support for this toolchain resides |
| 31 | in the separate ``meta-sourcery`` layer at |
| 32 | https://github.com/MentorEmbedded/meta-sourcery/. |
| 33 | See its ``README`` file for details about how to use this layer. |
| 34 | |
| 35 | Another example of external toolchain layer is |
| 36 | :yocto_git:`meta-arm-toolchain </meta-arm/tree/meta-arm-toolchain/>` |
| 37 | supporting GNU toolchains released by ARM. |
| 38 | |
| 39 | You can find further information by reading about the :term:`TCMODE` variable |
| 40 | in the Yocto Project Reference Manual's variable glossary. |