Introduce WASM toolchain
This CL adds:
- Build dependencies to NodeJS and emscripten toolchains
- The GN incantation that defines a wasm_lib() target type
which produces .wasm and .js files from .cc files and
source sets
- A new is_wasm variable, which works very similarly to
is_nacl in chrome.
Example usage:
-----
wasm_lib("target_name") {
generate_js = true
sources = ["wasm_bridge.cc"]
deps = [
"../../gn:default_deps",
"../../protos/perfetto/processed_trace:lite",
]
}
-----
Change-Id: Ia00f9aca6b97b1deb9cc2a94b8589155543137d3
diff --git a/gn/standalone/BUILD.gn b/gn/standalone/BUILD.gn
index 902edd2..21866ad 100644
--- a/gn/standalone/BUILD.gn
+++ b/gn/standalone/BUILD.gn
@@ -13,6 +13,7 @@
# limitations under the License.
import("//gn/standalone/android.gni")
+import("//gn/standalone/wasm.gni")
import("//gn/standalone/sanitizers/sanitizers.gni")
config("extra_warnings") {
@@ -25,6 +26,7 @@
"-Weverything",
"-Wno-c++98-compat-pedantic",
"-Wno-c++98-compat",
+ "-Wno-disabled-macro-expansion",
"-Wno-gnu-include-next",
"-Wno-gnu-statement-expression",
"-Wno-gnu-zero-variadic-macro-arguments",
@@ -62,11 +64,14 @@
"-fstack-protector",
"-fPIC",
"-g",
- "-Wa,--noexecstack",
"-Wformat",
"-Werror",
]
+ if (!is_wasm) {
+ cflags += [ "-Wa,--noexecstack" ]
+ }
+
if (is_clang) {
cflags += [
# Color compiler output, see https://github.com/ninja-build/ninja/wiki/FAQ