pw_rust#
Rust support in pigweed is highly experimental. Currently functionality is split between Bazel and GN support.
Bazel#
Bazel support is based on rules_rust and supports a rich set of targets for both host and target builds.
Building and Running the Embedded Example#
The embedded_hello
example can be built for both the lm3s6965evb
and microbit
QEMU machines. The example can be built and run using
the following commands where PLATFORM
is one of lm3s6965evb
or
microbit
.
$ bazel build //pw_rust/examples/embedded_hello:hello \
--platforms //pw_build/platforms:${PLATFORM} \
$ qemu-system-arm \
-machine ${PLATFORM} \
-nographic \
-semihosting-config enable=on,target=native \
-kernel ./bazel-bin/pw_rust/examples/embedded_hello/hello
Hello, Pigweed!
GN#
In GN, currently only building a single host binary using the standard libraries is supported. Windows builds are currently unsupported.
Building#
To build the sample rust targets, you need to enable
pw_rust_ENABLE_EXPERIMENTAL_BUILD
:
$ gn gen out --args="pw_rust_ENABLE_EXPERIMENTAL_BUILD=true"
Once that is set, you can build and run the hello
example:
$ ninja -C out host_clang_debug/obj/pw_rust/example/bin/hello
$ ./out/host_clang_debug/obj/pw_rust/examples/host_executable/bin/hello
Hello, Pigweed!
Third Party Crates#
Thrid party crates are vendored in the third_party/rust_crates respository. Currently referencing these is only supported through the bazel build.