Build#

predoc uses predep to orchestrate all build recipes. predep is a self-building tool — it compiles itself and then executes the stages defined in predep.toml files throughout the project.

To build everything:

predep build

Or via Docker:

predep build-docker

To assemble a release archive:

predep package

Build Steps#

All build recipes are declared in predep.toml at each subproject root:

Step Recipe File Produces
GUI gui/predep.toml gui/bin/predoc-gui
Editor JS editor/predep.toml editor/public/assets/app.js

The root predep.toml ties them together via [[include]] directives and defines the top-level build and build-docker stage groups.

Each subproject recipe uses Docker by default and falls back to native tools when available.

GUI#

Uses gui/Dockerfile (debian:trixie-slim, Qt6 WebEngine, Saucer built from source):

  1. docker build -t predoc-gui gui/
  2. docker cp <container>:/build/bin/predoc-gui gui/bin/

Falls back to native build if premake5 and saucer headers are found at /usr/local/include/saucer/.

The Dockerfile is single-stage — the binary is extracted and runs on the host, dynamically linking the host’s Qt6 at runtime.

Build Artifacts#

gui/bin/predoc-gui             # ~1.2MB — GUI binary (links Qt6 at runtime)
editor/public/assets/app.js  # Editor frontend JS (minified)
editor/public/assets/app.css # Editor frontend CSS (minified)
editor/public/index.html     # Static HTML shell

ssg/
  hugo.toml                  # Hugo configuration
  themes/book/               # Hugo Book theme (downloaded on fetch-deps)

These are the only files needed at runtime. Source files (gui/src/, editor/src/) and dev dependencies are not needed on the target machine.