From 6b6a6cb35c90e40247257d4cfa486fc2c5d7b155 Mon Sep 17 00:00:00 2001 From: Matt Leon Date: Fri, 28 Aug 2026 10:40:03 -0400 Subject: [PATCH] build/wasm: enable wasm_exceptions in bazel rules for cpp plugins Signed-off-by: Matt Leon --- bazel/defs.bzl | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/bazel/defs.bzl b/bazel/defs.bzl index 87727c0..0bba512 100644 --- a/bazel/defs.bzl +++ b/bazel/defs.bzl @@ -19,20 +19,38 @@ def _optimized_wasm_cc_binary_transition_impl(settings, attr): # Define STANDALONE_WASM at compile time as well as link time (below). # This fixes Abseil by not including Emscripten JS stacktraces + symbolization. # TODO(martijneken): Remove after Abseil stops using this define. + + copts = list(settings["//command_line_option:copt"]) + copts.append("-O3") + copts.append("-DSTANDALONE_WASM") + + linkopts = list(settings["//command_line_option:linkopt"]) + linkopts.append("-O3") + + features = list(settings["//command_line_option:features"]) + # Enable native wasm exceptions, see https://emscripten.org/docs/porting/exceptions.html. + features.append("wasm_exceptions") + features.append("wasm_sjlj") + features.append("-emscripten_sjlj") + return { - "//command_line_option:copt": ["-O3", "-flto", "-DSTANDALONE_WASM"], - "//command_line_option:cxxopt": [], - "//command_line_option:linkopt": [], + "//command_line_option:copt": copts, + "//command_line_option:linkopt": linkopts, + "//command_line_option:features": features, "//command_line_option:collect_code_coverage": False, } _optimized_wasm_cc_binary_transition = transition( implementation = _optimized_wasm_cc_binary_transition_impl, - inputs = [], + inputs = [ + "//command_line_option:copt", + "//command_line_option:linkopt", + "//command_line_option:features", + ], outputs = [ "//command_line_option:copt", - "//command_line_option:cxxopt", "//command_line_option:linkopt", + "//command_line_option:features", "//command_line_option:collect_code_coverage", ], )