Skip to main content

cabin_core/compiler/
mod.rs

1//! Typed compiler / tool identity and capability model.
2//!
3//! Cabin's build planner emits GCC/Clang-style commands. The
4//! `ResolvedToolchain` (see [`crate::toolchain`]) says *which*
5//! tools the user picked; this module says *what those tools are*
6//! and *what they can do*. The
7//! resolver in `cabin-toolchain::detect` runs harmless `--version`
8//! invocations against each resolved tool, hands the output to the
9//! pure parsers in this module, and assembles a typed
10//! [`ToolchainDetectionReport`].
11//!
12//! This module is data and pure logic only. Process spawning,
13//! filesystem traversal, and CLI dispatch live elsewhere.
14
15mod capabilities;
16mod identity;
17mod parsing;
18mod report;
19#[cfg(test)]
20mod tests;
21mod validation;
22
23pub use capabilities::{
24    ArchiverCapabilities, Capability, CapabilitySource, CompilerCapabilities,
25    c_standard_capability, cxx_standard_capability, derive_ar_capabilities,
26    derive_cxx_capabilities, standard_support_detail,
27};
28pub use identity::{
29    ArchiverIdentity, ArchiverKind, CompilerIdentity, CompilerKind, CompilerVersion,
30};
31pub use parsing::{parse_ar_version_output, parse_cxx_version_output};
32pub use report::{ToolDetection, ToolchainDetectionReport};
33pub use validation::{
34    ToolDetectionError, validate_ar_for_backend, validate_c_standards, validate_cc_for_backend,
35    validate_cxx_for_backend, validate_cxx_standards,
36};