[rust] Update rust config to build backend for WASM

This change makes our rust toolchain support generating output for WASM:
1) Include the WebAssembly LLVM backend so we can generate WASM.
2) List wasm32-unknown-unknown as a target for rustc unconditionally,
which creates rust-std and supports compiling for that target.

Change-Id: Ieda9c0aee7fa90029ddd391a00814528f7fd9965
diff --git a/recipes/rust_toolchain.expected/rust_extra_tools_linux.json b/recipes/rust_toolchain.expected/rust_extra_tools_linux.json
index eee2fbd..f52053e 100644
--- a/recipes/rust_toolchain.expected/rust_extra_tools_linux.json
+++ b/recipes/rust_toolchain.expected/rust_extra_tools_linux.json
@@ -466,7 +466,7 @@
       "-u",
       "RECIPE[fuchsia::rust_toolchain].resources/generate_config.py",
       "--targets",
-      "x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu",
+      "x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu,wasm32-unknown-unknown",
       "--clang-prefix",
       "[START_DIR]/cipd",
       "config_toml",
@@ -486,7 +486,7 @@
       "-u",
       "RECIPE[fuchsia::rust_toolchain].resources/generate_config.py",
       "--targets",
-      "x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu",
+      "x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu,wasm32-unknown-unknown",
       "--clang-prefix",
       "[START_DIR]/cipd",
       "environment",
diff --git a/recipes/rust_toolchain.expected/rust_extra_tools_linux_new.json b/recipes/rust_toolchain.expected/rust_extra_tools_linux_new.json
index d343975..d5f5c81 100644
--- a/recipes/rust_toolchain.expected/rust_extra_tools_linux_new.json
+++ b/recipes/rust_toolchain.expected/rust_extra_tools_linux_new.json
@@ -466,7 +466,7 @@
       "-u",
       "RECIPE[fuchsia::rust_toolchain].resources/generate_config.py",
       "--targets",
-      "x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu",
+      "x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu,wasm32-unknown-unknown",
       "--clang-prefix",
       "[START_DIR]/cipd",
       "config_toml",
@@ -486,7 +486,7 @@
       "-u",
       "RECIPE[fuchsia::rust_toolchain].resources/generate_config.py",
       "--targets",
-      "x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu",
+      "x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu,wasm32-unknown-unknown",
       "--clang-prefix",
       "[START_DIR]/cipd",
       "environment",
diff --git a/recipes/rust_toolchain.expected/rust_extra_tools_mac.json b/recipes/rust_toolchain.expected/rust_extra_tools_mac.json
index 1dbb51c..e6d511d 100644
--- a/recipes/rust_toolchain.expected/rust_extra_tools_mac.json
+++ b/recipes/rust_toolchain.expected/rust_extra_tools_mac.json
@@ -528,7 +528,7 @@
       "-u",
       "RECIPE[fuchsia::rust_toolchain].resources/generate_config.py",
       "--targets",
-      "x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu,x86_64-apple-darwin",
+      "x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu,wasm32-unknown-unknown,x86_64-apple-darwin",
       "--clang-prefix",
       "[START_DIR]/cipd",
       "config_toml",
@@ -548,7 +548,7 @@
       "-u",
       "RECIPE[fuchsia::rust_toolchain].resources/generate_config.py",
       "--targets",
-      "x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu,x86_64-apple-darwin",
+      "x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu,wasm32-unknown-unknown,x86_64-apple-darwin",
       "--clang-prefix",
       "[START_DIR]/cipd",
       "environment",
diff --git a/recipes/rust_toolchain.expected/rust_extra_tools_mac_new.json b/recipes/rust_toolchain.expected/rust_extra_tools_mac_new.json
index 6aa9421..b09e104 100644
--- a/recipes/rust_toolchain.expected/rust_extra_tools_mac_new.json
+++ b/recipes/rust_toolchain.expected/rust_extra_tools_mac_new.json
@@ -528,7 +528,7 @@
       "-u",
       "RECIPE[fuchsia::rust_toolchain].resources/generate_config.py",
       "--targets",
-      "x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu,x86_64-apple-darwin",
+      "x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu,wasm32-unknown-unknown,x86_64-apple-darwin",
       "--clang-prefix",
       "[START_DIR]/cipd",
       "config_toml",
@@ -548,7 +548,7 @@
       "-u",
       "RECIPE[fuchsia::rust_toolchain].resources/generate_config.py",
       "--targets",
-      "x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu,x86_64-apple-darwin",
+      "x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu,wasm32-unknown-unknown,x86_64-apple-darwin",
       "--clang-prefix",
       "[START_DIR]/cipd",
       "environment",
diff --git a/recipes/rust_toolchain.expected/rust_linux.json b/recipes/rust_toolchain.expected/rust_linux.json
index 39efcb4..f5cbf9b 100644
--- a/recipes/rust_toolchain.expected/rust_linux.json
+++ b/recipes/rust_toolchain.expected/rust_linux.json
@@ -466,7 +466,7 @@
       "-u",
       "RECIPE[fuchsia::rust_toolchain].resources/generate_config.py",
       "--targets",
-      "x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu",
+      "x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu,wasm32-unknown-unknown",
       "--clang-prefix",
       "[START_DIR]/cipd",
       "config_toml",
