Add Target (de)serialization for environment vars

Also turn WebAssembly backend back on in its builder.
This commit is contained in:
Thomas Lively 2017-06-23 17:26:39 -07:00
parent a4f97449b0
commit 4ad6a95860
2 changed files with 29 additions and 1 deletions

View file

@ -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

View file

@ -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::<Vec<_>>();
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::<Vec<_>>();
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);