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óduloDescrição
rust_binaryProduz um binário Rust.
rust_libraryProduz uma biblioteca Rust e fornece as variantes rlib e dylib.
rust_ffiProduz uma biblioteca Rust C utilizável por módulos cc e fornece variantes estáticas e compartilhadas.
rust_proc_macroProduz uma biblioteca Rust proc-macro. Estes são análogos aos plugins do compilador.
rust_testProduz um binário de teste Rust que usa a funcionalidade padrão de teste do Rust.
rust_fuzzProduz um binário Rust fuzz aproveitando libfuzzer.
rust_protobufGera o código-fonte e produz uma biblioteca Rust que fornece uma interface para um protobuf específico.
rust_bindgenGera 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.