diff options
| author | bors <bors@rust-lang.org> | 2015-09-26 00:14:39 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2015-09-26 00:14:39 +0000 |
| commit | 78ce46ffddfed7dee58569b5f30242b00d299dfe (patch) | |
| tree | ae80a901ab56af79be5338bdb61cf2bdffc6a66b /src/libsyntax | |
| parent | 69f27c856b3e18e54b9a48412a918c91fe8b08e7 (diff) | |
| parent | abfedb7d16fc536e85e271f945195335ca0ba9e0 (diff) | |
| download | rust-78ce46ffddfed7dee58569b5f30242b00d299dfe.tar.gz rust-78ce46ffddfed7dee58569b5f30242b00d299dfe.zip | |
Auto merge of #28612 - gandro:targetvendor, r=alexcrichton
This adds a new target property, `target_vendor`. It is to be be used as a matcher for conditional compilation. The vendor is part of the [autoconf target triple](http://llvm.org/docs/doxygen/html/classllvm_1_1Triple.html#details): `<arch><sub>-<vendor>-<os>-<env>`. `arch`, `target_os` and `target_env` are already supported by Rust. This change was suggested in PR #28593. It enables conditional compilation based on the vendor. This is needed for the rumprun target, which needs to match against both, target_os and target_vendor. The default value for `target_vendor` is "unknown", "apple" and "pc" are other common values. Matching against the `target_vendor` is introduced behind the feature gate `#![feature(cfg_target_vendor)]`. This is the first time I messed around with rustc internals. I just added the my code where I found the existing `target_*` variables, hopefully I haven't missed anything. Please review with care. :) r? @alexcrichton
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/feature_gate.rs | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/libsyntax/feature_gate.rs b/src/libsyntax/feature_gate.rs index eaf964a3c64..6643dad6a68 100644 --- a/src/libsyntax/feature_gate.rs +++ b/src/libsyntax/feature_gate.rs @@ -203,6 +203,9 @@ const KNOWN_FEATURES: &'static [(&'static str, &'static str, Option<u32>, Status // allow `#[omit_gdb_pretty_printer_section]` ("omit_gdb_pretty_printer_section", "1.5.0", None, Active), + + // Allows cfg(target_vendor = "..."). + ("cfg_target_vendor", "1.5.0", None, Active), ]; // (changing above list without updating src/doc/reference.md makes @cmr sad) @@ -377,6 +380,7 @@ macro_rules! cfg_fn { const GATED_CFGS: &'static [(&'static str, &'static str, fn(&Features) -> bool)] = &[ // (name in cfg, feature, function to check if the feature is enabled) ("target_feature", "cfg_target_feature", cfg_fn!(|x| x.cfg_target_feature)), + ("target_vendor", "cfg_target_vendor", cfg_fn!(|x| x.cfg_target_vendor)), ]; #[derive(Debug, Eq, PartialEq)] @@ -471,6 +475,7 @@ pub struct Features { pub default_type_parameter_fallback: bool, pub type_macros: bool, pub cfg_target_feature: bool, + pub cfg_target_vendor: bool, pub augmented_assignments: bool, } @@ -500,6 +505,7 @@ impl Features { default_type_parameter_fallback: false, type_macros: false, cfg_target_feature: false, + cfg_target_vendor: false, augmented_assignments: false, } } @@ -1069,6 +1075,7 @@ fn check_crate_inner<F>(cm: &CodeMap, span_handler: &SpanHandler, default_type_parameter_fallback: cx.has_feature("default_type_parameter_fallback"), type_macros: cx.has_feature("type_macros"), cfg_target_feature: cx.has_feature("cfg_target_feature"), + cfg_target_vendor: cx.has_feature("cfg_target_vendor"), augmented_assignments: cx.has_feature("augmented_assignments"), } } |
