Google desarrolla el sistema de construcción modular Soong para Android

La empresa Google está desarrollando un sistema de compilación Soong, destinado a reemplazar los antiguos scripts de compilación de la plataforma Android, basados en el uso de la utilidad make. Soong propone utilizar descripciones declarativas simples de reglas de compilación de módulos, definidas en archivos con la extensión «.bp» (blueprints). El formato de los archivos es similar a JSON y, en la medida de lo posible, sigue la sintaxis y semántica de los archivos de compilación Bazel. El código está escrito en el lenguaje Go y se distribuye bajo la licencia Apache 2.0.

Los archivos de compilación Soong no soportan operadores condicionales ni expresiones para ramificarse, solo describen la estructura del proyecto, los módulos utilizados durante la compilación y sus dependencias. Los archivos a compilar se describen mediante máscaras y se agrupan en paquetes, cada uno de los cuales representa una colección de archivos con sus dependencias relacionadas. Es posible definir variables. Las variables y propiedades son estrictamente tipadas (el tipo de las variables se elige dinámicamente al primer asignación, mientras que para las propiedades se elige estáticamente en función del tipo de módulo). Los elementos complejos de la lógica de compilación se han extraído a controladores, escritos en el lenguaje Go.

Soong se entrelaza con un proyecto más general Blueprint, en el marco del cual se desarrolla un sistema de compilación no vinculado a Android, que, a partir de archivos con descripciones declarativas de módulos, genera scripts de compilación Ninja (reemplazo de make), que describen los comandos que deben ejecutarse para la compilación y sus dependencias. En lugar de aplicar reglas complejas o un lenguaje de dominio específico para definir la lógica de compilación, en Blueprint se utilizan controladores específicos de los proyectos a compilar en el lenguaje Go (Soong es en esencia un conjunto de tales controladores para Android).

Este enfoque permite, para proyectos grandes y heterogéneos como Android, implementar elementos complejos de la lógica de compilación en código de un lenguaje de programación de alto nivel, mientras se conserva la posibilidad, mediante una sintaxis declarativa simple, de hacer modificaciones en los módulos relacionadas con la organización de la compilación y la estructura del proyecto. Por ejemplo, en Soong, la selección de las banderas del compilador se realiza mediante el controlador llvm.go, mientras que la aplicación de configuraciones específicas para arquitecturas de hardware se lleva a cabo mediante el controlador art.go, pero la vinculación de archivos con el código se realiza en el archivo «.bp».

cc_library {
…
srcs: [«generic.cpp»],
arquitectura: {
arm: {
srcs: [«arm.cpp»],
},
x86: {
srcs: [«x86.cpp»],
},
},
}

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster