diff options
| author | Josh Triplett <josh@joshtriplett.org> | 2021-07-06 20:54:54 -0700 |
|---|---|---|
| committer | Josh Triplett <josh@joshtriplett.org> | 2021-07-07 08:52:35 -0700 |
| commit | 84d6e8aed3af940c53e49e342575e91f502c7bd4 (patch) | |
| tree | 2091248b3ab1995da65abe55c9d1e5d25c06bf6e /compiler/rustc_target/src/spec | |
| parent | c0bd5a584da4f26a1391163a0bdc21b34cf1ba54 (diff) | |
| download | rust-84d6e8aed3af940c53e49e342575e91f502c7bd4.tar.gz rust-84d6e8aed3af940c53e49e342575e91f502c7bd4.zip | |
Implement cfg(target_abi) (RFC 2992)
Add an `abi` field to `TargetOptions`, defaulting to "". Support using `cfg(target_abi = "...")` for conditional compilation on that field. Gated by `feature(cfg_target_abi)`. Add a test for `target_abi`, and a test for the feature gate. Add `target_abi` to tidy as a platform-specific cfg. This does not add an abi to any existing target.
Diffstat (limited to 'compiler/rustc_target/src/spec')
| -rw-r--r-- | compiler/rustc_target/src/spec/mod.rs | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs index 0a5f8c17c63..aa7dbeb16f2 100644 --- a/compiler/rustc_target/src/spec/mod.rs +++ b/compiler/rustc_target/src/spec/mod.rs @@ -1025,6 +1025,9 @@ pub struct TargetOptions { pub os: String, /// Environment name to use for conditional compilation (`target_env`). Defaults to "". pub env: String, + /// ABI name to distinguish multiple ABIs on the same OS and architecture. For instance, `"eabi"` + /// or `"eabihf"`. Defaults to "". + pub abi: String, /// Vendor name to use for conditional compilation (`target_vendor`). Defaults to "unknown". pub vendor: String, /// Default linker flavor used if `-C linker-flavor` or `-C linker` are not passed @@ -1342,6 +1345,7 @@ impl Default for TargetOptions { c_int_width: "32".to_string(), os: "none".to_string(), env: String::new(), + abi: String::new(), vendor: "unknown".to_string(), linker_flavor: LinkerFlavor::Gcc, linker: option_env!("CFG_DEFAULT_LINKER").map(|s| s.to_string()), @@ -1919,6 +1923,7 @@ impl Target { key!(c_int_width = "target-c-int-width"); key!(os); key!(env); + key!(abi); key!(vendor); key!(linker_flavor, LinkerFlavor)?; key!(linker, optional); @@ -2152,6 +2157,7 @@ impl ToJson for Target { target_option_val!(c_int_width, "target-c-int-width"); target_option_val!(os); target_option_val!(env); + target_option_val!(abi); target_option_val!(vendor); target_option_val!(linker_flavor); target_option_val!(linker); |
