Google razvija modularni sistem za sestavljanje Soong za Android

Google razvija sistem gradnje Soong, zasnovan tako, da nadomesti stare skripte gradnje za platformo Android, ki temeljijo na uporabi pripomočka make. Soong predlaga uporabo preproste deklaracije opisi pravila za sestavljanje modulov, dano v datotekah s pripono “.bp” (načrti). Format datoteke je blizu JSON in, če je mogoče, ponavlja sintakso in semantiko zbirnih datotek Bazel. Koda je napisana v Go in se distribuira pod licenco Apache 2.0.

Datoteke za gradnjo Soong ne podpirajo pogojnih stavkov in izrazov za razvejanje, temveč le opisujejo strukturo projekta, module in odvisnosti, uporabljene pri gradnji. Datoteke, ki jih je treba zgraditi, so opisane z uporabo mask in združene v pakete, od katerih je vsak zbirka datotek s povezanimi odvisnostmi. Možno je definirati spremenljivke. Spremenljivke in lastnosti so strogo tipizirane (vrsto spremenljivk izberemo dinamično ob prvi dodelitvi, lastnosti pa statično glede na vrsto modula). Kompleksni elementi logike sestavljanja se premaknejo v upravljalnike, napisano v jeziku Go.

Soong se prepleta z večjim projektom Blueprint, v okviru katerega se razvija na Android nevezan sistem za metasestavljanje, ki na podlagi datotek z deklarativnimi opisi modulov generira skripte za sestavljanje. ninja (zamenjava za make), ki opisuje ukaze, ki jih je treba zagnati za gradnjo, in odvisnosti. Namesto uporabe zapletenih pravil ali jezika, specifičnega za domeno, za definiranje logike gradnje, Blueprint uporablja za projekt specifične obravnave v jeziku Go (Soong je v bistvu niz podobnih obdelovalcev za Android).

Ta pristop omogoča velikim in heterogenim projektom, kot je Android, implementacijo kompleksnih elementov logike sestavljanja v kodo v programskem jeziku na visoki ravni, hkrati pa ohranja možnost spreminjanja modulov, povezanih z organizacijo sestavljanja in strukturo projekta, z uporabo preproste deklarativne sintakse . Na primer, v Soongu izbiro zastavic prevajalnika opravi upravljavec llvm.go, uporabo nastavitev, značilnih za arhitekture strojne opreme, pa izvede upravljavec art.go, vendar je povezovanje kodnih datotek izvedeno v datoteki ».bp«.

cc_library {
...
srcs: ["generic.cpp"],
lok: {
roka: {
srcs: ["arm.cpp"],
},
x86: {
srcs: ["x86.cpp"],
},
},
}

Vir: opennet.ru

Dodaj komentar