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óduloDescripción
rust_binaryProduce un binario de Rust.
rust_libraryProduce una biblioteca de Rust y proporciona las variantes rlib y dylib.
rust_ffiProduce una biblioteca de Rust C que pueden usar los módulos cc y proporciona variantes estáticas y compartidas.
rust_proc_macroProduce una biblioteca de Rust proc-macro. Son similares a complementos del compilador.
rust_testProduce un binario de prueba de Rust que utiliza el agente de prueba estándar de Rust.
rust_fuzzProduce un binario de fuzz de Rust que aprovecha libfuzzer.
rust_protobufGenera código fuente y produce una biblioteca Rust que proporciona una interfaz para un protobuf en particular.
rust_bindgenGenera 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.