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 buildOr via Docker:
predep build-dockerTo assemble a release archive:
predep packageBuild 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):
docker build -t predoc-gui gui/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.