cc/
target.rs

1//! Parsing of `rustc` target names to match the values exposed to Cargo
2//! build scripts (`CARGO_CFG_*`).
3
4mod apple;
5mod generated;
6mod llvm;
7mod parser;
8
9pub(crate) use parser::TargetInfoParser;
10
11/// Information specific to a `rustc` target.
12///
13/// See <https://doc.rust-lang.org/cargo/appendix/glossary.html#target>.
14#[derive(Debug, PartialEq, Clone)]
15pub(crate) struct TargetInfo<'a> {
16    /// The full architecture, including the subarchitecture.
17    ///
18    /// This differs from `cfg!(target_arch)`, which only specifies the
19    /// overall architecture, which is too coarse for certain cases.
20    pub full_arch: &'a str,
21    /// The overall target architecture.
22    ///
23    /// This is the same as the value of `cfg!(target_arch)`.
24    pub arch: &'a str,
25    /// The target vendor.
26    ///
27    /// This is the same as the value of `cfg!(target_vendor)`.
28    pub vendor: &'a str,
29    /// The operating system, or `none` on bare-metal targets.
30    ///
31    /// This is the same as the value of `cfg!(target_os)`.
32    pub os: &'a str,
33    /// The environment on top of the operating system.
34    ///
35    /// This is the same as the value of `cfg!(target_env)`.
36    pub env: &'a str,
37    /// The ABI on top of the operating system.
38    ///
39    /// This is the same as the value of `cfg!(target_abi)`.
40    pub abi: &'a str,
41}