BYOS: build your own stack
A CMake build platform and dependency provider with reusable CI (continuous integration) pipelines. Reproducible builds. Reusable dependencies. Consistent CI. Fewer "works on my machine" surprises.
externpro standardizes toolchains, dependencies, and CI workflows across developers, machines, and repositories—so teams ship faster with less drift and duplication.
-
externpro (core) 🧰 CMake build platform + dependency provider model + reusable workflows (
xpsync,xpbuild,xptag,xprelease). -
buildpro (Linux toolchain images) 🐳 Linux Docker build images used by externpro-enabled repos to keep compilers/tools/system deps consistent.
-
tutorial (adoption walkthrough) 🎓 Vendor externpro as a
.devcontainersubmodule, runxpSync, followxpTag → xpBuild → xpRelease, and consume externpro-produced deps viafind_package().
- Add externpro as a submodule to your project — the tutorial walks through the exact steps
- Run the bootstrap script to set up the xpro branch, copy workflow templates, and configure externpro
- Verify the setup works locally with
cmake --list-presetsandcmake --preset=<platform> - Run the
xpSyncworkflow to sync externpro and open a PR that standardizes presets, workflows, and repo wiring - Use other org repos as reference implementations (see the externpro projects table: https://github.com/externpro/externpro/blob/main/cmake/README.md)
- Start building and delivering your projects on multiple OSes, architectures, and compilers - creating packages that can be consumed by other projects quickly and consistently!
- Read the core overview in externpro
- Review the foundational patterns in buildpro
| Capability | What it means |
|---|---|
| 🏗️ Build platform | A consistent build + toolchain baseline across Linux/macOS/Windows, x86_64/arm64, and multiple compiler toolchains (Linux buildpro containers; macOS/Windows GitHub-hosted runners) |
| 📦 Dependency provider | Dependencies are provided to your build as ready-to-use packages/targets, so consuming projects can just find_package() and link (rather than each repo reinventing fetch/build/patch) |
| 🔁 Reusable CI | Standardized sync/build/test/tag/release pipelines with supply chain outputs (SBOM/attestation) |
Most repositories in the organization act as reference implementations—examples of integrating externpro and using the workflow as intended. See the externpro projects table: https://github.com/externpro/externpro/blob/main/cmake/README.md