Google desenvolve o sistema de montaxe modular Soong para Android

Google está a desenvolver un sistema de compilación Soong, deseñado para substituír os antigos scripts de compilación para a plataforma Android, baseado no uso da utilidade make. Soong suxire usar declaración simple descricións regras para montar módulos, dado en ficheiros coa extensión “.bp” (planos). O formato de ficheiro é próximo ao JSON e, se é posible, repite a sintaxe e a semántica dos ficheiros de montaxe Bazel. O código está escrito en Go e distribúese baixo a licenza Apache 2.0.

Os ficheiros de compilación de Soong non admiten declaracións condicionais nin expresións de ramificación, senón que só describen a estrutura do proxecto, os módulos e as dependencias que se utilizan ao construír. Os ficheiros a construír descríbense mediante máscaras e agrúpanse en paquetes, cada un dos cales é unha colección de ficheiros con dependencias asociadas. Pódense definir variables. As variables e propiedades son estritamente tipificadas (o tipo de variables selecciónase de forma dinámica na primeira asignación, e para as propiedades de forma estática dependendo do tipo de módulo). Os elementos complexos da lóxica de montaxe móvense aos controladores, escrito en idioma Go.

Soong entrelázase cun proxecto máis grande Plano de traballo, dentro do cal se está a desenvolver un sistema de metaensamblaxe non vinculado a Android que, a partir de ficheiros con descricións de módulos declarativos, xera scripts de montaxe. ninja (unha substitución de make), describindo os comandos que se deben executar para construír e as dependencias. En lugar de usar regras complexas ou unha linguaxe específica de dominio para definir a lóxica de compilación, Blueprint usa controladores específicos do proxecto na linguaxe Go (Soong é esencialmente un conxunto de controladores similares para Android).

Este enfoque permite que proxectos grandes e heteroxéneos, como Android, implementen elementos complexos de lóxica ensambladora en código nunha linguaxe de programación de alto nivel, mantendo a capacidade de facer cambios nos módulos relacionados coa organización do ensamblaxe e a estrutura do proxecto utilizando unha sintaxe declarativa sinxela. . Por exemplo, en Soong, a selección das marcas do compilador realízaa o manejador llvm.go, e a aplicación de configuracións específicas das arquitecturas de hardware é realizada polo manejador art.go, pero a vinculación de ficheiros de código realízase no ficheiro ".bp".

cc_library {
...
srcs: ["generic.cpp"],
arco: {
brazo: {
srcs: ["arm.cpp"],
},
x86:{
srcs: ["x86.cpp"],
},
},
}

Fonte: opennet.ru

Engadir un comentario