O Google está desenvolvendo um sistema de construção , 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 regras para montagem de módulos, 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 . 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, na linguagem Go.
Soong se entrelaça com um projeto maior , 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 (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 , e a aplicação de configurações específicas para arquiteturas de hardware é realizada pelo manipulador , 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
