| # Introduction |
| |
| This provides the Rust compiler, tools for building packages (cargo), and |
| a few example projects. |
| |
| ## Building a rust package |
| |
| When building a rust package in bitbake, it's usually easiest to build with |
| cargo using cargo.bbclass. If the package already has a Cargo.toml file (most |
| rust packages do), then it's especially easy. Otherwise you should probably |
| get the code building in cargo first. |
| |
| Once your package builds in cargo, you can use |
| [cargo-bitbake](https://github.com/cardoe/cargo-bitbake) to generate a bitbake |
| recipe for it. This allows bitbake to fetch all the necessary dependent |
| crates, as well as a pegged version of the crates.io index, to ensure maximum |
| reproducibility. Once the Rust SDK support is added to oe-core, cargo-bitbake |
| may also be added to the SDK. |
| |
| NOTE: You will have to edit the generated recipe based on the comments |
| contained within it |
| |
| ## Pitfalls |
| |
| `TARGET_SYS` _must_ be different from `BUILD_SYS`. This is due to the way Rust |
| configuration options are tracked for different targets. This is the reason |
| we use the Yocto triples instead of the native Rust triples. See |
| [Add the ability to provide build flags for the build-script-build #3349](https://github.com/rust-lang/cargo/issues/3349) |
| |
| ## Dependencies |
| |
| On the host: |
| |
| * Any `-sys` packages your project might need must have RDEPENDs for |
| the native library. |
| |
| On the target: |
| |
| * Any `-sys` packages your project might need must have RDEPENDs for |
| the native library. |