mirror of
https://git.webmc.xyz/Starlike-Client/Starlike-Client
synced 2025-07-23 14:11:15 -09:00
67 lines
1.5 KiB
Python
67 lines
1.5 KiB
Python
load("@emsdk//emscripten_toolchain:wasm_rules.bzl", "wasm_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",
|
|
)
|
|
|