Reglas de Compilación (Build)
El sistema de compilación de Android (Soong) es compatible con Rust a través de una serie de módulos:
Tipo de módulo | Descripción |
---|---|
rust_binary | Produce un binario de Rust. |
rust_library | Produce una biblioteca de Rust y proporciona las variantes rlib y dylib . |
rust_ffi | Produce una biblioteca de Rust C que pueden usar los módulos cc y proporciona variantes estáticas y compartidas. |
rust_proc_macro | Produce una biblioteca de Rust proc-macro . Son similares a complementos del compilador. |
rust_test | Produce un binario de prueba de Rust que utiliza el agente de prueba estándar de Rust. |
rust_fuzz | Produce un binario de fuzz de Rust que aprovecha libfuzzer . |
rust_protobuf | Genera código fuente y produce una biblioteca Rust que proporciona una interfaz para un protobuf en particular. |
rust_bindgen | Genera código fuente y produce una biblioteca de Rust que contiene enlaces de Rust a bibliotecas de C. |
A continuación, hablaremos de rust_binary
y rust_library
.
Additional items speaker may mention:
-
Cargo is not optimized for multi-language repos, and also downloads packages from the internet.
-
For compliance and performance, Android must have crates in-tree. It must also interop with C/C++/Java code. Soong fills that gap.
-
Soong has many similarities to Bazel, which is the open-source variant of Blaze (used in google3).
-
There is a plan to transition Android, ChromeOS, and Fuchsia to Bazel.
-
Learning Bazel-like build rules is useful for all Rust OS developers.
-
Fun fact: Data from Star Trek is a Soong-type Android.