Google utvecklar ett modulärt monteringssystem Soong för Android

Google utvecklar ett byggsystem Snart, designad för att ersätta de gamla byggskripten för Android-plattformen, baserat på användningen av make-verktyget. Soong föreslår att du använder enkel deklarativ beskrivningar regler för montering av moduler, given i filer med filtillägget ".bp" (ritningar). Filformatet är nära JSON och upprepar om möjligt syntaxen och semantiken för assemblyfiler Bazel. Koden är skriven i Go och distribueras under Apache 2.0-licensen.

Soong build-filer stöder inte villkorliga uttalanden och förgreningsuttryck, utan beskriver bara projektstrukturen, modulerna och beroenden som används vid byggandet. Filerna som ska byggas beskrivs med hjälp av masker och grupperas i paket, som vart och ett är en samling filer med tillhörande beroenden. Variabler kan definieras. Variabler och egenskaper är strikt typade (typen av variabler väljs dynamiskt vid första tilldelningen och för egenskaper statiskt beroende på typen av modul). Komplexa element av monteringslogik flyttas till hanterare, skriven på Go-språk.

Soong flätas samman med ett större projekt Blueprint, inom vilket ett meta-assembly-system som inte är knutet till Android utvecklas, som, baserat på filer med deklarativa modulbeskrivningar, genererar monteringsskript Ninja (en ersättning för make), som beskriver de kommandon som måste köras för att bygga och beroenden. Istället för att använda komplexa regler eller ett domänspecifikt språk för att definiera bygglogik, använder Blueprint projektspecifika hanterare i Go-språket (Soong är i huvudsak en uppsättning liknande hanterare för Android).

Detta tillvägagångssätt gör det möjligt för stora och heterogena projekt, såsom Android, att implementera komplexa element av assemblerlogik i kod i ett programmeringsspråk på hög nivå, samtidigt som man bibehåller möjligheten att göra ändringar i moduler relaterade till assemblerorganisation och projektstruktur med hjälp av enkel deklarativ syntax . Till exempel i Soong görs valet av kompilatorflaggor av hanteraren llvm.go, och tillämpningen av inställningar som är specifika för hårdvaruarkitekturer utförs av hanteraren art.go, men länkning av filer med kod utförs i filen ".bp".

cc_library {
.
srcs: ["generic.cpp"],
båge: {
arm: {
srcs: ["arm.cpp"],
},
x86: {
srcs: ["x86.cpp"],
},
},
}

Källa: opennet.ru

Lägg en kommentar