blob: 9e83d2365130478043b7369d7a800196a91ed05d [file] [log] [blame]
Galanakis, Minos41f85972019-09-30 15:56:40 +01001#####################
2Software requirements
3#####################
Gyorgy Szingdb9783c2019-04-17 21:08:48 +02004
Antonio de Angelis065ce4a2019-06-04 14:02:33 +01005.. |DS5_VERSION| replace:: v5.29.1
6.. |KEIL_VERSION| replace:: v5.25.2
7.. |DEV_STUDIO_VERSION| replace:: 2018.0
8
Galanakis, Minos757139a2019-11-11 15:00:11 +00009A quick reference table is included in the
Minos Galanakise4094012020-06-12 14:25:34 +010010:ref:`docs/getting_started/tfm_sw_requirement:Tool & Dependency overview` section
Galanakis, Minos757139a2019-11-11 15:00:11 +000011of this document.
Gyorgy Szingdb9783c2019-04-17 21:08:48 +020012
13****************************
14Supported build environments
15****************************
16
17TF-M officially supports a limited set of build environments and setups. In
18this context, official support means that the environments listed below
19are actively used by team members and active developers hence users should
20be able to recreate the same configurations by following the instructions
21described below. In case of problems, the TF-M team provides support
22only for these environments, but building in other environments can still be
23possible.
24
25The following environments are supported:
Kevin Townsend0f869bb2019-08-01 21:06:48 +020026
Gyorgy Szingdb9783c2019-04-17 21:08:48 +020027 - Ubuntu 16.04 x64
28 - Ubuntu 18.04 x64
Anton Komlev211aacf2020-11-02 12:48:11 +000029 - Windows 10 x64 + git-bash (MinGW) + gnumake from DS-5 or msys2.
30 - Windows 10 x64 + Cygwin x64 (example configuration is provided for
31 this Windows setup only).
Mingyang Sun1e590642019-09-24 10:46:21 +080032
Anton Komlev211aacf2020-11-02 12:48:11 +000033.. note::
34 Some tools (i.e. python3 and CMake) must NOT be installed from
35 Cygwin and instead a native windows version is needed. Please see the
36 chapter `Windows + Cygwin setup`_ below.
37 IAR requires Ubuntu 18.04 or later.
38
39*********************
40Supported C compilers
41*********************
Gyorgy Szingdb9783c2019-04-17 21:08:48 +020042
43To compile TF-M code, at least one of the supported compiler toolchains have to
44be available in the build environment. The currently supported compiler
45versions are:
Antonio de Angelis065ce4a2019-06-04 14:02:33 +010046
Anton Komlev211aacf2020-11-02 12:48:11 +000047 - Arm Compiler v6.10
48 - Arm Compiler v6.11
49 - Arm Compiler v6.12
50 - Arm Compiler v6.13
51 - GNU Arm compiler v6.3.1
52 - GNU Arm compiler v7.3
53 - IAR Arm compiler v8.42.x
54 - IAR Arm compiler v8.50.x
Gyorgy Szingdb9783c2019-04-17 21:08:48 +020055
56.. Note::
Antonio de Angelis065ce4a2019-06-04 14:02:33 +010057 - The Arm compilers above are provided via Keil uVision |KEIL_VERSION|
58 or greater, DS-5 |DS5_VERSION| or greater, and Development Studio
59 |DEV_STUDIO_VERSION| or greater, or they can be downloaded as standalone
60 packages from
61 `here <https://developer.arm.com/products/software-development-tools/compilers/arm-compiler/downloads/version-6>`__.
62
Anton Komlev211aacf2020-11-02 12:48:11 +000063 - Arm compiler specific environment variable may need updating based
64 on specific products and licenses as explained in
65 `product-and-toolkit-configuration <https://developer.arm.com/products/software-development-tools/license-management/resources/product-and-toolkit-configuration>`__.
66
Antonio de Angelis065ce4a2019-06-04 14:02:33 +010067 - The GNU Arm compiler can be downloaded from
68 `here <https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads>`__.
69 On the page select *GNU Arm Embedded Toolchain: 6-2017-q1-update*
70 or *GNU Arm Embedded Toolchain: 7-2018-q2-update*
Gyorgy Szingdb9783c2019-04-17 21:08:48 +020071
TTornblom8a8b4522020-06-10 11:13:32 +020072 - The IAR Arm compilers above are provided via IAR Embedded Workbench (Windows) or
73 IAR build tools for linux.
74 For information, see
75 `here <https://www.iar.com/iar-embedded-workbench/#!?architecture=Arm>`__ or
76 `here <https://www.iar.com/iar-embedded-workbench/build-tools-for-linux/>`__.
77
Anton Komlev211aacf2020-11-02 12:48:11 +000078************************
79Supported CMake versions
80************************
Gyorgy Szingdb9783c2019-04-17 21:08:48 +020081
Anton Komlev211aacf2020-11-02 12:48:11 +000082The build-system is CMake based and supports the following versions:
Antonio de Angelis065ce4a2019-06-04 14:02:33 +010083
Raef Coles69817322020-10-19 14:14:14 +010084The build-system is CMake based and supports the versions 3.15 or higher.
Anton Komlev211aacf2020-11-02 12:48:11 +000085
86.. Note::
87 - IAR requires version 3.14 or later.
88 - ARMClang requires version 3.15 or later.
89 - Please use the latest build version available (i.e. 3.7.2 instead of
90 3.7.0).
91 While it is preferable to use the newest version this is not required
92 and any version from the above list should work.
Gyorgy Szingdb9783c2019-04-17 21:08:48 +020093 - Recent versions of CMake can be downloaded from
94 https://cmake.org/download/, and older releases are available from
95 https://cmake.org/files.
Anton Komlev211aacf2020-11-02 12:48:11 +000096 - For Cygwin users, please use a native windows CMake version
97 instead of the version installed with Cygwin.
Gyorgy Szingdb9783c2019-04-17 21:08:48 +020098
Anton Komlev211aacf2020-11-02 12:48:11 +000099***************************
100Supported GNU make versions
101***************************
102
103The TF-M team builds using the "Unix Makefiles" generator of CMake and
104thus GNU make is needed for the build. On Linux please use the version
105available from the official repository of your distribution.
106
107On Windows the following binaries are supported:
108
109 - GNU make v4.2.1 executable from Cygwin
110 - GNU make v4.2.1 executable from msys2
111 - GNU make v4.2 executable from DS5 |DS5_VERSION| (see <DS5 directory>/bin)
112
113CMake is quite tolerant to GNU make versions and basically any
114"reasonably recent" GNU make version should work.
115
116CMake generators other than "Unix Makefiles" may work, but are not
117officially supported.
118
119*********************
120External dependencies
121*********************
122
123Dependency management is now handled by cmake. If you wish to alter this
Anton Komlevb8e3af02020-08-28 10:23:57 +0100124behaviour, see :ref:`docs/getting_started/tfm_build_instruction:Manual
125dependency management`
Minos Galanakisac6b06c2020-03-19 12:57:02 +0000126
Ludovic Barre8a77bdd2020-03-26 19:53:07 +0100127********************************************
128Tools for configuring and programming boards
129********************************************
130
Anton Komlev211aacf2020-11-02 12:48:11 +0000131For stm32l5xx boards, `STM32_Programmer_CLI <https://www.st.com/en/development-tools/stm32cubeprog.html>`__
132is used to configure security protections and to write the code in internal flash.
133A version is available for Linux and Windows host machine.
Ludovic Barre8a77bdd2020-03-26 19:53:07 +0100134
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200135**************
Anton Komlev211aacf2020-11-02 12:48:11 +0000136Example setups
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200137**************
138
Anton Komlev211aacf2020-11-02 12:48:11 +0000139This section lists dependencies and some exact and tested steps to set-up a
140TF-M-m build environment under various OSes.
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200141
Anton Komlev211aacf2020-11-02 12:48:11 +0000142Ubuntu setup
143============
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200144
David Vincze4a6555e2019-11-06 09:32:13 +0100145Install the following tools:
146
Anton Komlev211aacf2020-11-02 12:48:11 +0000147- DS-5 |DS5_VERSION|.
148- Git tools v2.10.0
149- CMake (see the "Supported CMake versions" chapter)
150- GNU Make (see the "Supported make versions" chapter)
151- Python3 (3.6 or newer)
152- Python3 packages: *cryptography, pyasn1, yaml, jinja2 v2.10, cbor v1.0.0, click, imgtool v1.6.0*
David Vincze4a6555e2019-11-06 09:32:13 +0100153
Anton Komlev211aacf2020-11-02 12:48:11 +0000154 .. code-block:: bash
David Vincze4a6555e2019-11-06 09:32:13 +0100155
Anton Komlev211aacf2020-11-02 12:48:11 +0000156 pip3 install --user cryptography pyasn1 pyyaml jinja2 cbor click imgtool
David Vincze4a6555e2019-11-06 09:32:13 +0100157
Anton Komlev211aacf2020-11-02 12:48:11 +0000158- SRecord v1.58 (for Musca test chip boards)
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200159
Anton Komlev211aacf2020-11-02 12:48:11 +0000160Setup a shell to enable compiler toolchain and CMake after installation.
161------------------------------------------------------------------------
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200162
Antonio de Angelis065ce4a2019-06-04 14:02:33 +0100163To import Arm Compiler v6.10 in your bash shell console:
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200164
Anton Komlev211aacf2020-11-02 12:48:11 +0000165.. Warning::
166 Arm compiler specific environment variable may need updating based on
167 specific products and licenses as explained in
168 `product-and-toolkit-configuration <https://developer.arm.com/products/software-development-tools/license-management/resources/product-and-toolkit-configuration>`__.
169
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200170.. code-block:: bash
171
Antonio de Angelis065ce4a2019-06-04 14:02:33 +0100172 export PATH=<DS-5_PATH>/sw/ARMCompiler6.10/bin:$PATH
Vikas Katariya1c361cd2019-08-23 15:05:02 +0100173 export ARM_TOOL_VARIANT=ult
174 export ARM_PRODUCT_PATH=<DS-5_PATH>/sw/mappings
175 export ARMLMD_LICENSE_FILE=<LICENSE_FILE_PATH>
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200176
177To import CMake in your bash shell console:
178
179.. code-block:: bash
180
TTornblom8a8b4522020-06-10 11:13:32 +0200181 export PATH=<CMake path>/bin:$PATH
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200182
183To import GNU Arm in your bash shell console:
184
185.. code-block:: bash
186
TTornblom8a8b4522020-06-10 11:13:32 +0200187 export PATH=<bash path>/bin:$PATH
188
Anton Komlev211aacf2020-11-02 12:48:11 +0000189 To import IAR Arm compiler in your bash shell console:
TTornblom8a8b4522020-06-10 11:13:32 +0200190
191.. code-block:: bash
192
193 export PATH=<IAR compiler path>/bin:$PATH
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200194
Anton Komlev211aacf2020-11-02 12:48:11 +0000195Windows + Cygwin setup
196======================
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200197
David Vincze4a6555e2019-11-06 09:32:13 +0100198Install the following tools:
199
Anton Komlev211aacf2020-11-02 12:48:11 +0000200- uVision |KEIL_VERSION| or DS-5 |DS5_VERSION| (DS-5 Ultimate Edition) which
201 provides the Arm Compiler v6.10 compiler or GNU Arm compiler v6.3.1.
202- Git client latest version (https://git-scm.com/download/win)
203- CMake (`native Windows version <https://cmake.org/download/>`__,
204 see the `Supported CMake versions`_ chapter)
205- `Cygwin <https://www.cygwin.com/>`__. Tests done with version 2.877
206 (64 bits)
207- GNU make should be installed by selecting appropriate package during
208 cygwin
209 installation.
210- Python3 (3.6 or newer) `(native Windows version) <https://www.python.org/downloads/>`__
211- Python3 packages: *cryptography, pyasn1, yaml, jinja2 v2.10, cbor v1.0.0, click imgtool v1.6.0*
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200212
Anton Komlev211aacf2020-11-02 12:48:11 +0000213 .. code-block:: bash
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200214
Anton Komlev211aacf2020-11-02 12:48:11 +0000215 pip3 install --user cryptography pyasn1 pyyaml jinja2 cbor click imgtool
Anton Komlevb759e672020-11-02 12:15:44 +0000216
Anton Komlev211aacf2020-11-02 12:48:11 +0000217- `SRecord v1.63 <https://sourceforge.net/projects/srecord/>`__ (for Musca test
218 chip boards)
Anton Komlevb759e672020-11-02 12:15:44 +0000219
Anton Komlev211aacf2020-11-02 12:48:11 +0000220Setup Cygwin to enable a compiler toolchain and CMake after installation.
221-------------------------------------------------------------------------
Anton Komlevb759e672020-11-02 12:15:44 +0000222
Anton Komlev211aacf2020-11-02 12:48:11 +0000223If applicable, import Arm Compiler v6.10 in your shell console. To make this
224change permanent, add the command line into ~/.bashrc
Anton Komlevb759e672020-11-02 12:15:44 +0000225
226Armclang + DS-5
227^^^^^^^^^^^^^^^
Anton Komlev211aacf2020-11-02 12:48:11 +0000228.. Note::
229
230 - Arm compiler specific environment variable may need updating based on
231 specific products and licenses as explained in
232 `product-and-toolkit-configuration <https://developer.arm.com/products/software-development-tools/license-management/resources/product-and-toolkit-configuration>`__.
233 - Arm licensing related environment variables must use Windows paths, and not
234 the Cygwin specific one relative to */cygrive*.
235
Anton Komlevb759e672020-11-02 12:15:44 +0000236.. code-block:: bash
237
Anton Komlev211aacf2020-11-02 12:48:11 +0000238 export PATH=/cygdrive/c/<DS-5_PATH>/sw/ARMCompiler6.10/bin:$PATH
239 export ARM_PRODUCT_PATH=C:/<DS-5_PATH>/sw/mappings
240 export ARM_TOOL_VARIANT=ult
241 export ARMLMD_LICENSE_FILE=<LICENSE_FILE_PATH>
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200242
243Armclang + Keil MDK Arm
244^^^^^^^^^^^^^^^^^^^^^^^
245
Anton Komlev211aacf2020-11-02 12:48:11 +0000246.. Note::
247
248 - Arm compiler specific environment variable may need updating based
249 on specific products and licenses as explained in
250 `product-and-toolkit-configuration <https://developer.arm.com/products/software-development-tools/license-management/resources/product-and-toolkit-configuration>`__.
251
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200252.. code-block:: bash
253
Anton Komlev211aacf2020-11-02 12:48:11 +0000254 export PATH=/cygdrive/c/<uVision path>/ARM/ARMCLANG/bin:$PATH
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200255
256GNU Arm
257^^^^^^^
258
Anton Komlev211aacf2020-11-02 12:48:11 +0000259If applicable, import GNU Arm compiler v6.3.1 in your shell console. To make
260this change permanent, add the command line into ~/.bashrc
261
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200262.. code-block:: bash
263
Anton Komlev211aacf2020-11-02 12:48:11 +0000264 export PATH=<GNU Arm path>/bin:$PATH
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200265
Anton Komlev211aacf2020-11-02 12:48:11 +0000266CMake
267^^^^^
268
269To import CMake in your bash shell console:
270
271.. code-block:: bash
272
273 export PATH=/cygdrive/c/<CMake path>/bin:$PATH
274
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200275Building the documentation
Anton Komlev211aacf2020-11-02 12:48:11 +0000276==========================
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200277
Anton Komlev211aacf2020-11-02 12:48:11 +0000278The build system is prepared to support generation of two documents.
279The Reference Manual which is Doxygen based, and the User Guide which is
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200280Sphinx based. Both document can be generated in HTML and PDF format.
281
Anton Komlev211aacf2020-11-02 12:48:11 +0000282.. Note::
283
284 Support for document generation in the build environment is not mandatory.
285 Missing document generation tools will not block building the TF-M
286 firmware.
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200287
288To compile the TF-M Reference Manual
Anton Komlev211aacf2020-11-02 12:48:11 +0000289------------------------------------
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200290
291The following additional tools are needed:
292
293 - Doxygen v1.8.0 or later
294 - Graphviz dot v2.38.0 or later
295 - PlantUML v1.2018.11 or later
296 - Java runtime environment 1.8 or later (for running PlantUML)
297
Anton Komlev211aacf2020-11-02 12:48:11 +0000298For PDF generation the following tools are needed in addition to the
299above list:
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200300
Anton Komlev211aacf2020-11-02 12:48:11 +0000301 - LaTeX
302 - PdfLaTeX
303
304Set-up the needed tools
305^^^^^^^^^^^^^^^^^^^^^^^
306
307Linux
308"""""
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200309.. code-block:: bash
310
311 sudo apt-get install -y doxygen graphviz default-jre
312 mkdir ~/plantuml
313 curl -L http://sourceforge.net/projects/plantuml/files/plantuml.jar/download --output ~/plantuml/plantuml.jar
314
315For PDF generation:
316
317.. code-block:: bash
318
319 sudo apt-get install -y doxygen-latex
320
Anton Komlev211aacf2020-11-02 12:48:11 +0000321Windows + Cygwin
322""""""""""""""""
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200323
324Download and install the following tools:
325 - `Doxygen
326 1.8.8 <https://sourceforge.net/projects/doxygen/files/snapshots/doxygen-1.8-svn/windows/doxygenw20140924_1_8_8.zip/download>`__
327 - `Graphviz
328 2.38 <https://graphviz.gitlab.io/_pages/Download/windows/graphviz-2.38.msi>`__
329 - The Java runtime is part of the DS5 installation or can be
330 `downloaded from here <https://www.java.com/en/download/>`__
331 - `PlantUML <http://sourceforge.net/projects/plantuml/files/plantuml.jar/download>`__
332
Anton Komlev211aacf2020-11-02 12:48:11 +0000333For PDF generation:
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200334
Anton Komlev211aacf2020-11-02 12:48:11 +0000335 - `MikTeX <https://miktex.org/download>`__
336
337 .. Note::
338 When building the documentation the first time, MikTeX might prompt for
339 installing missing LaTeX components. Please allow the MikTeX package
340 manager to set-up these.
341
342Configure the shell
343^^^^^^^^^^^^^^^^^^^
344
345Linux
346"""""
347
348::
349
350 export PLANTUML_JAR_PATH=~/plantuml/plantuml.jar
351
352Windows + Cygwin
353""""""""""""""""
354
355Assumptions for the settings below:
356
357 - plantuml.jar is available at c:\\plantuml\\plantuml.jar
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200358 - doxygen, dot, and MikTeX binaries are available on the PATH.
359 - Java JVM is used from DS5 installation.
360
361::
362
Anton Komlev211aacf2020-11-02 12:48:11 +0000363 export PLANTUML_JAR_PATH=c:/plantuml/plantuml.jar
364 export PATH=$PATH:/cygdrive/c/<DS-5 path>/sw/java/bin
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200365
366To compile the TF-M User Guide
Anton Komlev211aacf2020-11-02 12:48:11 +0000367------------------------------
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200368
369The following additional tools are needed:
370
371 - Python3 and the following modules:
372 - Sphinx v1.7.9
373 - m2r v0.2.0
374 - sphinxcontrib-plantuml
375 - sphinx-rtd-theme
376 - Graphviz dot v2.38.0 or later
377 - PlantUML v1.2018.11 or later
378 - Java runtime environment 1.8 or later (for running PlantUML)
379
Anton Komlev211aacf2020-11-02 12:48:11 +0000380For PDF generation the following tools are needed in addition to the
381above list:
382
383 - LaTeX
384 - PdfLaTeX
385
386Set-up the needed tools
387^^^^^^^^^^^^^^^^^^^^^^^
388
389Linux
390"""""
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200391
392.. code-block:: bash
393
394 sudo apt-get install -y python3 graphviz default-jre
Anton Komlev211aacf2020-11-02 12:48:11 +0000395 pip --user install m2r Sphinx sphinx-rtd-theme sphinxcontrib-plantuml
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200396 mkdir ~/plantuml
397 curl -L http://sourceforge.net/projects/plantuml/files/plantuml.jar/download --output ~/plantuml/plantuml.jar
398
399For PDF generation:
400
401.. code-block:: bash
402
403 sudo apt-get install -y doxygen-latex
404
Anton Komlev211aacf2020-11-02 12:48:11 +0000405Windows + Cygwin
406""""""""""""""""
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200407Download and install the following tools:
Anton Komlev211aacf2020-11-02 12:48:11 +0000408 - Python3 `(native Windows version) <https://www.python.org/downloads/>`__
409 - Pip packages *m2r, Sphinx, sphinx-rtd-theme sphinxcontrib-plantuml*
410
411 .. code-block:: bash
412
413 pip --user install m2r Sphinx sphinx-rtd-theme sphinxcontrib-plantuml
Antonio de Angelis065ce4a2019-06-04 14:02:33 +0100414
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200415 - `Graphviz 2.38 <https://graphviz.gitlab.io/_pages/Download/windows/graphviz-2.38.msi>`__
Anton Komlev211aacf2020-11-02 12:48:11 +0000416 - The Java runtime is part of the DS5 installation or can be
417 `downloaded from here <https://www.java.com/en/download/>`__
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200418 - `PlantUML <http://sourceforge.net/projects/plantuml/files/plantuml.jar/download>`__
419
Anton Komlev211aacf2020-11-02 12:48:11 +0000420For PDF generation:
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200421
Anton Komlev211aacf2020-11-02 12:48:11 +0000422- `MikTeX <https://miktex.org/download>`__
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200423
424.. Note::
425 When building the documentation the first time, MikTeX might
426 prompt for installing missing LaTeX components. Please allow the MikTeX
427 package manager to set-up these.
428
Anton Komlev211aacf2020-11-02 12:48:11 +0000429Configure the shell
430^^^^^^^^^^^^^^^^^^^
431
432Linux
433"""""
434.. code-block:: bash
435
436 export PLANTUML_JAR_PATH=~/plantuml/plantuml.jar
437
438Windows + Cygwin
439""""""""""""""""
440
441Assumptions for the settings below:
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200442
443 - plantuml.jar is available at c:\\plantuml\\plantuml.jar
444 - doxygen, dot, and MikTeX binaries are available on the PATH.
445 - Java JVM is used from DS5 installation.
446
447.. code-block:: bash
448
Anton Komlev211aacf2020-11-02 12:48:11 +0000449 export PLANTUML_JAR_PATH=c:/plantuml/plantuml.jar
450 export PATH=$PATH:/cygdrive/c/<DS-5 path>/sw/java/bin
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200451
Galanakis, Minos757139a2019-11-11 15:00:11 +0000452**************************
453Tool & Dependency overview
454**************************
455
456To build the TF-M firmware the following tools are needed:
457
458.. csv-table:: Tool dependencies
459 :header: "Name", "Version", "Component"
460
Anton Komlev211aacf2020-11-02 12:48:11 +0000461 "C compiler",See `Supported C compilers`_,"Firmware"
462 "CMake",See `Supported CMake versions`_,
463 "GNU Make",See `Supported GNU make versions`_,
464 "tf-m-tests",See `External dependencies`_,
465 "mbed-crypto",See `External dependencies`_,
466 "MCUboot",See `External dependencies`_,
Galanakis, Minos757139a2019-11-11 15:00:11 +0000467 "Python",3.x,"Firmware, User Guide"
468 "yaml",,"Firmware"
469 "pyasn1",,"Firmware"
470 "jinja2",,"Firmware"
471 "cryptography",,"Firmware"
472 "cbor",,"Firmware"
Balint Matyi3bae8832020-06-22 15:34:12 +0200473 "click",,"Firmware"
Balint Matyid9abb492020-06-22 08:35:52 +0100474 "imgtool",,"Firmware"
Galanakis, Minos757139a2019-11-11 15:00:11 +0000475 "Doxygen",">1.8","Reference manual"
476 "Sphinx",">1.4","User Guide"
477 "sphinxcontrib-plantuml",,"User Guide"
478 "sphinx-trd-theme",,"User Guide"
479 "Git",,
480 "PlantUML",">v1.2018.11","Reference Manual, User Guide"
481 "Graphviz dot",">v2.38.0","Reference manual"
482 "Java runtime environment (JRE)",">1.8","Reference Manual, User Guide"
483 "LaTex",,"pdf version of Reference Manual and User Guide"
484 "PdfLaTex",,"pdf version of Reference Manual and User Guide"
485
486Dependency chain:
487
488.. uml::
489
490 @startuml
491 skinparam state {
492 BackgroundColor #92AEE0
493 FontColor black
494 FontSize 16
495 AttributeFontColor black
496 AttributeFontSize 16
497 BackgroundColor<<pdf>> #A293E2
498 BackgroundColor<<doc>> #90DED6
499 }
500 state fw as "Firmware" : TF-M binary
501 state c_comp as "C Compiler" : C99
502 state gmake as "GNU make"
503 state u_guide as "User Guide" <<doc>>
504 state refman as "Reference Manual" <<doc>>
505 state rtd_theme as "sphinx-rtd-theme" <<doc>>
506 state sphnix_puml as "sphinxcontrib-plantuml" <<doc>>
507 state JRE as "JRE" <<doc>> : Java Runtime Environment
508 state gwiz as "Graphwiz dot" <<doc>>
509 state Sphinx as "Sphinx" <<doc>>
510 state m2r as "m2r" <<doc>>
511 state PlantUML as "PlantUML" <<doc>>
512 state LaTex as "LaTex" <<pdf>>
513 state PdfLaTex as "PdfLaTex" <<<<pdf>>>>
514 state Doxygen as "Doxygen" <<doc>>
515
516 [*] --> fw
517 fw --> c_comp
518 fw --> CMake
519 CMake --> gmake
520 fw --> cryptography
521 fw --> pyasn1
522 fw --> yaml
523 fw --> jinja2
524 fw --> cbor
Balint Matyi3bae8832020-06-22 15:34:12 +0200525 fw --> click
Balint Matyid9abb492020-06-22 08:35:52 +0100526 fw --> imgtool
Galanakis, Minos757139a2019-11-11 15:00:11 +0000527 cryptography --> Python3
528 pyasn1 --> Python3
529 yaml --> Python3
530 jinja2 --> Python3
531 cbor --> Python3
Balint Matyi3bae8832020-06-22 15:34:12 +0200532 click --> Python3
Balint Matyid9abb492020-06-22 08:35:52 +0100533 imgtool --> Python3
Galanakis, Minos757139a2019-11-11 15:00:11 +0000534
535 [*] --> u_guide
536 u_guide --> Sphinx
537 Sphinx --> m2r
538 Sphinx --> rtd_theme
539 Sphinx --> sphnix_puml
540 m2r --> Python3
541 rtd_theme --> Python3
542 sphnix_puml --> Python3
543 Sphinx --> PlantUML
544 PlantUML --> JRE
545 PlantUML --> gwiz
546 Sphinx --> LaTex
547 LaTex --> PdfLaTex
548
549 [*] --> refman
550 refman --> Doxygen
551 Doxygen --> PlantUML
552 Doxygen --> LaTex
553 state Legend {
554 state x as "For PDF generation only" <<pdf>>
555 state y as "For document generation only" <<doc>>
556 state z as "Mandatory"
557 }
558
559 @enduml
560
Gyorgy Szingdb9783c2019-04-17 21:08:48 +0200561--------------
562
Ronald Cronc0c38fa2019-09-23 09:36:56 +0200563*Copyright (c) 2017-2020, Arm Limited. All rights reserved.*