.. SPDX-License-Identifier: GPL-2.0+: Building documentation ====================== The U-Boot documentation is based on the Sphinx documentation generator. In addition to the Python packages listed in ``doc/sphinx/requirements.txt``, the following dependencies are needed to build the documentation: * fontconfig * graphviz * imagemagick * texinfo (if building the `Infodoc documentation`_) HTML documentation ------------------ The *htmldocs* target is used to build the HTML documentation. It uses the `Read the Docs Sphinx theme `_. .. code-block:: bash # Create Python environment 'myenv' python3 -m venv myenv # Activate the Python environment . myenv/bin/activate # Install build requirements python3 -m pip install -r doc/sphinx/requirements.txt # Build the documentation make htmldocs # Deactivate the Python environment deactivate # Display the documentation in a graphical web browser x-www-browser doc/output/index.html The HTML documentation is published at https://u-boot.readthedocs.io. The build process for that site is controlled by the file *.readthedocs.yml*. Infodoc documentation --------------------- The *infodocs* target builds both a texinfo and an info file: .. code-block:: bash # Create Python environment 'myenv' python3 -m venv myenv # Activate the Python environment . myenv/bin/activate # Install build requirements python3 -m pip install -r doc/sphinx/requirements.txt # Build the documentation make infodocs # Deactivate the Python environment deactivate # Display the documentation info doc/output/texinfo/u-boot.info PDF documentation ----------------- The *pdfdocs* target is meant to be used to build PDF documenation. As v2023.01 it fails with 'LaTeX Error: Too deeply nested'. We can use texi2pdf instead: .. code-block:: bash # Create Python environment 'myenv' python3 -m venv myenv # Activate the Python environment . myenv/bin/activate # Install build requirements python3 -m pip install -r doc/sphinx/requirements.txt # Build the documentation make texinfodocs # Deactivate the Python environment deactivate # Convert to PDF texi2pdf doc/output/texinfo/u-boot.texi Texinfo documentation --------------------- To build only the texinfo documentation the *texinfodocs* target is used: .. code-block:: bash # Create Python environment 'myenv' python3 -m venv myenv # Activate the Python environment . myenv/bin/activate # Install build requirements python3 -m pip install -r doc/sphinx/requirements.txt # Build the documentation make texinfodocs # Deactivate the Python environment deactivate The output is in file *doc/output/texinfo/u-boot.texi*.