Společnost Google vyvíjí sestavovací systém , 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 pravidel pro sestavování modulů, 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ů . 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ů, v jazyce Go.
Soong je propojen s širším projektem , 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í (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 , zatímco aplikace specifických nastavení pro hardware architektury provádí zpracovatel , 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
