2020-09-10 21:42:46 -04:00
|
|
|
load(":crosstool.bzl", "emscripten_cc_toolchain_config_rule")
|
|
|
|
|
|
|
|
|
|
package(default_visibility = ["//visibility:public"])
|
|
|
|
|
|
2022-04-14 12:22:36 -07:00
|
|
|
# Name depends on rules_nodejs version being used.
|
|
|
|
|
# https://github.com/emscripten-core/emsdk/issues/1020
|
|
|
|
|
# https://github.com/bazelbuild/rules_nodejs/issues/3375
|
|
|
|
|
node_files = "@nodejs_host//:node_files" if existing_rule("@nodejs_host//:node_files") else "@nodejs//:node_files"
|
|
|
|
|
|
2020-09-10 21:42:46 -04:00
|
|
|
filegroup(
|
2022-05-09 11:30:43 -07:00
|
|
|
name = "common_files",
|
2020-09-10 21:42:46 -04:00
|
|
|
srcs = [
|
|
|
|
|
"emscripten_config",
|
|
|
|
|
"env.sh",
|
2021-12-20 11:24:56 -08:00
|
|
|
"env.bat",
|
2022-04-14 12:22:36 -07:00
|
|
|
node_files,
|
2020-09-10 21:42:46 -04:00
|
|
|
],
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
filegroup(
|
2022-05-09 11:30:43 -07:00
|
|
|
name = "compiler_files",
|
|
|
|
|
srcs = [
|
|
|
|
|
"emcc.sh",
|
|
|
|
|
"emcc.bat",
|
|
|
|
|
"@emsdk//:compiler_files",
|
|
|
|
|
":common_files",
|
|
|
|
|
],
|
2020-09-10 21:42:46 -04:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
filegroup(
|
2022-05-09 11:30:43 -07:00
|
|
|
name = "linker_files",
|
2020-09-10 21:42:46 -04:00
|
|
|
srcs = [
|
|
|
|
|
"emcc_link.sh",
|
2021-12-20 11:24:56 -08:00
|
|
|
"emcc_link.bat",
|
2020-09-10 21:42:46 -04:00
|
|
|
"link_wrapper.py",
|
2022-05-09 11:30:43 -07:00
|
|
|
"@emsdk//:linker_files",
|
|
|
|
|
":common_files",
|
2020-09-10 21:42:46 -04:00
|
|
|
],
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
filegroup(
|
2022-05-09 11:30:43 -07:00
|
|
|
name = "ar_files",
|
2020-09-10 21:42:46 -04:00
|
|
|
srcs = [
|
2022-05-09 11:30:43 -07:00
|
|
|
"emar.sh",
|
|
|
|
|
"emar.bat",
|
|
|
|
|
"@emsdk//:ar_files",
|
|
|
|
|
":common_files",
|
2020-09-10 21:42:46 -04:00
|
|
|
],
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
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",
|
2021-03-25 00:50:44 +01:00
|
|
|
em_config = "emscripten_config",
|
2022-05-09 11:30:43 -07:00
|
|
|
emscripten_binaries = "@emsdk//:compiler_files",
|
2021-12-20 11:24:56 -08:00
|
|
|
script_extension = select({
|
|
|
|
|
"@bazel_tools//src/conditions:host_windows": "bat",
|
|
|
|
|
"//conditions:default": "sh",
|
|
|
|
|
}),
|
2020-09-10 21:42:46 -04:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
cc_toolchain(
|
|
|
|
|
name = "cc-compiler-wasm",
|
2022-05-09 11:30:43 -07:00
|
|
|
all_files = ":empty",
|
|
|
|
|
ar_files = ":ar_files",
|
2020-09-10 21:42:46 -04:00
|
|
|
as_files = ":empty",
|
2022-05-09 11:30:43 -07:00
|
|
|
compiler_files = ":compiler_files",
|
2020-09-10 21:42:46 -04:00
|
|
|
dwp_files = ":empty",
|
2022-05-09 11:30:43 -07:00
|
|
|
linker_files = ":linker_files",
|
2020-09-10 21:42:46 -04:00
|
|
|
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"],
|
|
|
|
|
)
|