about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorThomas Lively <tlively@google.com>2017-06-23 17:26:39 -0700
committerThomas Lively <tlively@google.com>2017-06-23 17:49:36 -0700
commit4ad6a9586050762a3d7e4e9bfee2faa36fbf726f (patch)
treed0f159d601762bc9eb46aa988d9db74cfc9450fc /src
parenta4f97449b0a3043ecf91cdcc75ee69018cda6176 (diff)
downloadrust-4ad6a9586050762a3d7e4e9bfee2faa36fbf726f.tar.gz
rust-4ad6a9586050762a3d7e4e9bfee2faa36fbf726f.zip
Add Target (de)serialization for environment vars
Also turn WebAssembly backend back on in its builder.
Diffstat (limited to 'src')
-rw-r--r--src/ci/docker/disabled/wasm32/Dockerfile2
-rw-r--r--src/librustc_back/target/mod.rs28
2 files changed, 29 insertions, 1 deletions
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::<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);