Skip to content

Commit 4ad6a95

Browse files
committed
Add Target (de)serialization for environment vars
Also turn WebAssembly backend back on in its builder.
1 parent a4f9744 commit 4ad6a95

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

src/ci/docker/disabled/wasm32/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ ENV EM_CONFIG=/emsdk-portable/.emscripten
3838

3939
ENV TARGETS=wasm32-unknown-emscripten,wasm32-experimental-emscripten
4040

41-
ENV RUST_CONFIGURE_ARGS --target=$TARGETS
41+
ENV RUST_CONFIGURE_ARGS --target=$TARGETS --experimental-targets=WebAssembly
4242

4343
ENV SCRIPT python2.7 ../x.py test --target $TARGETS
4444

src/librustc_back/target/mod.rs

+28
Original file line numberDiff line numberDiff line change
@@ -624,6 +624,21 @@ impl Target {
624624
base.options.$key_name = args;
625625
}
626626
} );
627+
($key_name:ident, env) => ( {
628+
let name = (stringify!($key_name)).replace("_", "-");
629+
if let Some(a) = obj.find(&name[..]).and_then(|o| o.as_array()) {
630+
for o in a {
631+
if let Some(s) = o.as_string() {
632+
let p = s.split('=').collect::<Vec<_>>();
633+
if p.len() == 2 {
634+
let k = p[0].to_string();
635+
let v = p[1].to_string();
636+
base.options.$key_name.push((k, v));
637+
}
638+
}
639+
}
640+
}
641+
} );
627642
}
628643

629644
key!(is_builtin, bool);
@@ -635,6 +650,7 @@ impl Target {
635650
key!(late_link_args, link_args);
636651
key!(post_link_objects, list);
637652
key!(post_link_args, link_args);
653+
key!(link_env, env);
638654
key!(asm_args, list);
639655
key!(cpu);
640656
key!(features);
@@ -789,6 +805,17 @@ impl ToJson for Target {
789805
d.insert(name.to_string(), obj.to_json());
790806
}
791807
} );
808+
(env - $attr:ident) => ( {
809+
let name = (stringify!($attr)).replace("_", "-");
810+
if default.$attr != self.options.$attr {
811+
let obj = self.options.$attr
812+
.iter()
813+
.map(|&(ref k, ref v)| k.clone() + "=" + &v)
814+
.collect::<Vec<_>>();
815+
d.insert(name.to_string(), obj.to_json());
816+
}
817+
} );
818+
792819
}
793820

794821
target_val!(llvm_target);
@@ -810,6 +837,7 @@ impl ToJson for Target {
810837
target_option_val!(link_args - late_link_args);
811838
target_option_val!(post_link_objects);
812839
target_option_val!(link_args - post_link_args);
840+
target_option_val!(env - link_env);
813841
target_option_val!(asm_args);
814842
target_option_val!(cpu);
815843
target_option_val!(features);

0 commit comments

Comments
 (0)