doc: toolchain: ATfE: fix formating

This commit fixe text formatting, removing numbered paragraphs, and
adding sub-titled parts.

Signed-off-by: Alex Fabre <alex.fabre@rtone.fr>
This commit is contained in:
Alex Fabre 2025-05-07 20:50:29 +02:00 committed by Anas Nashif
commit 7e00170fa9

View file

@ -3,84 +3,85 @@
Arm Toolchain for Embedded (ATfE)
#################################
#. LLVM toolchain by ARM
#. Arm Toolchain for Embedded (ATfE) is a C and C++ toolchain from Arm based
on the free and open-source LLVM Compiler Infrastructure and the Picolib C
library for baremetal targets.
Arm Toolchain for Embedded (ATfE) is a C and C++ toolchain from Arm based
on the free and open-source LLVM Compiler Infrastructure and the Picolib C
library for baremetal targets.
#. ATfE is fined-tuned with a particular focus on performance for newer
ARM products (post 2024) like 64-bit Arm Architectures (AArch64),
or the M-Profile Vector Extension (MVE, a 32-bit Armv8.1-M extension).
ATfE is fined-tuned with a particular focus on performance for newer
ARM products (post 2024) like 64-bit Arm Architectures (AArch64),
or the M-Profile Vector Extension (MVE, a 32-bit Armv8.1-M extension).
#. Installation
Installation
************
#. Download and install a `Arm toolchain for embedded`_ build for your operating system
and extract it on your file system.
#. Download and install a `Arm toolchain for embedded`_ build for your operating system
and extract it on your file system.
#. :ref:`Set these environment variables <env_vars>`:
#. :ref:`Set these environment variables <env_vars>`:
- Set :envvar:`ZEPHYR_TOOLCHAIN_VARIANT` to ``llvm``.
- Set :envvar:`LLVM_TOOLCHAIN_PATH` to the toolchain installation directory.
- Set :envvar:`ZEPHYR_TOOLCHAIN_VARIANT` to ``llvm``.
- Set :envvar:`LLVM_TOOLCHAIN_PATH` to the toolchain installation directory.
#. To check that you have set these variables correctly in your current
environment, follow these example shell sessions (the
:envvar:`LLVM_TOOLCHAIN_PATH` values may be different on your system):
#. To check that you have set these variables correctly in your current
environment, follow these example shell sessions (the
:envvar:`LLVM_TOOLCHAIN_PATH` values may be different on your system):
.. tabs::
.. tabs::
.. group-tab:: Ubuntu
.. group-tab:: Ubuntu
.. code-block:: bash
.. code-block:: bash
echo $ZEPHYR_TOOLCHAIN_VARIANT
llvm
echo $LLVM_TOOLCHAIN_PATH
/home/you/Downloads/ATfE
echo $ZEPHYR_TOOLCHAIN_VARIANT
llvm
echo $LLVM_TOOLCHAIN_PATH
/home/you/Downloads/ATfE
.. group-tab:: macOS
.. group-tab:: macOS
.. code-block:: bash
.. code-block:: bash
echo $ZEPHYR_TOOLCHAIN_VARIANT
llvm
echo $LLVM_TOOLCHAIN_PATH
/home/you/Downloads/ATfE
echo $ZEPHYR_TOOLCHAIN_VARIANT
llvm
echo $LLVM_TOOLCHAIN_PATH
/home/you/Downloads/ATfE
.. group-tab:: Windows
.. group-tab:: Windows
.. code-block:: powershell
.. code-block:: powershell
> echo %ZEPHYR_TOOLCHAIN_VARIANT%
llvm
> echo %LLVM_TOOLCHAIN_PATH%
C:\ATfE
> echo %ZEPHYR_TOOLCHAIN_VARIANT%
llvm
> echo %LLVM_TOOLCHAIN_PATH%
C:\ATfE
.. _toolchain_env_var:
.. _toolchain_env_var:
#. You can also set ``ZEPHYR_TOOLCHAIN_VARIANT`` and ``LLVM_TOOLCHAIN_PATH`` as CMake
variables when generating a build system for a Zephyr application, like so:
#. You can also set ``ZEPHYR_TOOLCHAIN_VARIANT`` and ``LLVM_TOOLCHAIN_PATH`` as CMake
variables when generating a build system for a Zephyr application, like so:
.. code-block:: console
.. code-block:: console
west build ... -- -DZEPHYR_TOOLCHAIN_VARIANT=llvm -DLLVM_TOOLCHAIN_PATH=...
west build ... -- -DZEPHYR_TOOLCHAIN_VARIANT=llvm -DLLVM_TOOLCHAIN_PATH=...
#. Toolchain settings
Toolchain settings
******************
#. Because LLVM is widely compatible with GNU tools, When builiding with any
LLVM toolchain, you have to specify some settings to let the compiler
know what tools to use:
Because LLVM is widely compatible with GNU tools, When builiding with any
LLVM toolchain, you have to specify some settings to let the compiler
know what tools to use:
#. Linker:
Set :envvar:`CONFIG_LLVM_USE_LLD=y` to use LLVM linker.
set :envvar:`CONFIG_LLVM_USE_LD=y` to use the GNU LD linker.
Linker:
Set :envvar:`CONFIG_LLVM_USE_LLD=y` to use LLVM linker.
set :envvar:`CONFIG_LLVM_USE_LD=y` to use the GNU LD linker.
#. Runtime library:
Set :envvar:`CONFIG_COMPILER_RT_RTLIB=y` to use LLVM runtime library.
Set :envvar:`CONFIG_LIBGCC_RTLIB=y` to use LibGCC runtime library.
Runtime library:
Set :envvar:`CONFIG_COMPILER_RT_RTLIB=y` to use LLVM runtime library.
Set :envvar:`CONFIG_LIBGCC_RTLIB=y` to use LibGCC runtime library.
.. code-block:: console
.. code-block:: console
west build ... -- -DZEPHYR_TOOLCHAIN_VARIANT=llvm -DLLVM_TOOLCHAIN_PATH=... -DCONFIG_LLVM_USE_LLD=y -DCONFIG_COMPILER_RT_RTLIB=y
west build ... -- -DZEPHYR_TOOLCHAIN_VARIANT=llvm -DLLVM_TOOLCHAIN_PATH=... -DCONFIG_LLVM_USE_LLD=y -DCONFIG_COMPILER_RT_RTLIB=y
.. _Arm Toolchain for Embedded: https://developer.arm.com/Tools%20and%20Software/Arm%20Toolchain%20for%20Embedded