Mercurial
diff third_party/emsdk/bazel/test_external/BUILD @ 179:8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
| author | MrJuneJune <me@mrjunejune.com> |
|---|---|
| date | Thu, 22 Jan 2026 21:23:17 -0800 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/third_party/emsdk/bazel/test_external/BUILD Thu Jan 22 21:23:17 2026 -0800 @@ -0,0 +1,67 @@ +load("@emsdk//emscripten_toolchain:wasm_rules.bzl", "wasm_cc_binary") +load("@rules_cc//cc:defs.bzl", "cc_binary") + +cc_binary( + name = "hello-world", + srcs = ["hello-world.cc"], +) + +wasm_cc_binary( + name = "hello-world-wasm", + cc_target = ":hello-world", + outputs = [ + "hello-world.js", + "hello-world.wasm", + ], +) + +BASE_LINKOPTS = [ + "--bind", # Enable embind + "-sMODULARIZE", + "--pre-js", + "hello-embind-interface.js", +] + +RELEASE_OPTS = [ + "--closure=1", # Run the closure compiler + # Tell closure about the externs file, so as not to minify our JS public API. + "--closure-args=--externs=$(location hello-embind-externs.js)" +] + +DEBUG_OPTS = [ + "--closure=0", # Do not use closure +] + +config_setting( + name = "release_opts", + values = {"compilation_mode": "opt"}, +) + +config_setting( + name = "debug_opts", + values = {"compilation_mode": "dbg"}, +) + +cc_binary( + name = "hello-embind", + srcs = ["hello-embind.cc"], + features = ["emcc_debug_link"], + additional_linker_inputs = [ + "hello-embind-externs.js", + "hello-embind-interface.js", + ], + linkopts = select({ + ":debug_opts": BASE_LINKOPTS + DEBUG_OPTS, + ":release_opts": BASE_LINKOPTS + RELEASE_OPTS, + "//conditions:default": BASE_LINKOPTS + RELEASE_OPTS, + }), + # This target won't build successfully on its own because of missing emscripten + # headers etc. Therefore, we hide it from wildcards. + tags = ["manual"], +) + +wasm_cc_binary( + name = "hello-embind-wasm", + cc_target = ":hello-embind", +) +