153 lines
4.0 KiB
ReStructuredText
153 lines
4.0 KiB
ReStructuredText
.. _kbuild_toolchains:
|
|
|
|
Using Toolchains with Kbuild
|
|
****************************
|
|
|
|
The |project| gives support for the configuration of Yocto and XTools
|
|
toolchain and build tools. The environment variable
|
|
:envvar:`ZEPHYR_GCC_VARIANT` informs the build systen about which
|
|
build tool set is installed in the system and configures it as a standard
|
|
installation:
|
|
|
|
.. code-block:: bash
|
|
|
|
$ export ZEPHYR_GCC_VARIANT = yocto
|
|
|
|
$ export ZEPHYR_GCC_VARIANT = xtools
|
|
|
|
The supported values for the :envvar:`ZEPHYR_GCC_VARIANT` variable are:
|
|
**yocto** and **xtools**.
|
|
|
|
Yocto Configuration
|
|
===================
|
|
|
|
To set up a previously installed Yocto toolchain in the build system,
|
|
you need to configure the Yocto SDK installation path and the GCC
|
|
variant in the shell environment:
|
|
|
|
.. code-block:: bash
|
|
|
|
$ export YOCTO_SDK_INSTALL_DIR = <yocto-installation-path>
|
|
|
|
$ export ZEPHYR_GCC_VARIANT = yocto
|
|
|
|
The build system configuration is done by the file
|
|
:file:`$(ZEPHYR_BASE)/scripts/Makefile.toochain.yocto`. The build
|
|
system takes the following configuration values:
|
|
|
|
* x86 default configuration values
|
|
|
|
* Crosscompile target: i586-poky-elf
|
|
|
|
* Crosscompile version: 4.9.2
|
|
|
|
* Toolchain library: gcc
|
|
|
|
|
|
* ARM default configuration values
|
|
|
|
* Crosscompile target: arm-poky-eabi
|
|
|
|
* Crosscompile version: 4.9.2
|
|
|
|
* Toolchain library: gcc
|
|
|
|
* ARC default configuration values
|
|
|
|
* Crosscompile target: arc-poky-elf
|
|
|
|
* Crosscompile version: 4.8.3
|
|
|
|
* Toolchain library: gcc
|
|
|
|
The cross-compile target, cross-compile version, toolchain library and
|
|
library path can be adjusted in the file
|
|
:file:`$(ZEPHYR_BASE)/scripts/Makefile.toochain.yocto` following your
|
|
installation specifics.
|
|
|
|
XTools Configuration
|
|
====================
|
|
|
|
To set up a previously installed XTools toolchain in the build system,
|
|
you need to configure the XTools installation path and the GCC
|
|
variant in the shell environment:
|
|
|
|
.. code-block:: bash
|
|
|
|
$ export XTOOLS_TOOLCHAIN_PATH = <yocto-installation-path>
|
|
|
|
$ export ZEPHYR_GCC_VARIANT = xtools
|
|
|
|
The build system configuration is done by the file
|
|
:file:`$(ZEPHYR_BASE)/scripts/Makefile.toochain.xtools`. The build
|
|
system takes the following configuration values:
|
|
|
|
* x86 default configuration values
|
|
|
|
* Crosscompile target: i586-pc-elf
|
|
|
|
* Crosscompile version: 4.9.2
|
|
|
|
* Toolchain library: gcc
|
|
|
|
* ARM default configuration values
|
|
|
|
* Crosscompile target: arm-none-eabi
|
|
|
|
* Crosscompile version: 4.9.2
|
|
|
|
* Toolchain library: gcc
|
|
|
|
The cross-compile target, cross-compile version and toolchain
|
|
can be adjusted in the file
|
|
:file:`$(ZEPHYR_BASE)/scripts/Makefile.toochain.xtools` following your
|
|
installation specifics.
|
|
|
|
Generic Toolchain Configuration
|
|
===============================
|
|
|
|
It is possible to build and install an specific toolchain and configure
|
|
the build system to work with it. The **CROSS_COMPILE**,
|
|
**TOOLCHAIN_LIBS** and **LIB_INCLUDE_DIR** need to be configured in
|
|
your environment.
|
|
|
|
.. note::
|
|
|
|
The installed toolchain must be from the gcc family. The build tools
|
|
should follow the convention of: prefix + command-name. For example,
|
|
the gcc command should be named: **arm-poky-eabi-gcc**
|
|
|
|
The **CROSS_COMPILE** environment variable should be set to the
|
|
build tools prefix used for build tools commands.
|
|
|
|
.. code-block:: bash
|
|
|
|
$ export CROSS_COMPILE = i586-elf-
|
|
|
|
.. note::
|
|
If the command home directory is not set in the **PATH** environment
|
|
variable, the **CROSS_COMPILE** must include the complete path as
|
|
part of the command prefix.
|
|
|
|
The **TOOLCHAIN_LIBS** list the libraries required by the toolchain, like gcc
|
|
.
|
|
|
|
.. code-block:: bash
|
|
|
|
$ export TOOLCHAIN_LIBS = gcc
|
|
|
|
.. note::
|
|
Notice that there library name does not include the l prefix
|
|
commonly found when referring to libraries (lgcc).
|
|
|
|
**LIB_INCLUDE_DIR** defines the directory path where the toolchain
|
|
libraries can be located.
|
|
|
|
.. code-block:: bash
|
|
|
|
$ export LIB_INCLUDE_DIR = -L /opt/i586-elf/usr/lib/i586-elf/4.9
|
|
|
|
.. note::
|
|
Notice the use of the -L command parameter, included in the value
|
|
of the environment variable.
|