From 4ad6a9586050762a3d7e4e9bfee2faa36fbf726f Mon Sep 17 00:00:00 2001 From: Thomas Lively Date: Fri, 23 Jun 2017 17:26:39 -0700 Subject: Add Target (de)serialization for environment vars Also turn WebAssembly backend back on in its builder. --- src/ci/docker/disabled/wasm32/Dockerfile | 2 +- src/librustc_back/target/mod.rs | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/ci/docker/disabled/wasm32/Dockerfile b/src/ci/docker/disabled/wasm32/Dockerfile index 025029c6745..ad57a1191e4 100644 --- a/src/ci/docker/disabled/wasm32/Dockerfile +++ b/src/ci/docker/disabled/wasm32/Dockerfile @@ -38,7 +38,7 @@ ENV EM_CONFIG=/emsdk-portable/.emscripten ENV TARGETS=wasm32-unknown-emscripten,wasm32-experimental-emscripten -ENV RUST_CONFIGURE_ARGS --target=$TARGETS +ENV RUST_CONFIGURE_ARGS --target=$TARGETS --experimental-targets=WebAssembly ENV SCRIPT python2.7 ../x.py test --target $TARGETS diff --git a/src/librustc_back/target/mod.rs b/src/librustc_back/target/mod.rs index 5c95868471e..5df227e39ac 100644 --- a/src/librustc_back/target/mod.rs +++ b/src/librustc_back/target/mod.rs @@ -624,6 +624,21 @@ impl Target { base.options.$key_name = args; } } ); + ($key_name:ident, env) => ( { + let name = (stringify!($key_name)).replace("_", "-"); + if let Some(a) = obj.find(&name[..]).and_then(|o| o.as_array()) { + for o in a { + if let Some(s) = o.as_string() { + let p = s.split('=').collect::>(); + if p.len() == 2 { + let k = p[0].to_string(); + let v = p[1].to_string(); + base.options.$key_name.push((k, v)); + } + } + } + } + } ); } key!(is_builtin, bool); @@ -635,6 +650,7 @@ impl Target { key!(late_link_args, link_args); key!(post_link_objects, list); key!(post_link_args, link_args); + key!(link_env, env); key!(asm_args, list); key!(cpu); key!(features); @@ -789,6 +805,17 @@ impl ToJson for Target { d.insert(name.to_string(), obj.to_json()); } } ); + (env - $attr:ident) => ( { + let name = (stringify!($attr)).replace("_", "-"); + if default.$attr != self.options.$attr { + let obj = self.options.$attr + .iter() + .map(|&(ref k, ref v)| k.clone() + "=" + &v) + .collect::>(); + d.insert(name.to_string(), obj.to_json()); + } + } ); + } target_val!(llvm_target); @@ -810,6 +837,7 @@ impl ToJson for Target { target_option_val!(link_args - late_link_args); target_option_val!(post_link_objects); target_option_val!(link_args - post_link_args); + target_option_val!(env - link_env); target_option_val!(asm_args); target_option_val!(cpu); target_option_val!(features); -- cgit 1.4.1-3-g733a5