Add support for wasm-bindgen. (#240) * Add support for WebAssembly. * Add a comment explaining that the npm deps are for the wasm example. * Use transitions for web assembly. * Upgrade WASM bindgen and make compatible with Typescript. * Remove unnecessary setting. * Re-run cargo-raze. * Add nodejs rules for the examples workspace. * Fix link_env missing. * Bazel 1.0 compatibility. * Exclude matrix_dylib_test on RBE due to https://github.com/bazelbuild/bazel/issues/9987. * Ignore the wasm test because rust-lld isn't available on RBE. * Use extra target triples. * Remove extra newline.
This repository provides rules for building Rust projects with Bazel.
To build a rust_binary for wasm32-unknown-unknown add the --platforms=//rust/platform:wasm flag.
bazel build @examples//hello_world_wasm --platforms=//rust/platform:wasm
rust_wasm_bindgen will automatically transition to the wasm platform and can be used when building wasm code for the host target.
with an overview here.
To use the Rust rules, add the following to your WORKSPACE file to add the external repositories for the Rust toolchain:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "io_bazel_rules_rust", sha256 = "b6da34e057a31b8a85e343c732de4af92a762f804fc36b0baa6c001423a70ebc", strip_prefix = "rules_rust-55f77017a7f5b08e525ebeab6e11d8896a4499d2", urls = [ # Master branch as of 2019-10-07 "https://github.com/bazelbuild/rules_rust/archive/55f77017a7f5b08e525ebeab6e11d8896a4499d2.tar.gz", ], ) http_archive( name = "bazel_skylib", sha256 = "9a737999532daca978a158f94e77e9af6a6a169709c0cee274f0a4c3359519bd", strip_prefix = "bazel-skylib-1.0.0", url = "https://github.com/bazelbuild/bazel-skylib/archive/1.0.0.tar.gz", ) load("@io_bazel_rules_rust//rust:repositories.bzl", "rust_repositories") rust_repositories() load("@io_bazel_rules_rust//:workspace.bzl", "bazel_version") bazel_version(name = "bazel_version")
The rules are under active development, as such the lastest commit on the master branch should be used. master currently requires Bazel >= 0.26.0.
Currently the most common approach to managing external dependencies is using cargo-raze to generate BUILD files for Cargo crates.
cargo_crate workspace rule for pulling crates from Cargo.