wolfTPM/docs/dev/docs-build.md

2.4 KiB

Building the wolfTPM manual

This file is for maintainers. It is not part of the published manual (the build excludes docs/dev/).

Layout

docs/ is the single source of the manual. The wolfSSL/documentation repo renders it to HTML and PDF for the website; nothing in documentation/wolfTPM/ holds manual content any more.

  • docs/*.md are the English manual pages. Each one is a page in mkdocs.yml nav, and the set of pages in the nav must match the files on disk.
  • docs/fwtpm/ is the self-contained firmware TPM section.
  • docs/ja/ is the Japanese mirror, built from mkdocs-ja.yml.
  • docs/assets/ holds the logo and CSS for local mkdocs serve previews only. The website build takes those from the documentation repo's common/.
  • docs/dev/ holds maintainer notes like this one and is kept out of the manual.
  • The API reference pages (group__*.md, *_8h.md) are generated at build time by Doxygen and doxybook2 from the headers, so they are listed in the nav but do not exist in docs/.

Keep the mkdocs.yml nav and the mkdocs-ja.yml nav in step with the pages.

Local build

Run from the repo root:

git clone --recurse-submodules https://github.com/wolfSSL/documentation.git build/documentation
git -C build/documentation checkout "$(cat tools/docs-manual/documentation-rev)"
docker build --pull -t wolftpm-docs:local docker/docs
docker run --rm --user "$(id -u):$(id -g)" --env HOME=/tmp \
    --mount "type=bind,source=$PWD,target=/work/wolfTPM" \
    --workdir /work/wolfTPM wolftpm-docs:local \
    python3 tools/docs_manual.py build \
        --documentation-root /work/wolfTPM/build/documentation \
        --source-root /work/wolfTPM --target all

Outputs land in build/documentation/wolfTPM/: html/ and wolfTPM-Manual.pdf. Add --lang ja for the Japanese manual (wolfTPM-Manual-jp.pdf). For a quick HTML preview without the full toolchain, mkdocs serve against mkdocs.yml works once mkdocs and mkdocs-material are installed; the generated API pages show as warnings because Doxygen has not run.

Website

The wolfSSL/documentation repo has a wolfTPM target that clones this repo at a pinned ref and runs tools/docs_manual.py. The nightly build publishes to https://www.wolfssl.com/documentation/manuals/wolftpm/. The website upload list lives outside these public repos; if it names manuals explicitly rather than publishing all build output, it needs a one-time wolfTPM entry.