O Google desenvolve o sistema de construção modular Soong para Android

A empresa Google está desenvolvendo um sistema de build Soong, destinado a substituir os antigos scripts de build da plataforma Android, baseados no uso da ferramenta make. Soong oferece uma declaração simples das descrições regras de build de módulos, definidas 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 Bazel. 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, escritos na linguagem Go.

Soong está interligado a um projeto mais geral, Blueprint, 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 Ninja (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 llvm.go, e a aplicação de configurações específicas para arquiteturas de hardware é feita pelo manipulador art.go, 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

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster