Google vyvíja modulárny montážny systém Soong pre Android

Google vyvíja systém zostavovania Čoskoro, navrhnutý tak, aby nahradil staré zostavovacie skripty pre platformu Android na základe použitia pomôcky make. Soong navrhuje používať jednoduché deklaratívne popisy pravidlá pre montáž modulov, daný v súboroch s príponou „.bp“ (návrhy). Formát súboru je blízky JSON a ak je to možné, opakuje syntax a sémantiku súborov zostavy Bazel. Kód je napísaný v Go a distribuovaný pod licenciou Apache 2.0.

Súbory zostavy Soong nepodporujú podmienené príkazy a výrazy vetvenia, ale popisujú iba štruktúru projektu, moduly a závislosti použité pri zostavovaní. Súbory, ktoré sa majú zostaviť, sú opísané pomocou masiek a zoskupené do balíkov, z ktorých každý je kolekciou súborov s priradenými závislosťami. Je možné definovať premenné. Premenné a vlastnosti sú striktne typizované (typ premenných sa vyberá dynamicky pri prvom priradení a pre vlastnosti staticky v závislosti od typu modulu). Zložité prvky montážnej logiky sa presúvajú na manipulátory, napísané v jazyku Go.

Soong sa prelína s väčším projektom Poľná, v rámci ktorej sa vyvíja meta-assembly systém neviazaný na Android, ktorý na základe súborov s deklaratívnym popisom modulov generuje montážne skripty ninja (náhrada za make), popisujúci príkazy, ktoré je potrebné spustiť na zostavenie, a závislosti. Namiesto použitia zložitých pravidiel alebo jazyka špecifického pre doménu na definovanie logiky zostavenia Blueprint používa obslužné nástroje špecifické pre projekt v jazyku Go (Soong je v podstate sada podobných obslužných nástrojov pre Android).

Tento prístup umožňuje veľkým a heterogénnym projektom, ako je Android, implementovať zložité prvky logiky zostavy v kóde vo vysokoúrovňovom programovacom jazyku, pričom si zachováva schopnosť vykonávať zmeny v moduloch súvisiacich s organizáciou zostavy a štruktúrou projektu pomocou jednoduchej deklaratívnej syntaxe. . Napríklad v Soong výber príznakov kompilátora vykonáva obsluha llvm.goa aplikáciu nastavení špecifických pre hardvérové ​​architektúry vykonáva obsluha art.go, ale prepojenie súborov kódu sa vykonáva v súbore „.bp“.

cc_library {
...
srcs: ["generic.cpp"],
oblúk: {
rameno: {
srcs: ["arm.cpp"],
},
x86:{
srcs: ["x86.cpp"],
},
},
}

Zdroj: opennet.ru

Pridať komentár