Bazel rules for building C/C++ code into Javascript using the Emscripten toolset. Supports builds on Linux, OS X, and Windows.
Add the following stanza to WORKSPACE
:
http_archive(
name = "com_stevenengelhardt_rules_emscripten",
sha256 = "d4e2f81085f27579609411c97989bb586f7b9ae0c555345a0617c96b7d1aa47e",
urls = ["https://github.com/sengelha/rules_emscripten/releases/download/v1.5.2/rules_emscripten-1.5.2.zip"],
)
load("@com_stevenengelhardt_rules_emscripten//emscripten:deps.bzl", "emscripten_rules_dependencies", "emscripten_setup")
emscripten_rules_dependencies()
emscripten_setup()
Add the following stanza to BUILD
, adjusting as needed:
load("@com_stevenengelhardt_rules_emscripten//emscripten:def.bzl", "emcc_binary")
emcc_binary(
name = "hello_world",
srcs = ["main.cpp"],
)
For more examples, see examples.
Setup up com_stevenengelhardt_rules_emscripten
, including registering appropriate toolchains.
emscripten_setup(version)
Attribute Name | Type | Required? | Description |
---|---|---|---|
version |
String |
optional |
The version of Emscripten to use. Set to host to use the emscripten SDK installed on the host machine. Defaults to the latest supported Emscripten SDK. |
Compiles a set of C/C++ files into a JavaScript "binary" (a .js and a .wasm
file) and allows it be executed via bazel run
.
Attribute Name | Type | Required? | Description |
---|---|---|---|
name |
Name |
required |
A unique name for this rule. |
srcs |
List of files |
required |
A list of source files required to compile the binary. |
emit_wasm |
Boolean |
Optional |
Whether to emit a WASM file as part of the build. Default = True . |
emit_memory_init_file |
Boolean |
Optional |
Whether to emit a memory init file. Only applies if emit_wasm = False . Default = True . |
configuration |
String |
optional |
The build configuration for the target (dbg , opt , or fastbuild ). If not specified, uses the global -c option value. |
Compiles a set of C/C++ files into a JavaScript module (a .js and a .wasm file).
Attribute Name | Type | Required? | Description |
---|---|---|---|
name |
Name |
required |
A unique name for this rule. |
srcs |
List of files |
required |
A list of source files required to compile the module. |
modularize |
Boolean |
optional |
Whether to output a JS module, as in the emcc -s MODULARIZE=1 option. Default = True . |
emit_wasm |
Boolean |
Optional |
Whether to emit a WASM file as part of the build. Default = True . |
emit_memory_init_file |
Boolean |
Optional |
Whether to emit a memory init file. Only applies if emit_wasm = False . Default = True . |
pre_js |
File |
optional |
A JavaScript file to prepend to the output using emcc's --pre-js option. |
post_js |
File |
optional |
A JavaScript file to append to the output using emcc's --post-js option. |
extern_pre_js |
File |
optional |
A JavaScript file to prepend to the output using emcc's --extern-pre-js option. |
extern_post_js |
File |
optional |
A JavaScript file to append to the output using emcc's --extern-post-js option. |
linkopts |
List of strings |
optional |
Additional flags to add to emcc at link time |
configuration |
String |
optional |
The build configuration for the target (dbg , opt , or fastbuild ). If not specified, uses the global -c option value. |