Expand description
Typed C/C++ toolchain selection model.
Cabin builds C/C++ packages with three external tools — a C
compiler, a C++ compiler, and a static-library archiver. The
selection is explicit, deterministic, and auditable: every
component owns a typed model in this module, and the resolver
in cabin-toolchain produces one ResolvedToolchain per
build.
This module owns data only. PATH lookup, env reading, and
filesystem checks live in cabin-toolchain. Manifest parsing
lives in cabin-manifest. CLI flag handling lives in
cabin.
Structs§
- Conditional
Toolchain Decl - Conditional
[target.'cfg(...)'.toolchain]block. - Resolved
Tool - One concrete tool, ready to be invoked.
- Resolved
Toolchain - Fully-resolved C/C++ toolchain.
- Tool
Selection - CLI / orchestration-supplied request for one tool.
- Toolchain
Decl - Manifest-shape declaration for tool selection.
- Toolchain
Selection - Aggregate of
ToolSelections, one perToolKind. - Toolchain
Settings - Workspace-root toolchain settings derived from the manifest.
Holds both the unconditional
[toolchain]table and any[target.'cfg(...)'.toolchain]overrides.
Enums§
- Tool
Kind - Which kind of tool a selection refers to.
- Tool
Source - Where a tool selection ultimately came from. Recorded alongside
the resolved tool so
cabin metadatacan show the precedence without re-deriving it. - Tool
Spec - Either a bare command name (resolved against
PATH) or an explicit filesystem path. The resolver turns either form into a concretePathBufwhen it builds aResolvedTool. - Toolchain
Resolution Error - Errors produced while resolving a toolchain.