1#[[ 2## Overview 3 4These rules are for using [Bindgen][bindgen] to generate [Rust][rust] bindings to C (and some C++) libraries. 5 6[rust]: http://www.rust-lang.org/ 7[bindgen]: https://github.com/rust-lang/rust-bindgen 8 9See the [bindgen example](https://github.com/bazelbuild/rules_rust/tree/main/examples/bindgen/BUILD.bazel) for a more complete example of use. 10 11### Setup 12 13To use the Rust bindgen rules, add the following to your `WORKSPACE` file to add the 14external repositories for the Rust bindgen toolchain (in addition to the [rust rules setup](https://bazelbuild.github.io/rules_rust/#setup)): 15 16```python 17load("@rules_rust//bindgen:repositories.bzl", "rust_bindgen_dependencies", "rust_bindgen_register_toolchains") 18 19rust_bindgen_dependencies() 20 21rust_bindgen_register_toolchains() 22 23load("@rules_rust//bindgen:transitive_repositories.bzl", "rust_bindgen_transitive_dependencies") 24 25rust_bindgen_transitive_dependencies() 26``` 27 28Bindgen aims to be as hermetic as possible so will end up building `libclang` from [llvm-project][llvm_proj] from 29source. If this is found to be undesirable then no Bindgen related calls should be added to your WORKSPACE and instead 30users should define their own repositories using something akin to [crate_universe][cra_uni] and define their own 31toolchains following the instructions for [rust_bindgen_toolchain](#rust_bindgen_toolchain). 32 33[llvm_proj]: https://github.com/llvm/llvm-project 34[cra_uni]: https://bazelbuild.github.io/rules_rust/crate_universe.html 35 36--- 37 38--- 39 40]]# 41