Google er ved at udvikle et modulært montagesystem Soong til Android

Google er ved at udvikle et byggesystem Snart, designet til at erstatte de gamle build-scripts til Android-platformen, baseret på brugen af ​​make-værktøjet. Soong foreslår at bruge simpel deklarativ beskrivelser regler for samling af moduler, givet i filer med filtypenavnet ".bp" (blueprints). Filformatet er tæt på JSON og gentager, hvis det er muligt, syntaksen og semantikken for assemblyfiler Bazel. Koden er skrevet i Go og distribueret under Apache 2.0-licensen.

Soong build-filer understøtter ikke betingede sætninger og forgreningsudtryk, men beskriver kun projektstrukturen, moduler og afhængigheder, der bruges ved opbygning. Filerne, der skal bygges, beskrives ved hjælp af masker og grupperes i pakker, som hver er en samling af filer med tilhørende afhængigheder. Det er muligt at definere variable. Variabler og egenskaber er strengt indtastet (variabletypen vælges dynamisk ved første tildeling, og for egenskaber statisk afhængigt af modulets type). Komplekse elementer af montagelogik flyttes til handlere, skrevet på Go-sprog.

Soong fletter sig sammen med et større projekt Blueprint, hvori der udvikles et meta-assembly-system, der ikke er bundet til Android, som, baseret på filer med deklarative modulbeskrivelser, genererer assembly-scripts Ninja (en erstatning for make), der beskriver de kommandoer, der skal køres for at bygge og afhængighederne. I stedet for at bruge komplekse regler eller et domænespecifikt sprog til at definere byggelogik, bruger Blueprint projektspecifikke handlere i Go-sproget (Soong er i bund og grund et sæt lignende handlere til Android).

Denne tilgang gør det muligt for store og heterogene projekter, såsom Android, at implementere komplekse elementer af assemblerlogik i kode i et programmeringssprog på højt niveau, samtidig med at evnen til at foretage ændringer i moduler relateret til assemblerorganisering og projektstruktur ved hjælp af simpel deklarativ syntaks bevares. . For eksempel i Soong udføres valget af compilerflag af handleren llvm.go, og anvendelsen af ​​indstillinger, der er specifikke for hardwarearkitekturer, udføres af behandleren art.go, men sammenkædningen af ​​kodefiler udføres i ".bp"-filen.

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

Kilde: opennet.ru

Tilføj en kommentar