summaryrefslogtreecommitdiff
path: root/system/gd/rust/README.md
blob: b6db1dfb0266fdb70b235681774ba4239af16226 (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
Rust build
======

Currently, the Rust components are built differently on Android vs Linux. We are
missing Rust support in our GN toolchain so we currently build the Rust
libraries as a staticlib and link in C++. This may change in the future once we
have better support.

For now, you can build all of the Rust code using Cargo.

There are some dependencies:
* You must have the protobuf-compiler package installed
* You must have a recent version of Cargo + Rust

You should use `build.py` at the root to do your Rust builds so that it
correctly points your dependencies towards the vendored crates and sets your
$CARGO_HOME to the correct location.

### Building `packets` package
This package depends on `bluetooth_packetgen` and thus simply using
`cargo build` will fail. Follow the steps below to ensure the dependency is
found in `$CARGO_HOME/bin`.

1. Run `m -j32 bluetooth_packetgen` to compile `bluetooth_packetgen` c++ binary.
2. Change directory to `$CARGO_HOME/bin`.
3. Create a symlink in `$CARGO_HOME/bin` to compiled `bluetooth_packetgen`.
`ln -s ~/aosp/out/host/linux-x86/bin/bluetooth_packetgen bluetooth_packetgen`

### Enable GD Rust
1. `adb shell device_config put bluetooth INIT_gd_rust true`
2. Restart the device