Google vyvíjí modulární sestavovací systém Soong pro Android

Společnost Google vyvíjí sestavovací systém Soong, který má nahradit staré skripty pro sestavování platformy Android, jež byly založeny na využití nástroje make. Soong nabízí používání jednoduchých deklarativních popisy pravidel pro sestavování modulů, určených v souborech s příponou „.bp“ (blueprints). Formát souborů je blízký JSON a co nejvíce napodobuje syntaxi a semantiku sestavovacích souborů Bazel. Kód je napsán v jazyce Go a je distribuován pod licencí Apache 2.0.

Sestavovací soubory Soong nepodporují podmínkové operátory a výrazy pro větvení, pouze popisují strukturu projektu, moduly použité při sestavování a závislosti. Soubory určené k sestavení jsou popisovány pomocí masek a seskupovány do balíčků, z nichž každý představuje kolekci souborů s указáním souvisejících závislostí. Je možné definovat proměnné. Proměnné a vlastnosti jsou přísně typované (typ proměnné je vybírán dynamicky při prvním přiřazení, zatímco pro vlastnosti staticky v závislosti na typu modulu). Složitější prvky logiky sestavování jsou přesunuty do zpracovatelů, napsaných v jazyce Go.

Soong je propojen s širším projektem Blueprint, v rámci něhož se vyvíjí nezávislá na Androidu meta-systém sestavování, který na základě souborů s deklarativními popisy modulů vytváří scénáře sestavování Ninja (náhrada za make), popisující příkazy, které je nutné provést pro sestavení, a závislosti. Místo použití složitých pravidel nebo specializovaného jazyka pro určení logiky sestavování se v Blueprint používají specifické pro sestavované projekty zpracovatele v jazyce Go (Soong je v podstatě soubor podobných zpracovatelů pro Android).

Takový přístup umožňuje pro velké a různorodé projekty, jako je Android, realizovat složité prvky logiky sestavování v kódu na vysoce úrovňovém programovacím jazyce, přičemž však zachovává možnost pomocí jednoduché deklarativní syntaxe provádět změny v modulech vztahující se k organizaci sestavování a struktuře projektu. Například ve Soong se výběr přepínačů kompilátoru provádí zpracovatelem llvm.go, zatímco aplikace specifických nastavení pro hardware architektury provádí zpracovatel art.go, ale propojení souborů s kódem se uskutečňuje v souboru „.bp“.

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

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster