Google desarrolla el sistema de montaje modular Soong para Android

Google está desarrollando un sistema de compilación pronto, diseñado para reemplazar los antiguos scripts de compilación para la plataforma Android, basados ​​en el uso de la utilidad make. Soong sugiere usar declaraciones simples descripciones reglas para ensamblar módulos, dado en archivos con extensión “.bp” (planos). El formato del archivo es cercano a JSON y, si es posible, repite la sintaxis y la semántica de los archivos ensambladores. Bazel. El código está escrito en Go y distribuido bajo la licencia Apache 2.0.

Los archivos de compilación de Soong no admiten declaraciones condicionales ni expresiones de ramificación, sino que solo describen la estructura del proyecto, los módulos y las dependencias utilizadas durante la compilación. Los archivos que se van a crear se describen mediante máscaras y se agrupan en paquetes, cada uno de los cuales es una colección de archivos con dependencias asociadas. Es posible definir variables. Las variables y propiedades están estrictamente tipificadas (el tipo de variables se selecciona dinámicamente en la primera asignación y las propiedades de forma estática según el tipo de módulo). Los elementos complejos de la lógica ensambladora se mueven a controladores, escrito en idioma Go.

Soong se entrelaza con un proyecto más grande Planos, en cuyo marco se está desarrollando un sistema de metaensamblaje no vinculado a Android que, a partir de archivos con descripciones declarativas de módulos, genera scripts de ensamblaje Ninja (un reemplazo de make), que describe los comandos que deben ejecutarse para compilar y las dependencias. En lugar de usar reglas complejas o un lenguaje específico de dominio para definir la lógica de compilación, Blueprint usa controladores específicos de proyecto en el lenguaje Go (Soong es esencialmente un conjunto de controladores similares para Android).

Este enfoque permite que proyectos grandes y heterogéneos, como Android, implementen elementos complejos de lógica ensambladora en código en un lenguaje de programación de alto nivel, manteniendo al mismo tiempo la capacidad de realizar cambios en los módulos relacionados con la organización del ensamblador y la estructura del proyecto utilizando una sintaxis declarativa simple. . Por ejemplo, en Soong, la selección de indicadores del compilador la realiza el controlador. llvm.go, y la aplicación de configuraciones específicas de las arquitecturas de hardware la lleva a cabo el controlador arte.go, pero la vinculación de archivos de código se realiza en el archivo “.bp”.

biblioteca_cc {
...
srcs: ["generico.cpp"],
arco: {
brazo: {
srcs: ["arm.cpp"],
},
x86:{
srcs: ["x86.cpp"],
},
},
}

Fuente: opennet.ru

Añadir un comentario