Google развівае модульную зборачную сістэму Soong для Android

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

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

Soong пераплятаецца з больш агульным праектам План, у рамках якога развіваецца не прывязаная да Android мета-сістэма зборкі, якая на аснове файлаў з дэкларатыўнымі апісаннямі модуляў, фармуе зборачныя сцэнары ніндзя (замена 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

Дадаць каментар