summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/rust/README-rust.md
blob: 209836ab65b71b38aad67ec3f81ecf7156ebdc77 (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
## 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 rust-lang/cargo#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.