pub enum Tier {
Supported,
SupportedWithEvidence,
InProgress,
Recognized,
}Expand description
What is known to be true about a target.
The ordering is the useful one: Tier::Supported is the smallest, so min picks the better
of two tiers and a sorted list starts with the best supported targets.
Variants§
Supported
Rungs 0, 1 and 2 pass on hardware at every optimization level, the ABI differential is green against GCC, code quality is measured and within bound, and every hardening flag works.
SupportedWithEvidence
Rungs 0 and 1 pass, on hardware or under qemu-user, the ABI differential is green, a sysroot ships or fetches, and code quality is measured and published whatever it says.
InProgress
Objects are emitted and a linked program runs the smoke test. No rung passes yet.
Recognized
The tuple parses and --print-config is correct. Nothing is emitted.
This tier exists so that a user asking for a target we have no back end for is told exactly that, with an issue number, rather than being told the compiler has never heard of their machine. Those two messages lead a user to opposite conclusions.
Implementations§
Source§impl Tier
impl Tier
Sourcepub const fn number(self) -> u8
pub const fn number(self) -> u8
The number, which is how the spec and every issue refer to these.
Sourcepub const fn describe(self) -> &'static str
pub const fn describe(self) -> &'static str
The words the README uses for this tier, which are deliberately weaker than the tier number as the tier gets worse.
Sourcepub const fn compiles_and_links(self) -> bool
pub const fn compiles_and_links(self) -> bool
Whether a program for this target can be compiled and linked today.
True for tiers 1, 2 and 3. spec/cross-compile/04-target-matrix.md measures claim 1 against the count
of rows for which this holds.