commit | a1d8936161beddadddd17d2b1c335ceac77d1d53 | [log] [tgz] |
---|---|---|
author | David Freese <dvfreese@gmail.com> | Sat Apr 11 16:55:49 2020 -0700 |
committer | GitHub <noreply@github.com> | Sat Apr 11 19:55:49 2020 -0400 |
tree | f3811f59305e727d9c57610ccb20ba2e3f7cca7e | |
parent | fe50d3b54aecbaeac48abdc2ca7cd00a94969e15 [diff] |
Add cfg = proc_macro_host_transition to all rules (#301) The rust_library rule specifies a cfg option. This performs transitions in order to support WASM. Other rules, such as rust_binary, do not have this configuration, which causes Bazel to build and link some libraries into the final binary twice, resulting in compilation errors. This is detailed in pull request #294 and issue #300. The issue was introduced in commit 7cde1e46. This adds the example from @colin353 in PR #294 as an example that would otherwise fail. Fixes #300
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.