Google разработва модулна система за сглобяване Soong за Android

Компанията 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»],
},
},
}

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster