Google razvija modularni sustav sklapanja Soong za Android

Google razvija sustav za izgradnju Uskoro, osmišljen kako bi zamijenio stare skripte za izgradnju za platformu Android, temeljene na korištenju uslužnog programa make. Soong predlaže korištenje jednostavnog deklarativnog opisi pravila za sastavljanje modula, dano u datotekama s ekstenzijom “.bp” (nacrti). Format datoteke blizak je JSON-u i, ako je moguće, ponavlja sintaksu i semantiku asemblerskih datoteka Bazel. Kod je napisan u Go i distribuiran pod licencom Apache 2.0.

Datoteke za izgradnju Soonga ne podržavaju uvjetne izjave i izraze grananja, već samo opisuju strukturu projekta, module i ovisnosti korištene prilikom izgradnje. Datoteke koje treba izgraditi opisuju se pomoću maski i grupiraju u pakete, od kojih je svaki skup datoteka s pridruženim ovisnostima. Moguće je definirati varijable. Varijable i svojstva su strogo tipizirani (vrsta varijabli se bira dinamički pri prvom dodjeljivanju, a za svojstva statički ovisno o tipu modula). Složeni elementi logike sklopa premještaju se u rukovatelje, napisano na Go jeziku.

Uskoro se isprepliće s većim projektom Kopija, unutar kojeg se razvija meta-assembling sustav nevezan za Android, koji na temelju datoteka s deklarativnim opisima modula generira asemblerske skripte Ninja (zamjena za make), opisujući naredbe koje je potrebno pokrenuti za izgradnju i ovisnosti. Umjesto upotrebe složenih pravila ili jezika specifičnog za domenu za definiranje logike izrade, Blueprint koristi rukovatelje specifične za projekt u jeziku Go (Soong je u biti skup sličnih rukovatelja za Android).

Ovaj pristup omogućuje velikim i heterogenim projektima, kao što je Android, implementaciju složenih elemenata logike sklopa u kodu u programskom jeziku visoke razine, uz zadržavanje mogućnosti izmjene modula povezanih s organizacijom sklopa i strukturom projekta korištenjem jednostavne deklarativne sintakse . Na primjer, u Soongu odabir zastavica prevoditelja vrši rukovatelj llvm.ići, a primjenu postavki specifičnih za hardverske arhitekture provodi rukovatelj art.go, ali povezivanje kodnih datoteka provodi se u datoteci “.bp”.

cc_biblioteka {
...
srcs: ["generic.cpp"],
luk: {
ruka: {
srcs: ["arm.cpp"],
},
x86:{
srcs: ["x86.cpp"],
},
},
}

Izvor: opennet.ru

Dodajte komentar