Regras de Compilação (Build Rules)
O sistema de compilação do Android (Soong) oferece suporte ao Rust por meio de vários módulos:
Tipo de Módulo | Descrição |
---|---|
rust_binary | Produz um binário Rust. |
rust_library | Produz uma biblioteca Rust e fornece as variantes rlib e dylib . |
rust_ffi | Produz uma biblioteca Rust C utilizável por módulos cc e fornece variantes estáticas e compartilhadas. |
rust_proc_macro | Produz uma biblioteca Rust proc-macro . Estes são análogos aos plugins do compilador. |
rust_test | Produz um binário de teste Rust que usa a funcionalidade padrão de teste do Rust. |
rust_fuzz | Produz um binário Rust fuzz aproveitando libfuzzer . |
rust_protobuf | Gera o código-fonte e produz uma biblioteca Rust que fornece uma interface para um protobuf específico. |
rust_bindgen | Gera fonte e produz uma biblioteca Rust contendo vínculos em Rust para bibliotecas C. |
Veremos rust_binary
e rust_library
a seguir.
Itens adicionais que o instrutor pode mencionar:
-
Cargo não é otimizado para repositórios multi-idiomas e também baixa pacotes da internet.
-
Para conformidade e desempenho, o Android deve ter crates no repositório. Também deve interoperar com código C/C++/Java. Soong preenche essa lacuna.
-
Soong tem muitas semelhanças com o Bazel, que é a variante de código aberto do Blaze (usado no google3).
-
Há um plano para transicionar o Android, ChromeOS e Fuchsia para o Bazel.
-
Aprender regras de compilação semelhantes ao Bazel é útil para todos os desenvolvedores Rust de SO.
-
Curiosidade: Data de Star Trek é um Android do tipo Soong.