diff --git a/src/librustc/session/config.rs b/src/librustc/session/config.rs index 050ccd64712..072761f2754 100644 --- a/src/librustc/session/config.rs +++ b/src/librustc/session/config.rs @@ -621,6 +621,7 @@ pub fn default_configuration(sess: &Session) -> ast::CrateConfig { let arch = &sess.target.target.arch; let wordsz = &sess.target.target.target_pointer_width; let os = &sess.target.target.target_os; + let env = &sess.target.target.target_env; let fam = match sess.target.target.options.is_like_windows { true => InternedString::new("windows"), @@ -634,8 +635,8 @@ pub fn default_configuration(sess: &Session) -> ast::CrateConfig { mk(InternedString::new("target_family"), fam), mk(InternedString::new("target_arch"), intern(arch)), mk(InternedString::new("target_endian"), intern(end)), - mk(InternedString::new("target_pointer_width"), - intern(wordsz)) + mk(InternedString::new("target_pointer_width"), intern(wordsz)), + mk(InternedString::new("target_env"), intern(env)), ]; if sess.opts.debug_assertions { ret.push(attr::mk_word_item(InternedString::new("debug_assertions"))); diff --git a/src/librustc_back/target/aarch64_apple_ios.rs b/src/librustc_back/target/aarch64_apple_ios.rs index 2ceb34e68b7..dd6bc672a03 100644 --- a/src/librustc_back/target/aarch64_apple_ios.rs +++ b/src/librustc_back/target/aarch64_apple_ios.rs @@ -22,6 +22,7 @@ pub fn target() -> Target { target_pointer_width: "64".to_string(), arch: "aarch64".to_string(), target_os: "ios".to_string(), + target_env: "".to_string(), options: TargetOptions { features: "+neon,+fp-armv8,+cyclone".to_string(), eliminate_frame_pointer: false, diff --git a/src/librustc_back/target/aarch64_linux_android.rs b/src/librustc_back/target/aarch64_linux_android.rs index 64b0e0cfd6b..fcc901fc81f 100644 --- a/src/librustc_back/target/aarch64_linux_android.rs +++ b/src/librustc_back/target/aarch64_linux_android.rs @@ -24,6 +24,7 @@ pub fn target() -> Target { target_pointer_width: "64".to_string(), arch: "aarch64".to_string(), target_os: "android".to_string(), + target_env: "".to_string(), options: base, } } diff --git a/src/librustc_back/target/aarch64_unknown_linux_gnu.rs b/src/librustc_back/target/aarch64_unknown_linux_gnu.rs index a3ef6372f06..18e67d066d0 100644 --- a/src/librustc_back/target/aarch64_unknown_linux_gnu.rs +++ b/src/librustc_back/target/aarch64_unknown_linux_gnu.rs @@ -19,6 +19,7 @@ pub fn target() -> Target { llvm_target: "aarch64-unknown-linux-gnu".to_string(), target_endian: "little".to_string(), target_pointer_width: "64".to_string(), + target_env: "gnu".to_string(), arch: "aarch64".to_string(), target_os: "linux".to_string(), options: base, diff --git a/src/librustc_back/target/arm_linux_androideabi.rs b/src/librustc_back/target/arm_linux_androideabi.rs index fad93441431..57712d18cba 100644 --- a/src/librustc_back/target/arm_linux_androideabi.rs +++ b/src/librustc_back/target/arm_linux_androideabi.rs @@ -31,6 +31,7 @@ pub fn target() -> Target { target_pointer_width: "32".to_string(), arch: "arm".to_string(), target_os: "android".to_string(), + target_env: "gnu".to_string(), options: base, } } diff --git a/src/librustc_back/target/arm_unknown_linux_gnueabi.rs b/src/librustc_back/target/arm_unknown_linux_gnueabi.rs index 32eccaf54b0..30015c4a7e6 100644 --- a/src/librustc_back/target/arm_unknown_linux_gnueabi.rs +++ b/src/librustc_back/target/arm_unknown_linux_gnueabi.rs @@ -23,6 +23,7 @@ pub fn target() -> Target { target_pointer_width: "32".to_string(), arch: "arm".to_string(), target_os: "linux".to_string(), + target_env: "gnueabi".to_string(), options: TargetOptions { features: "+v6".to_string(), diff --git a/src/librustc_back/target/arm_unknown_linux_gnueabihf.rs b/src/librustc_back/target/arm_unknown_linux_gnueabihf.rs index eff3601250f..8f8c7114e6e 100644 --- a/src/librustc_back/target/arm_unknown_linux_gnueabihf.rs +++ b/src/librustc_back/target/arm_unknown_linux_gnueabihf.rs @@ -23,6 +23,7 @@ pub fn target() -> Target { target_pointer_width: "32".to_string(), arch: "arm".to_string(), target_os: "linux".to_string(), + target_env: "gnueabihf".to_string(), options: TargetOptions { features: "+v6,+vfp2".to_string(), diff --git a/src/librustc_back/target/armv7_apple_ios.rs b/src/librustc_back/target/armv7_apple_ios.rs index 41376421886..3b55993659d 100644 --- a/src/librustc_back/target/armv7_apple_ios.rs +++ b/src/librustc_back/target/armv7_apple_ios.rs @@ -19,6 +19,7 @@ pub fn target() -> Target { target_pointer_width: "32".to_string(), arch: "arm".to_string(), target_os: "ios".to_string(), + target_env: "".to_string(), options: TargetOptions { features: "+v7,+vfp3,+neon".to_string(), .. opts(Arch::Armv7) diff --git a/src/librustc_back/target/armv7s_apple_ios.rs b/src/librustc_back/target/armv7s_apple_ios.rs index ef16aefdbd9..5a67e3fe127 100644 --- a/src/librustc_back/target/armv7s_apple_ios.rs +++ b/src/librustc_back/target/armv7s_apple_ios.rs @@ -19,6 +19,7 @@ pub fn target() -> Target { target_pointer_width: "32".to_string(), arch: "arm".to_string(), target_os: "ios".to_string(), + target_env: "".to_string(), options: TargetOptions { features: "+v7,+vfp4,+neon".to_string(), .. opts(Arch::Armv7s) diff --git a/src/librustc_back/target/i386_apple_ios.rs b/src/librustc_back/target/i386_apple_ios.rs index afe63d006cf..a9a073e2a8c 100644 --- a/src/librustc_back/target/i386_apple_ios.rs +++ b/src/librustc_back/target/i386_apple_ios.rs @@ -23,6 +23,7 @@ pub fn target() -> Target { target_pointer_width: "32".to_string(), arch: "x86".to_string(), target_os: "ios".to_string(), + target_env: "".to_string(), options: opts(Arch::I386) } } diff --git a/src/librustc_back/target/i686_apple_darwin.rs b/src/librustc_back/target/i686_apple_darwin.rs index fcea900283d..47b329982d4 100644 --- a/src/librustc_back/target/i686_apple_darwin.rs +++ b/src/librustc_back/target/i686_apple_darwin.rs @@ -26,6 +26,7 @@ pub fn target() -> Target { target_pointer_width: "32".to_string(), arch: "x86".to_string(), target_os: "macos".to_string(), + target_env: "".to_string(), options: base, } } diff --git a/src/librustc_back/target/i686_pc_windows_gnu.rs b/src/librustc_back/target/i686_pc_windows_gnu.rs index 249f2d440e6..9e2aa20085c 100644 --- a/src/librustc_back/target/i686_pc_windows_gnu.rs +++ b/src/librustc_back/target/i686_pc_windows_gnu.rs @@ -30,6 +30,7 @@ pub fn target() -> Target { target_pointer_width: "32".to_string(), arch: "x86".to_string(), target_os: "windows".to_string(), + target_env: "gnu".to_string(), options: options, } } diff --git a/src/librustc_back/target/i686_unknown_dragonfly.rs b/src/librustc_back/target/i686_unknown_dragonfly.rs index 4450d8d6778..ecabe71ad4c 100644 --- a/src/librustc_back/target/i686_unknown_dragonfly.rs +++ b/src/librustc_back/target/i686_unknown_dragonfly.rs @@ -22,6 +22,7 @@ pub fn target() -> Target { target_pointer_width: "32".to_string(), arch: "x86".to_string(), target_os: "dragonfly".to_string(), + target_env: "".to_string(), options: base, } } diff --git a/src/librustc_back/target/i686_unknown_linux_gnu.rs b/src/librustc_back/target/i686_unknown_linux_gnu.rs index f21f6adfb4c..21094ad905e 100644 --- a/src/librustc_back/target/i686_unknown_linux_gnu.rs +++ b/src/librustc_back/target/i686_unknown_linux_gnu.rs @@ -22,6 +22,7 @@ pub fn target() -> Target { target_pointer_width: "32".to_string(), arch: "x86".to_string(), target_os: "linux".to_string(), + target_env: "gnu".to_string(), options: base, } } diff --git a/src/librustc_back/target/mips_unknown_linux_gnu.rs b/src/librustc_back/target/mips_unknown_linux_gnu.rs index 8acc248e234..4662ff1958b 100644 --- a/src/librustc_back/target/mips_unknown_linux_gnu.rs +++ b/src/librustc_back/target/mips_unknown_linux_gnu.rs @@ -22,6 +22,7 @@ pub fn target() -> Target { target_pointer_width: "32".to_string(), arch: "mips".to_string(), target_os: "linux".to_string(), + target_env: "gnu".to_string(), options: super::linux_base::opts() } } diff --git a/src/librustc_back/target/mipsel_unknown_linux_gnu.rs b/src/librustc_back/target/mipsel_unknown_linux_gnu.rs index 604c62eb69f..80e38c5ddea 100644 --- a/src/librustc_back/target/mipsel_unknown_linux_gnu.rs +++ b/src/librustc_back/target/mipsel_unknown_linux_gnu.rs @@ -22,6 +22,7 @@ pub fn target() -> Target { target_pointer_width: "32".to_string(), arch: "mips".to_string(), target_os: "linux".to_string(), + target_env: "gnu".to_string(), options: super::linux_base::opts() } diff --git a/src/librustc_back/target/mod.rs b/src/librustc_back/target/mod.rs index 07528df97f1..cf7499a337d 100644 --- a/src/librustc_back/target/mod.rs +++ b/src/librustc_back/target/mod.rs @@ -100,6 +100,8 @@ pub struct Target { pub target_pointer_width: String, /// OS name to use for conditional compilation. pub target_os: String, + /// Environment name to use for conditional compilation. + pub target_env: String, /// Architecture to use for ABI considerations. Valid options: "x86", "x86_64", "arm", /// "aarch64", "mips", and "powerpc". "mips" includes "mipsel". pub arch: String, @@ -250,6 +252,8 @@ impl Target { target_pointer_width: get_req_field("target-pointer-width"), arch: get_req_field("arch"), target_os: get_req_field("os"), + target_env: obj.find("env").and_then(|s| s.as_string()) + .map(|s| s.to_string()).unwrap_or(String::new()), options: Default::default(), }; diff --git a/src/librustc_back/target/powerpc_unknown_linux_gnu.rs b/src/librustc_back/target/powerpc_unknown_linux_gnu.rs index 5e0b7bcf3ef..3a2b4bd1606 100644 --- a/src/librustc_back/target/powerpc_unknown_linux_gnu.rs +++ b/src/librustc_back/target/powerpc_unknown_linux_gnu.rs @@ -21,6 +21,7 @@ pub fn target() -> Target { target_pointer_width: "32".to_string(), arch: "powerpc".to_string(), target_os: "linux".to_string(), + target_env: "gnu".to_string(), options: base, } } diff --git a/src/librustc_back/target/x86_64_apple_darwin.rs b/src/librustc_back/target/x86_64_apple_darwin.rs index 0b3b2bea62d..89a67da2d8b 100644 --- a/src/librustc_back/target/x86_64_apple_darwin.rs +++ b/src/librustc_back/target/x86_64_apple_darwin.rs @@ -25,6 +25,7 @@ pub fn target() -> Target { target_pointer_width: "64".to_string(), arch: "x86_64".to_string(), target_os: "macos".to_string(), + target_env: "".to_string(), options: base, } } diff --git a/src/librustc_back/target/x86_64_apple_ios.rs b/src/librustc_back/target/x86_64_apple_ios.rs index 9df2ccca500..74491629ed8 100644 --- a/src/librustc_back/target/x86_64_apple_ios.rs +++ b/src/librustc_back/target/x86_64_apple_ios.rs @@ -21,6 +21,7 @@ pub fn target() -> Target { target_pointer_width: "64".to_string(), arch: "x86_64".to_string(), target_os: "ios".to_string(), + target_env: "".to_string(), options: opts(Arch::X86_64) } } diff --git a/src/librustc_back/target/x86_64_pc_windows_gnu.rs b/src/librustc_back/target/x86_64_pc_windows_gnu.rs index 6b3054656fe..bea7d16e9df 100644 --- a/src/librustc_back/target/x86_64_pc_windows_gnu.rs +++ b/src/librustc_back/target/x86_64_pc_windows_gnu.rs @@ -27,6 +27,7 @@ pub fn target() -> Target { target_pointer_width: "64".to_string(), arch: "x86_64".to_string(), target_os: "windows".to_string(), + target_env: "gnu".to_string(), options: base, } } diff --git a/src/librustc_back/target/x86_64_unknown_bitrig.rs b/src/librustc_back/target/x86_64_unknown_bitrig.rs index 7b7877c0c69..201c56b2e15 100644 --- a/src/librustc_back/target/x86_64_unknown_bitrig.rs +++ b/src/librustc_back/target/x86_64_unknown_bitrig.rs @@ -23,6 +23,7 @@ pub fn target() -> Target { target_pointer_width: "64".to_string(), arch: "x86_64".to_string(), target_os: "bitrig".to_string(), + target_env: "".to_string(), options: base, } } diff --git a/src/librustc_back/target/x86_64_unknown_dragonfly.rs b/src/librustc_back/target/x86_64_unknown_dragonfly.rs index 676aaecc2fc..c590f0297b9 100644 --- a/src/librustc_back/target/x86_64_unknown_dragonfly.rs +++ b/src/librustc_back/target/x86_64_unknown_dragonfly.rs @@ -24,6 +24,7 @@ pub fn target() -> Target { target_pointer_width: "64".to_string(), arch: "x86_64".to_string(), target_os: "dragonfly".to_string(), + target_env: "".to_string(), options: base, } } diff --git a/src/librustc_back/target/x86_64_unknown_freebsd.rs b/src/librustc_back/target/x86_64_unknown_freebsd.rs index 3275cb07b5a..0d8ea90a2ab 100644 --- a/src/librustc_back/target/x86_64_unknown_freebsd.rs +++ b/src/librustc_back/target/x86_64_unknown_freebsd.rs @@ -24,6 +24,7 @@ pub fn target() -> Target { target_pointer_width: "64".to_string(), arch: "x86_64".to_string(), target_os: "freebsd".to_string(), + target_env: "".to_string(), options: base, } } diff --git a/src/librustc_back/target/x86_64_unknown_linux_gnu.rs b/src/librustc_back/target/x86_64_unknown_linux_gnu.rs index 49c4ad4aea9..ba945afc564 100644 --- a/src/librustc_back/target/x86_64_unknown_linux_gnu.rs +++ b/src/librustc_back/target/x86_64_unknown_linux_gnu.rs @@ -24,6 +24,7 @@ pub fn target() -> Target { target_pointer_width: "64".to_string(), arch: "x86_64".to_string(), target_os: "linux".to_string(), + target_env: "gnu".to_string(), options: base, } } diff --git a/src/librustc_back/target/x86_64_unknown_openbsd.rs b/src/librustc_back/target/x86_64_unknown_openbsd.rs index d2667dcd1dd..7f64259adf9 100644 --- a/src/librustc_back/target/x86_64_unknown_openbsd.rs +++ b/src/librustc_back/target/x86_64_unknown_openbsd.rs @@ -23,6 +23,7 @@ pub fn target() -> Target { target_pointer_width: "64".to_string(), arch: "x86_64".to_string(), target_os: "openbsd".to_string(), + target_env: "".to_string(), options: base, } }