@@ -485,7 +485,7 @@
       "-u",
       "RECIPE[fuchsia::rust_toolchain].resources/generate_config.py",
       "--targets",
-      "x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu",
+      "x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu,wasm32-unknown-unknown",
       "--clang-prefix",
       "[START_DIR]/cipd",
       "environment",
diff --git a/recipes/rust_toolchain.expected/rust_linux_new.json b/recipes/rust_toolchain.expected/rust_linux_new.json
index 5ebd4e0..6c914a6 100644
--- a/recipes/rust_toolchain.expected/rust_linux_new.json
+++ b/recipes/rust_toolchain.expected/rust_linux_new.json
@@ -466,7 +466,7 @@
       "-u",
       "RECIPE[fuchsia::rust_toolchain].resources/generate_config.py",
       "--targets",
-      "x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu",
+      "x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu,wasm32-unknown-unknown",
       "--clang-prefix",
       "[START_DIR]/cipd",
       "config_toml",
@@ -485,7 +485,7 @@
       "-u",
       "RECIPE[fuchsia::rust_toolchain].resources/generate_config.py",
       "--targets",
-      "x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu",
+      "x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu,wasm32-unknown-unknown",
       "--clang-prefix",
       "[START_DIR]/cipd",
       "environment",
diff --git a/recipes/rust_toolchain.expected/rust_mac.json b/recipes/rust_toolchain.expected/rust_mac.json
index 1ca0861..e7bd5c4 100644
--- a/recipes/rust_toolchain.expected/rust_mac.json
+++ b/recipes/rust_toolchain.expected/rust_mac.json
@@ -528,7 +528,7 @@
       "-u",
       "RECIPE[fuchsia::rust_toolchain].resources/generate_config.py",
       "--targets",
-      "x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu,x86_64-apple-darwin",
+      "x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu,wasm32-unknown-unknown,x86_64-apple-darwin",
       "--clang-prefix",
       "[START_DIR]/cipd",
       "config_toml",
@@ -547,7 +547,7 @@
       "-u",
       "RECIPE[fuchsia::rust_toolchain].resources/generate_config.py",
       "--targets",
-      "x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu,x86_64-apple-darwin",
+      "x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu,wasm32-unknown-unknown,x86_64-apple-darwin",
       "--clang-prefix",
       "[START_DIR]/cipd",
       "environment",
diff --git a/recipes/rust_toolchain.expected/rust_mac_new.json b/recipes/rust_toolchain.expected/rust_mac_new.json
index 8960d37..f00e334 100644
--- a/recipes/rust_toolchain.expected/rust_mac_new.json
+++ b/recipes/rust_toolchain.expected/rust_mac_new.json
@@ -528,7 +528,7 @@
       "-u",
       "RECIPE[fuchsia::rust_toolchain].resources/generate_config.py",
       "--targets",
-      "x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu,x86_64-apple-darwin",
+      "x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu,wasm32-unknown-unknown,x86_64-apple-darwin",
       "--clang-prefix",
       "[START_DIR]/cipd",
       "config_toml",
@@ -547,7 +547,7 @@
       "-u",
       "RECIPE[fuchsia::rust_toolchain].resources/generate_config.py",
       "--targets",
-      "x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu,x86_64-apple-darwin",
+      "x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu,wasm32-unknown-unknown,x86_64-apple-darwin",
       "--clang-prefix",
       "[START_DIR]/cipd",
       "environment",
diff --git a/recipes/rust_toolchain.py b/recipes/rust_toolchain.py
index 735466a..aa4f36c 100755
--- a/recipes/rust_toolchain.py
+++ b/recipes/rust_toolchain.py
@@ -116,6 +116,7 @@
     targets = [
         'x86_64-unknown-linux-gnu',
         'aarch64-unknown-linux-gnu',
+        'wasm32-unknown-unknown',
     ]
     if api.platform.is_mac:
       targets.append('x86_64-apple-darwin')
diff --git a/recipes/rust_toolchain.resources/generate_config.py b/recipes/rust_toolchain.resources/generate_config.py
index 478e0a8..f9b3f83 100644
--- a/recipes/rust_toolchain.resources/generate_config.py
+++ b/recipes/rust_toolchain.resources/generate_config.py
@@ -24,7 +24,7 @@
 thin-lto = {thinlto}
 ccache = {gomacc_quote}
 ninja = true
-targets = "X86;AArch64"
+targets = "X86;AArch64;WebAssembly"
 cflags = "{cflags}"
 cxxflags = "{cxxflags}"
 ldflags = "{ldflags}"
@@ -141,6 +141,9 @@
     })
 
   for target in args.targets.split(','):
+    if 'wasm32' in target:
+      # Skip setting sysroots for wasm32.
+      continue
     sysroot = target_sysroots[target]
     triple_lower = target.replace('-', '_').lower()
     triple_upper = triple_lower.upper()
@@ -178,6 +181,7 @@
   default_targets = [
       'x86_64-unknown-linux-gnu',
       'aarch64-unknown-linux-gnu',
+      'wasm32-unknown-unknown',
   ]
   if is_mac:
     default_targets.append('x86_64-apple-darwin')