Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Мировые новости. Обсуждения. (https://forum.antichat.xyz/forumdisplay.php?f=23)
-   -   Google развивает модульную сборочную систему Soong для Android (https://forum.antichat.xyz/showthread.php?t=473797)

Suicide 29.10.2019 20:42

Компания Google развивает сборочную систему Soong, призванную заменить собой старые сценарии сборки платформы Android, основанные на использовании утилиты make. Soong предлагает использовать простые декларативные описания правил сборки модулей, задаваемые в файлах с расширением ".bp" (blueprints). Формат файлов близок к JSON и по возможности повторяет синтаксис и семантику сборочных файлов Bazel. Код написан на языке Go и распространяется под лицензией Apache 2.0.

Сборочные файлы Soong не поддерживают условных операторов и выражений для ветвления, а только описывают структуру проекта, применяемые при сборке модули и зависимости. Подлежащие сборке файлы описываются при помощи масок и группируются в пакеты, каждый из который представляет собой коллекцию файлов с указанием связанных с ними зависимостей. Возможно определение переменных. Переменные и свойства строго типизированы (тип переменных выбирается динамически при первом присвоении, а для свойств статически в зависимости от типа модуля). Сложные элементы сборочной логики вынесены в обработчики, написанные на языке Go.

Soong переплетается с более общим проектом Blueprint, в рамках которого развивается не привязанная к Android мета-система сборки, которая на основе файлов с декларативными описаниями модулей, формирует сборочные сценарии Ninja (замена make), описывающие команды, которые необходимо выполнить для сборки, и зависимости. Вместо применения сложных правил или предметно ориентированного языка для определения логики сборки, в Blueprint применяются специфичные для собираемых проектов обработчики на языке Go (Soong является по сути набором подобных обработчиков для Android).

Подобный подход позволяет для больших и разнородных проектов, таких как Android, реализовать сложные элементы сборочной логики в коде на высокоуровневом языке программирования, при этом сохраняя возможность при помощи простого декларативного синтаксиса вносить в модули изменения, связанные с организацией сборки и структурой проекта. Например, в Soong выбор флагов компилятора производится обработчиком llvm.go, а применение специфичных для аппаратных архитектур настроек производится обработчиком art.go, но привязка файлов с кодом осуществляется в файле ".bp".

cc_library {

...

srcs: ["generic.cpp"],

arch: {

arm: {

srcs: ["arm.cpp"],

},

x86: {

srcs: ["x86.cpp"],

},

},

}



Время: 20:38