blob: a7e19c506e75baec6e488d3674069be51a7e838e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
# 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.
|