* Makes provided bazel rules look up @emsdk workspace instead of local workspace * Uses system-specific emscripten binaries instead of defaulting to linux * Provides macros for loading emsdk dependencies (nodejs and emscripten binaries) * Unhardcodes paths in bazel rules and .sh wrappers * `update_bazel_workspace.sh` now updates `revisions.bzl` * `emscripten_deps()` can be fed with specific emscripten version * Adds external usage test Addresses #650 and #696
82 lines
1.7 KiB
Python
82 lines
1.7 KiB
Python
load(":crosstool.bzl", "emscripten_cc_toolchain_config_rule")
|
|
|
|
package(default_visibility = ["//visibility:public"])
|
|
|
|
filegroup(
|
|
name = "common-script-includes",
|
|
srcs = [
|
|
"emar.sh",
|
|
"emcc.sh",
|
|
"emscripten_config",
|
|
"env.sh",
|
|
"@nodejs//:node_files",
|
|
"@emsdk//:binaries",
|
|
"@emsdk//:node_modules",
|
|
],
|
|
)
|
|
|
|
filegroup(
|
|
name = "compile-emscripten",
|
|
srcs = [":common-script-includes"],
|
|
)
|
|
|
|
filegroup(
|
|
name = "link-emscripten",
|
|
srcs = [
|
|
"emcc_link.sh",
|
|
"link_wrapper.py",
|
|
":common-script-includes",
|
|
"@emsdk//:binaries",
|
|
"@nodejs//:node_files",
|
|
],
|
|
)
|
|
|
|
filegroup(
|
|
name = "every-file",
|
|
srcs = [
|
|
":compile-emscripten",
|
|
":link-emscripten",
|
|
"@emsdk//:binaries",
|
|
"@nodejs//:node_files",
|
|
],
|
|
)
|
|
|
|
filegroup(name = "empty")
|
|
|
|
# dlmalloc.bc is implictly added by the emscripten toolchain
|
|
cc_library(name = "malloc")
|
|
|
|
emscripten_cc_toolchain_config_rule(
|
|
name = "wasm",
|
|
cpu = "wasm",
|
|
em_config = "emscripten_config",
|
|
emscripten_binaries = "@emsdk//:binaries",
|
|
)
|
|
|
|
cc_toolchain(
|
|
name = "cc-compiler-wasm",
|
|
all_files = ":every-file",
|
|
ar_files = ":common-script-includes",
|
|
as_files = ":empty",
|
|
compiler_files = ":compile-emscripten",
|
|
dwp_files = ":empty",
|
|
linker_files = ":link-emscripten",
|
|
objcopy_files = ":empty",
|
|
strip_files = ":empty",
|
|
toolchain_config = "wasm",
|
|
toolchain_identifier = "emscripten-wasm",
|
|
)
|
|
|
|
cc_toolchain_suite(
|
|
name = "everything",
|
|
toolchains = {
|
|
"wasm": ":cc-compiler-wasm",
|
|
"wasm|emscripten": ":cc-compiler-wasm",
|
|
},
|
|
)
|
|
|
|
py_binary(
|
|
name = "wasm_binary",
|
|
srcs = ["wasm_binary.py"],
|
|
)
|