O Google está desenvolvendo um sistema de montagem modular Soong para Android

O Google está desenvolvendo um sistema de construção Logo, projetado para substituir os antigos scripts de construção da plataforma Android, com base no uso do utilitário make. Soong sugere o uso de declaração simples descrições regras para montagem de módulos, dado em arquivos com extensão “.bp” (plantas). O formato do arquivo é próximo ao JSON e, se possível, repete a sintaxe e a semântica dos arquivos assembly Bazel. O código é escrito em Go e distribuído sob a licença Apache 2.0.

Os arquivos de construção Soong não suportam instruções condicionais e expressões de ramificação, mas apenas descrevem a estrutura do projeto, módulos e dependências usadas durante a construção. Os arquivos a serem construídos são descritos por meio de máscaras e agrupados em pacotes, cada um dos quais é uma coleção de arquivos com dependências associadas. Variáveis ​​podem ser definidas. Variáveis ​​e propriedades são digitadas estritamente (o tipo de variáveis ​​é selecionado dinamicamente na primeira atribuição e para propriedades estaticamente dependendo do tipo do módulo). Elementos complexos da lógica assembly são movidos para manipuladores, escrito na linguagem Go.

Soong se entrelaça com um projeto maior Diagrama, dentro do qual está sendo desenvolvido um sistema de meta-assembly não vinculado ao Android, que, a partir de arquivos com descrições declarativas de módulos, gera scripts de montagem Ninja (um substituto para make), descrevendo os comandos que precisam ser executados para compilar e as dependências. Em vez de usar regras complexas ou uma linguagem específica de domínio para definir a lógica de construção, o Blueprint usa manipuladores específicos do projeto na linguagem Go (Soong é essencialmente um conjunto de manipuladores semelhantes para Android).

Essa abordagem permite que projetos grandes e heterogêneos, como Android, implementem elementos complexos de lógica assembly em código em uma linguagem de programação de alto nível, mantendo a capacidade de fazer alterações em módulos relacionados à organização de montagem e estrutura do projeto usando sintaxe declarativa simples. . Por exemplo, em Soong, a seleção dos flags do compilador é feita pelo manipulador llvm.go, e a aplicação de configurações específicas para arquiteturas de hardware é realizada pelo manipulador arte.go, mas a vinculação dos arquivos com o código é realizada no arquivo “.bp”.

cc_biblioteca {
...
srcs: ["genérico.cpp"],
arco: {
braço: {
srcs: ["arm.cpp"],
},
x86: {
srcs: ["x86.cpp"],
},
},
}

Fonte: opennet.ru

Adicionar um comentário