Google razvija Soong modularni sistem sastavljanja za Android

Google razvija sistem izgradnje Soong, dizajniran da zamijeni stare skripte za izradu Android platforme, zasnovane na korištenju uslužnog programa make. Soong predlaže korištenje jednostavnog deklarativnog opisi pravila za sastavljanje modula, dato u fajlovima sa ekstenzijom “.bp” (nacrti). Format datoteke je blizak JSON-u i, ako je moguće, ponavlja sintaksu i semantiku datoteka sklopa Basel. Kod je napisan u Go i distribuiran pod licencom Apache 2.0.

Soong build fajlovi ne podržavaju uslovne izraze i izraze grananja, već samo opisuju strukturu projekta, module i zavisnosti koji se koriste prilikom izgradnje. Datoteke koje treba izgraditi su opisane pomoću maski i grupisane u pakete, od kojih je svaki skup datoteka s pridruženim ovisnostima. Moguće je definirati varijable. Varijable i svojstva su striktno tipizirani (tip varijabli se bira dinamički pri prvom dodjeljivanju, a za svojstva statički ovisno o tipu modula). Kompleksni elementi asemblerske logike se premeštaju u rukovaoce, napisao na Go jeziku.

Soong se prepliće sa većim projektom šematski plan, u okviru kojeg se razvija meta-sastavljač sistem koji nije vezan za Android, koji na osnovu fajlova sa deklarativnim opisima modula generiše asemblerske skripte Ninja (zamjena za make), opisujući komande koje je potrebno pokrenuti za izgradnju i zavisnosti. Umjesto korištenja složenih pravila ili jezika specifičnog za domenu za definiranje logike izgradnje, Blueprint koristi rukovatelje specifične za projekat u jeziku Go (Soong je u suštini skup sličnih rukovatelja za Android).

Ovaj pristup omogućava velikim i heterogenim projektima, kao što je Android, da implementiraju složene elemente asemblerske logike u kodu u programskom jeziku visokog nivoa, uz zadržavanje mogućnosti izmjene modula koji se odnose na organizaciju sklopa i strukturu projekta koristeći jednostavnu deklarativno sintaksu . Na primjer, u Soongu, odabir zastavica kompajlera vrši rukovalac llvm.go, a primenu postavki specifičnih za hardverske arhitekture izvodi rukovalac art.go, ali povezivanje kodnih datoteka se vrši u datoteci “.bp”.

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

izvor: opennet.ru

Dodajte komentar