.. _documentation: Documentation ############# The main documentation is build with `sphinx `_. Code docs are generated using `doxygen `_. Generally, we try to keep the documentation as close to the code as possible, so it's easier to keep it up to date: - Board specific documentation in */boards/arm/ardep* - samples specific documentation sample-specific directory under */samples* - scripts and ``west`` subcommands in */scripts* - generic documentaion in */doc* Building the documentation ========================== Install necessary dependencies: .. tabs:: .. tab:: Linux .. code-block:: bash pip install -r doc/requirements.txt apt install doxygen rsync .. tab:: Windows - Install the python requirements with: .. code-block:: powershell pip install -r doc/requirements.txt - Install doxygen from the following link: https://www.doxygen.nl/download.html - The ``rsync`` command will be used through the `Windows Subsystem for Linux (WSL) `_. To build the API Reference run: .. code-block:: bash doxygen To build the html documentation run: .. code-block:: bash make html This copies all \*.rst and associated media files from the project root into */doc/_board* directory, so sphinx can find and correctly include these files. If you don't want to copy any files, you can run ``make html SYNC=off`` instead: Live-preview (sort of...) ========================== To archive something like a hot-reload / live-preview, you can use a command like this from inside the *doc* directory: .. tabs:: .. tab:: Linux .. code-block:: bash sphinx-autobuild \ --pre-build 'rsync -avm --exclude="/doc" --include="*/" --include="*.rst" --include="*.png" --exclude="*" .. _board' \ --pre-build "mkdir -p _build/html"\ --pre-build "doxygen" \ . _build/html .. tab:: Windows .. code-block:: powershell sphinx-autobuild ` --pre-build "wsl rsync -avm --exclude=/doc --include=*/ --include=*.rst --include=*.png --exclude=* .. _board" ` --pre-build "python -c \"import pathlib; pathlib.Path('_build/html').mkdir(parents=True, exist_ok=True)\"" ` --pre-build "doxygen" ` . _build/html The pre-build commands are taken from the Makefile. This automatically copies all files and rebuilds the documentation, if sphinx notices a change. But since sphinx only works on a copy of the original files, changes outside of the *doc* directory will not be noticed. To force a rebuild, *save* or `touch` a file inside the *doc* directory. If you want to omit the file sync and api-reference build, simply call the command without the ``--pre-build`` options. Including files above the *doc* directory ========================================= In sphinx you can't include a file above the sphinx root directory (here */doc*) in the toctree. To bypass this, we copy all \*.rst and related media files into the */doc* directory before the build using rsync. The directory structure should be preserved, so referencing a file in the toctree should follow the same path as in the repository (e.g. *samples/uds/index.rst* to reference the uds sample). When you add a media file, make sure it is copied by rsync. If necessary, update the command in the Makefile.