„Google“ kuria „Soong“ modulinę surinkimo sistemą, skirtą „Android“.

„Google“ kuria kūrimo sistemą Soong, sukurtas pakeisti senus „Android“ platformos kūrimo scenarijus, remiantis make utilities naudojimu. Soongas siūlo naudoti paprastą deklaratyvą aprašymus modulių surinkimo taisyklės, duota failuose su plėtiniu „.bp“ (blueprints). Failo formatas yra artimas JSON ir, jei įmanoma, pakartoja surinkimo failų sintaksę ir semantiką Bazelis. Kodas parašytas Go ir platinamas pagal Apache 2.0 licenciją.

Soong build failai nepalaiko sąlyginių teiginių ir išsišakojusių išraiškų, o tik apibūdina projekto struktūrą, modulius ir priklausomybes, naudojamas kuriant. Kuriami failai aprašomi naudojant kaukes ir sugrupuoti į paketus, kurių kiekvienas yra rinkinys failų su susijusiomis priklausomybėmis. Galima apibrėžti kintamuosius. Kintamieji ir savybės yra griežtai tipizuojami (kintamųjų tipas pasirenkamas dinamiškai pirmą kartą priskiriant, o savybėms – statiškai, priklausomai nuo modulio tipo). Sudėtingi surinkimo logikos elementai perkeliami į tvarkykles, parašyta Go kalba.

Soongas persipina su didesniu projektu Projektas, kurioje kuriama su Android nesusieta metasurinkimo sistema, kuri, remdamasi failais su deklaratyviais modulių aprašymais, generuoja surinkimo scenarijus Ninja (pakeitimas make), aprašant komandas, kurias reikia paleisti kuriant, ir priklausomybes. Užuot naudoję sudėtingas taisykles arba konkrečiam domenui skirtą kalbą, kad apibrėžtų kūrimo logiką, „Blueprint“ naudoja konkrečiam projektui skirtas tvarkykles „Go“ kalba (Soong iš esmės yra panašių „Android“ tvarkyklių rinkinys).

Šis metodas leidžia dideliems ir nevienalyčiams projektams, pvz., Android, įdiegti sudėtingus surinkimo logikos elementus kode aukšto lygio programavimo kalba, išlaikant galimybę keisti modulius, susijusius su surinkimo organizavimu ir projekto struktūra naudojant paprastą deklaratyviąją sintaksę. . Pavyzdžiui, Soong kompiliatoriaus vėliavėlių pasirinkimą atlieka tvarkytojas llvm.go, o aparatinės įrangos architektūroms būdingų parametrų taikymą atlieka tvarkytojas art.go, tačiau kodo failų susiejimas atliekamas „.bp“ faile.

cc_library {
...
srcs: ["generic.cpp"],
arka: {
ranka: {
srcs: ["arm.cpp"],
},
x86: {
srcs: ["x86.cpp"],
},
},
}

Šaltinis: opennet.ru

Добавить комментарий