Software Requirements
=====================

As of today the only available normal-world interface for Trusted Services is available trough linux. Building and end-to-end
firmware stack requires compiling the Linux Kernel and linux user space applications. This restricts the possible host
environments to Linux distributions.
While some TS components can be built under Windows this scenario is not mandated by this documentation.

The preferred host environment is Ubuntu 18.04.

The following tools are required:

   * CMake, version 3.18.4. (See the `CMake download page`_.)
   * GNU Make v4.1 or higher.
   * Git v2.17 or newer.
   * Python3.6 and the modules listed in ``<project>/requirements.txt``.
   * GCC supporting the deployment.

       * `opteesp` environment: a host to aarch64 cross-compiler is needed. Please use the compilers specified by the
         `OP-TEE documentation`_.
       * `arm-linux` environment: a host to aarch64 linux cross-compiler is needed. Please use the version `9.2-2019.12` of the
         "aarch64-none-linux-gnu" compiler available from `arm Developer`_.
         (Note: the compiler part of the OP-TEE build environment works too.)
       * For `linux-pc` environment use the native version of GCC available in your Linux distribution.

To build the documentation, please refer to :ref:`Documentation Build Instructions`.

.. todo:: Add info on commit validation dependencies (checkpatch, uncrustify, etc...)

--------------

.. _OP-TEE documentation: https://optee.readthedocs.io/en/latest/building/gits/build.html#step-4-get-the-toolchains
.. _arm Developer: https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads
.. _CMake download page: https://cmake.org/files/v3.18/

*Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.*

SPDX-License-Identifier: BSD-3-Clause
