A empresa Google está desenvolvendo um sistema de build , destinado a substituir os antigos scripts de build da plataforma Android, baseados no uso da ferramenta make. Soong oferece uma declaração simples das regras de build de módulos, em arquivos com a extensão «.bp» (blueprints). O formato dos arquivos é semelhante ao JSON e, quando possível, repete a sintaxe e a semântica dos arquivos de build . O código é escrito na linguagem Go e é distribuído sob a licença Apache 2.0.
Os arquivos de build Soong não suportam operadores condicionais e expressões para controle de fluxo, apenas descrevem a estrutura do projeto, os módulos utilizados no build e as dependências. Os arquivos a serem construídos são descritos por meio de máscaras e agrupados em pacotes, cada um dos quais representa uma coleção de arquivos com suas dependências. É possível definir variáveis. As variáveis e propriedades são estritamente tipadas (o tipo das variáveis é escolhido dinamicamente na primeira atribuição, enquanto o tipo das propriedades é definido estaticamente de acordo com o tipo do módulo). Elementos complexos da lógica de build são extraídos para manipuladores, na linguagem Go.
Soong está interligado a um projeto mais geral, , no qual está sendo desenvolvida uma meta-sistema de build independente do Android, que, com base em arquivos com descrições declarativas dos módulos, forma scripts de build (substituto do make), que descrevem os comandos a serem executados para o build e as dependências. Em vez de aplicar regras complexas ou uma linguagem orientada a domínio para definir a lógica de build, o Blueprint utiliza manipuladores específicos para os projetos em construção na linguagem Go (Soong é essencialmente um conjunto desses manipuladores para o Android).
Essa abordagem permite que grandes e variados projetos, como o Android, realizem elementos complexos da lógica de build em código de uma linguagem de programação de alto nível, ao mesmo tempo em que mantém a capacidade, por meio de uma sintaxe declarativa simples, de fazer alterações nos módulos relacionadas à organização do build e à estrutura do projeto. Por exemplo, em Soong, a seleção das flags do compilador é feita pelo manipulador , e a aplicação de configurações específicas para arquiteturas de hardware é feita pelo manipulador , mas a vinculação de arquivos de código é realizada no arquivo «.bp».
cc_library {
…
srcs: [«generic.cpp»],
arquitetura: {
arm: {
fontes: [«arm.cpp»],
},
x86: {
fontes: [«x86.cpp»],
},
},
}
Fonte: opennet.ru
