A Google a gyűjtő rendszert fejleszt , amely célja, hogy helyettesítse az Android platform korábbi összeszerelési forgatókönyveit, amelyek a make segédprogram használatán alapultak. A Soong egyszerű deklaratív összeszerelési szabályok használatát kínálja, a «.bp» (blueprints) kiterjesztésű fájlokban határoznak meg. A fájlformátum közel áll a JSON-hoz, és lehetőség szerint követi az összeszerelési fájlok szintaxisát és szemantikáját. A kód Go nyelven íródott, és az Apache 2.0 licenc alatt terjesztik.
A Soong összeszerelési fájlok nem támogatják a feltételes operátorokat és ágaikat, csupán a projekt szerkezetét, az összeszereléshez alkalmazott modulokat és függőségeket írják le. Az összeszerelésre szánt fájlokat maszkolással írják le, és csomagokba csoportosítják, amelyek mindegyike egy fájlokból álló gyűjtemény, amely a kapcsolódó függőségeket határozza meg. Változók definiálása lehetséges. A változók és tulajdonságok szigorúan típusosak (a változók típusa dinamikusan választódik az első hozzárendeléskor, míg a tulajdonságok típusa statikusan, a modul típusa szerint). Az összetett összeszerelési logikai elemeket kezelőkre helyezték át, Go nyelvet használnak.
A Soong összefonódik egy általánosabb projekttel, , amely keretében egy Android-tól független meta-összeszerelési rendszer fejlődik, amely a deklaratív modul leírások fájljainak alapján összeszerelési forgatókönyveket hoz létre. (a make helyettesítése), amely leírja az összeszereléshez végrehajtandó parancsokat és a függőségeket. Ahelyett, hogy bonyolult szabályokat vagy tárgyorientált nyelvet használnánk az összeszerelési logika meghatározására, a Blueprint a projekt-specifikus kezelőket alkalmazza Go nyelven (a Soong valójában egy hasonló kezelőkből álló készlet az Androidhoz).
Ez a megközelítés lehetővé teszi nagy és heterogén projektek, mint például az Android, számára, hogy bonyolult összeszerelési logikai elemeket valósítsanak meg magas szintű programozási nyelven, miközben egyszerű deklaratív szintaxis alkalmazásával változtatásokat végezhetnek a modulokban, amelyek az összeszerelés és a projekt struktúrája mellett vannak. Például a Soong esetében a fordítói zászlók kiválasztása az , míg a hardverarchitektúrákra specifikus beállítások alkalmazása az , de a kódfájlok hivatkozása a «.bp» fájlban történik.
cc_library {
…
srcs: [«generic.cpp»],
arch: {
arm: {
srcs: [«arm.cpp»],
},
x86: {
srcs: [«x86.cpp»],
},
},
}
Forrás: opennet.ru
