Skip to content

Commit a871cd0

Browse files
committed
Proof of concept for emcmake toolchain registration
INCOMPLETE, see proxy-wasm/proxy-wasm-cpp-sdk#157 Signed-off-by: Martijn Stevenson <[email protected]>
1 parent 350c19a commit a871cd0

File tree

5 files changed

+43
-41
lines changed

5 files changed

+43
-41
lines changed

bazel/emscripten_deps.bzl

Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -167,38 +167,3 @@ def emscripten_deps(emscripten_version = "latest"):
167167
build_file_content = BUILD_FILE_CONTENT_TEMPLATE.format(bin_extension = ".exe"),
168168
type = "zip",
169169
)
170-
171-
if "emscripten_npm_linux" not in excludes:
172-
npm_install(
173-
name = "emscripten_npm_linux",
174-
package_json = "@emscripten_bin_linux//:emscripten/package.json",
175-
package_lock_json = "@emscripten_bin_linux//:emscripten/package-lock.json",
176-
)
177-
178-
if "emscripten_npm_linux_arm64" not in excludes:
179-
npm_install(
180-
name = "emscripten_npm_linux_arm64",
181-
package_json = "@emscripten_bin_linux_arm64//:emscripten/package.json",
182-
package_lock_json = "@emscripten_bin_linux_arm64//:emscripten/package-lock.json",
183-
)
184-
185-
if "emscripten_npm_mac" not in excludes:
186-
npm_install(
187-
name = "emscripten_npm_mac",
188-
package_json = "@emscripten_bin_mac//:emscripten/package.json",
189-
package_lock_json = "@emscripten_bin_mac//:emscripten/package-lock.json",
190-
)
191-
192-
if "emscripten_npm_mac_arm64" not in excludes:
193-
npm_install(
194-
name = "emscripten_npm_mac",
195-
package_json = "@emscripten_bin_mac_arm64//:emscripten/package.json",
196-
package_lock_json = "@emscripten_bin_mac_arm64//:emscripten/package-lock.json",
197-
)
198-
199-
if "emscripten_npm_win" not in excludes:
200-
npm_install(
201-
name = "emscripten_npm_win",
202-
package_json = "@emscripten_bin_win//:emscripten/package.json",
203-
package_lock_json = "@emscripten_bin_win//:emscripten/package-lock.json",
204-
)

bazel/emscripten_toolchain/BUILD.bazel

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,54 @@
11
load(":toolchain.bzl", "emscripten_cc_toolchain_config_rule")
2+
load("@rules_foreign_cc//toolchains/native_tools:native_tools_toolchain.bzl", "native_tool_toolchain")
23

34
package(default_visibility = ["//visibility:public"])
45

56
filegroup(
67
name = "common_files",
78
srcs = [
89
"emscripten_config",
9-
"env.sh",
1010
"env.bat",
11+
"env.sh",
1112
"@nodejs//:node_files",
1213
],
1314
)
1415

1516
filegroup(
1617
name = "compiler_files",
1718
srcs = [
18-
"emcc.sh",
1919
"emcc.bat",
20-
"@emsdk//:compiler_files",
20+
"emcc.sh",
2121
":common_files",
22+
"@emsdk//:compiler_files",
2223
],
2324
)
2425

2526
filegroup(
2627
name = "linker_files",
2728
srcs = [
28-
"emcc_link.sh",
2929
"emcc_link.bat",
30+
"emcc_link.sh",
3031
"link_wrapper.py",
31-
"@emsdk//:linker_files",
3232
":common_files",
33+
"@emsdk//:linker_files",
3334
],
3435
)
3536

3637
filegroup(
3738
name = "ar_files",
3839
srcs = [
39-
"emar.sh",
4040
"emar.bat",
41+
"emar.sh",
42+
":common_files",
4143
"@emsdk//:ar_files",
44+
],
45+
)
46+
47+
filegroup(
48+
name = "cmake_files",
49+
srcs = [
50+
"emcmake.bat",
51+
"emcmake.sh",
4252
":common_files",
4353
],
4454
)
@@ -81,13 +91,29 @@ cc_toolchain_suite(
8191
},
8292
)
8393

94+
native_tool_toolchain(
95+
name = "cmake-compiler-wasm",
96+
path = select({
97+
"@platforms//os:windows": "$(execpath :cmake_files)/emcmake.bat",
98+
"//conditions:default": "$(execpath :cmake_files)/emcmake.sh",
99+
}),
100+
target = ":cmake_files",
101+
)
102+
84103
toolchain(
85104
name = "cc-toolchain-wasm",
86105
target_compatible_with = ["@platforms//cpu:wasm32"],
87106
toolchain = ":cc-compiler-wasm",
88107
toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
89108
)
90109

110+
toolchain(
111+
name = "cmake-toolchain-wasm",
112+
target_compatible_with = ["@platforms//cpu:wasm32"],
113+
toolchain = ":cmake-compiler-wasm",
114+
toolchain_type = "@rules_foreign_cc//toolchains:cmake_toolchain",
115+
)
116+
91117
py_binary(
92118
name = "wasm_binary",
93119
srcs = ["wasm_binary.py"],
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
@ECHO OFF
2+
3+
call external\emsdk\emscripten_toolchain\env.bat
4+
5+
py -3 %EMSCRIPTEN%\emcmake.py %*

bazel/emscripten_toolchain/emcmake.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#!/bin/bash
2+
3+
source $(dirname $0)/env.sh
4+
5+
exec python3 $EMSCRIPTEN/emcmake.py "$@"

bazel/toolchains.bzl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
def register_emscripten_toolchains():
22
native.register_toolchains(str(Label("//emscripten_toolchain:cc-toolchain-wasm")))
3+
native.register_toolchains(str(Label("//emscripten_toolchain:cmake-toolchain-wasm")))

0 commit comments

Comments
 (0)