pub struct BuildGraph {
pub actions: Vec<BuildAction>,
pub dialect: Dialect,
pub default_outputs: Vec<Utf8PathBuf>,
pub compile_commands: Vec<CompileCommand>,
pub standard_violations: Vec<StandardViolation>,
pub standard_compat_violations: Vec<StandardCompatViolation>,
}Expand description
Backend-independent description of everything that needs to happen to
realize a build. A backend (currently cabin-ninja) walks this graph,
lowers each semantic BuildAction to a concrete command via
cabin_driver::lower() for the graph’s Dialect, and emits the
equivalent build-system-specific representation.
Fields§
§actions: Vec<BuildAction>All actions to execute, in topological order. Earlier actions in the vector never depend on later actions. These are semantic actions: compile / archive / link intent, not pre-lowered argv.
dialect: DialectCommand-line dialect every action in this graph is lowered for. The backend reads it to pick compile/archive/link spellings and the matching Ninja dependency-tracking mode.
default_outputs: Vec<Utf8PathBuf>Output paths that should be marked as default targets.
compile_commands: Vec<CompileCommand>One entry per C/C++ source compile, used to emit
compile_commands.json. Both languages contribute entries
with their language-appropriate compiler driver and flags
recorded in arguments.
standard_violations: Vec<StandardViolation>Standards problems recorded against planned compiles. The
planner records these instead of failing eagerly: the
cabin check rewrite prunes dependency compiles after
planning, and a violation that does not survive into the
final graph must not gate the command. The CLI surfaces
survivors through crate::validate_planned_standards
before anything is lowered or written.
standard_compat_violations: Vec<StandardCompatViolation>Violated dependency edges from the post-resolution
standard-compatibility pass (crate::standard_compat).
Always empty unless the pass ran
(crate::PlanRequest::standard_compat). The CLI renders
non-ignored records as errors that fail the command and
ignored records as unchecked-edge notes; the cabin check
rewrite carries them through unchanged (they describe
resolved edges, not planned compiles).
Trait Implementations§
Source§impl Clone for BuildGraph
impl Clone for BuildGraph
Source§fn clone(&self) -> BuildGraph
fn clone(&self) -> BuildGraph
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for BuildGraph
impl Debug for BuildGraph
impl Eq for BuildGraph
Source§impl PartialEq for BuildGraph
impl PartialEq for BuildGraph
Source§fn eq(&self, other: &BuildGraph) -> bool
fn eq(&self, other: &BuildGraph) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for BuildGraph
Auto Trait Implementations§
impl Freeze for BuildGraph
impl RefUnwindSafe for BuildGraph
impl Send for BuildGraph
impl Sync for BuildGraph
impl Unpin for BuildGraph
impl UnsafeUnpin for BuildGraph
impl UnwindSafe for BuildGraph
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.