Google vyvíjí modulární montážní systém Soong pro Android

Google vyvíjí montážní systém Soongnavržený tak, aby nahradil staré skripty sestavení platformy Android založené na použití nástroje make. Soong navrhuje používat jednoduché deklarativní popisy pravidla montáže modulů, daný v souborech s příponou ".bp" (plány). Formát souboru je blízký JSON a pokud je to možné, opakuje syntaxi a sémantiku souborů sestavení Bazel. Kód je napsán v Go a distribuován pod licencí Apache 2.0.

Soubory sestavení Soong nepodporují podmíněné příkazy a větvené výrazy, ale pouze popisují strukturu projektu, moduly a závislosti použité v sestavení. Soubory, které mají být sestaveny, jsou popsány pomocí zástupných znaků a seskupeny do balíčků, z nichž každý je kolekcí souborů s jejich přidruženými závislostmi. Je možné definovat proměnné. Proměnné a vlastnosti jsou silně typovány (typ proměnných se vybírá dynamicky při prvním přiřazení a u vlastností staticky v závislosti na typu modulu). Složité prvky logiky sestavování jsou přesunuty do manipulátorů, napsáno v jazyce Go.

Soong se prolíná s obecnějším projektem Modrák, v jejímž rámci je vyvíjen sestavení metasystém, který není svázán s Androidem, který na základě souborů s deklarativními popisy modulů generuje montážní skripty Ninja (nahrazuje make) popisující příkazy, které se mají spustit pro sestavení, a závislosti. Namísto použití složitých pravidel nebo jazyka specifického pro doménu k definování logiky sestavení používá Blueprint obslužné nástroje sestavení specifické pro projekt v jazyce Go (Soong je v podstatě sada podobných obslužných nástrojů pro Android).

Tento přístup umožňuje velkým a heterogenním projektům, jako je Android, implementovat složité prvky logiky sestavení v kódu v programovacím jazyce na vysoké úrovni, při zachování schopnosti provádět změny v modulech souvisejících s organizací sestavení a strukturou projektu pomocí jednoduchého deklarativního syntax. Například v Soongu výběr příznaků kompilátoru provádí obsluha llvm.goa aplikaci nastavení specifických pro hardwarovou architekturu provádí handler art.go, ale vazba souborů s kódem se provádí v souboru ".bp".

cc_library {
...
srcs: ["generic.cpp"],
oblouk: {
paže: {
srcs: ["arm.cpp"],
},
x86:{
srcs: ["x86.cpp"],
},
},
}

Zdroj: opennet.ru

Přidat komentář