blob: 4a480590bc6167b8883e92c4f6074b6e26e101bd [file] [log] [blame]
Paul Beesley5d3799b2019-10-07 10:04:48 +00001Building Documentation
2======================
3
4To create a rendered copy of this documentation locally you can use the
5`Sphinx`_ tool to build and package the plain-text documents into HTML-formatted
6pages.
7
8If you are building the documentation for the first time then you will need to
9check that you have the required software packages, as described in the
10*Prerequisites* section that follows.
11
12.. note::
13 An online copy of the documentation is available at
14 https://www.trustedfirmware.org/docs/tf-a, if you want to view a rendered
15 copy without doing a local build.
16
17Prerequisites
18-------------
19
Boyan Karatotevdb858782022-10-27 13:55:12 +010020For building a local copy of the |TF-A| documentation you will need:
Paul Beesley5d3799b2019-10-07 10:04:48 +000021
22- Python 3 (3.5 or later)
23- PlantUML (1.2017.15 or later)
Boyan Karatotevdb858782022-10-27 13:55:12 +010024- Python modules specified in ``docs/requirements.txt``
Paul Beesley5d3799b2019-10-07 10:04:48 +000025
Boyan Karatotevdb858782022-10-27 13:55:12 +010026 You can install these with ``pip3`` (the Python Package Installer) by
27 passing it the requirements file above (with ``-r``). An optional ``--user``
28 argument will install them locally, but you have to add their location to
29 $PATH (pip will emit a warning). Alternatively, they can be installed
30 globally (but will probably require root privileges).
Paul Beesleyd2fcc4e2019-05-29 13:59:40 +010031
Boyan Karatotevdb858782022-10-27 13:55:12 +010032 .. note::
33 Although not necessary, it is recommended you use a virtual environment.
34 More advanced usage instructions for *pip* are beyond the scope of this
35 document but you can refer to the `pip homepage`_ for detailed guides.
36
37- Optionally, the `Dia`_ application can be installed if you need to edit
38 existing ``.dia`` diagram files, or create new ones.
Paul Beesley5d3799b2019-10-07 10:04:48 +000039
Boyan Karatotev60c168c2022-11-15 17:39:22 +000040An example set of installation commands for Ubuntu follows, assuming that the
41working directory is ``docs``:
Paul Beesley5d3799b2019-10-07 10:04:48 +000042
43.. code:: shell
44
Paul Beesleyd2fcc4e2019-05-29 13:59:40 +010045 sudo apt install python3 python3-pip plantuml [dia]
Paul Beesley5d3799b2019-10-07 10:04:48 +000046 pip3 install [--user] -r requirements.txt
47
48.. note::
49 Several other modules will be installed as dependencies. Please review
50 the list to ensure that there will be no conflicts with other modules already
51 installed in your environment.
52
Paul Beesley5d3799b2019-10-07 10:04:48 +000053Building rendered documentation
54-------------------------------
55
Madhukar Pappireddy46adb1b2020-01-28 12:41:20 -060056Documents can be built into HTML-formatted pages from project root directory by
57running the following command.
Paul Beesley5d3799b2019-10-07 10:04:48 +000058
59.. code:: shell
60
Madhukar Pappireddy46adb1b2020-01-28 12:41:20 -060061 make doc
Paul Beesley5d3799b2019-10-07 10:04:48 +000062
63Output from the build process will be placed in:
64
65::
66
Leonardo Sandoval8f9f6882020-06-10 18:26:28 -050067 docs/build/html
Madhukar Pappireddy46adb1b2020-01-28 12:41:20 -060068
69We also support building documentation in other formats. From the ``docs``
70directory of the project, run the following command to see the supported
71formats. It is important to note that you will not get the correct result if
72the command is run from the project root directory, as that would invoke the
73top-level Makefile for |TF-A| itself.
74
75.. code:: shell
76
77 make help
Paul Beesley5d3799b2019-10-07 10:04:48 +000078
Leonardo Sandoval8f9f6882020-06-10 18:26:28 -050079Building rendered documentation from a container
80------------------------------------------------
81
82There may be cases where you can not either install or upgrade required
83dependencies to generate the documents, so in this case, one way to
84create the documentation is through a docker container. The first step is
85to check if `docker`_ is installed in your host, otherwise check main docker
86page for installation instructions. Once installed, run the following script
87from project root directory
88
89.. code:: shell
90
91 docker run --rm -v $PWD:/TF sphinxdoc/sphinx \
92 bash -c 'cd /TF && \
93 pip3 install plantuml -r ./docs/requirements.txt && make doc'
94
95The above command fetches the ``sphinxdoc/sphinx`` container from `docker
96hub`_, launches the container, installs documentation requirements and finally
97creates the documentation. Once done, exit the container and output from the
98build process will be placed in:
99
100::
101
102 docs/build/html
103
Paul Beesley5d3799b2019-10-07 10:04:48 +0000104--------------
105
106*Copyright (c) 2019, Arm Limited. All rights reserved.*
107
108.. _Sphinx: http://www.sphinx-doc.org/en/master/
109.. _pip homepage: https://pip.pypa.io/en/stable/
Paul Beesleyd2fcc4e2019-05-29 13:59:40 +0100110.. _Dia: https://wiki.gnome.org/Apps/Dia
Leonardo Sandoval8f9f6882020-06-10 18:26:28 -0500111.. _docker: https://www.docker.com/
112.. _docker hub: https://hub.docker.com/repository/docker/sphinxdoc/sphinx