| 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 |