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",
+)
+