Google utvikler Soong modulært monteringssystem for Android

Google utvikler et byggesystem Snart, designet for å erstatte de gamle byggeskriptene for Android-plattformen, basert på bruken av make-verktøyet. Soong foreslår å bruke enkel deklarativ beskrivelser regler for montering av moduler, gitt i filer med filtypen ".bp" (blåkopier). Filformatet er nært JSON og, hvis mulig, gjentar syntaksen og semantikken til monteringsfiler Bazel. Koden er skrevet i Go og distribuert under Apache 2.0-lisensen.

Soong byggefiler støtter ikke betingede setninger og forgreningsuttrykk, men beskriver bare prosjektstrukturen, modulene og avhengighetene som brukes ved bygging. Filene som skal bygges beskrives ved hjelp av masker og grupperes i pakker, som hver er en samling filer med tilhørende avhengigheter. Det er mulig å definere variabler. Variabler og egenskaper er strengt skrevet (type variabler velges dynamisk ved første tildeling, og for egenskaper statisk avhengig av type modul). Komplekse elementer i monteringslogikken flyttes til behandlere, skrevet på Go-språket.

Soong flettes sammen med et større prosjekt Blueprint, der det utvikles et meta-assembly-system som ikke er knyttet til Android, som, basert på filer med deklarative modulbeskrivelser, genererer monteringsskript Ninja (en erstatning for make), som beskriver kommandoene som må kjøres for å bygge og avhengighetene. I stedet for å bruke komplekse regler eller et domenespesifikt språk for å definere byggelogikk, bruker Blueprint prosjektspesifikke behandlere i Go-språket (Soong er egentlig et sett med lignende behandlere for Android).

Denne tilnærmingen gjør det mulig for store og heterogene prosjekter, som Android, å implementere komplekse elementer av monteringslogikk i kode i et programmeringsspråk på høyt nivå, samtidig som man opprettholder muligheten til å gjøre endringer i moduler relatert til monteringsorganisasjon og prosjektstruktur ved hjelp av enkel deklarativ syntaks . For eksempel, i Soong, gjøres valget av kompilatorflagg av behandleren llvm.go, og bruken av innstillinger som er spesifikke for maskinvarearkitekturer utføres av behandleren art.go, men koblingen av kodefiler utføres i ".bp"-filen.

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

Kilde: opennet.ru

Legg til en kommentar