Google entwickelt ein neues Build-System , das die alten Build-Skripte der Android-Plattform ersetzen soll, die auf dem Tool make basieren. Soong bietet eine einfache, deklarative Build-Regeln fĂŒr Module in Dateien mit der Endung â.bpâ (blueprints) definiert sind. Das Dateiformat Ă€hnelt JSON und versucht, die Syntax und Semantik der Build-Dateien zu wiederholen. Der Code ist in Go geschrieben und wird unter der Lizenz Apache 2.0 verbreitet.
Die Build-Dateien von Soong unterstĂŒtzen keine bedingten Anweisungen oder AusdrĂŒcke zur Verzweigung, sondern beschreiben lediglich die Struktur des Projekts, die wĂ€hrend des Builds verwendeten Module und deren AbhĂ€ngigkeiten. Die zu bauenden Dateien werden mittels Masken beschrieben und in Pakete gruppiert, wobei jedes Paket eine Sammlung von Dateien mit dazugehörigen AbhĂ€ngigkeiten darstellt. Variablen können definiert werden. Variablen und Eigenschaften sind stark typisiert (der Typ von Variablen wird dynamisch bei der ersten Zuweisung gewĂ€hlt, wĂ€hrend fĂŒr Eigenschaften der Typ statisch je nach Modultyp festgelegt wird). Komplexe Elemente der Build-Logik werden in Handler ausgegliedert, Go geschrieben sind.
Soong ist eng mit einem umfassenderen Projekt verwoben, in dessen Rahmen ein plattformunabhĂ€ngiges Meta-System fĂŒr Builds entwickelt wird, das basierend auf Dateien mit deklarativen Modulbeschreibungen Build-Skripte erstellt. (Ersatz fĂŒr Make), die die Befehle beschreiben, die zur Erstellung ausgefĂŒhrt werden mĂŒssen, sowie die AbhĂ€ngigkeiten. Anstelle komplexer Regeln oder domĂ€nenspezifischer Sprachen zur Definition der Build-Logik werden in Blueprint projektspezifische Handler in der Programmiersprache Go verwendet (Soong ist im Grunde genommen eine Sammlung solcher Handler fĂŒr Android).
Dieser Ansatz ermöglicht es, fĂŒr umfangreiche und heterogene Projekte wie Android komplexe Elemente der Build-Logik in einem hochgradig abstrahierten Programmiersprachen-Code umzusetzen, wĂ€hrend zugleich einfache deklarative Syntax verwendet wird, um Ănderungen in den Modulen vorzunehmen, die sich auf die Organisation des Builds und die Projektstruktur beziehen. Zum Beispiel erfolgt in Soong die Auswahl der Compiler-Flags durch den Handler , wĂ€hrend die Anwendung architekturspezifischer Einstellungen durch den Handler , jedoch erfolgt die Bindung von Dateien mit Code in der Datei â.bpâ.
cc_library {
âŠ
srcs: [âgeneric.cppâ],
arch: {
arm: {
srcs: [âarm.cppâ],
},
x86: {
srcs: [âx86.cppâ],
},
},
}
Quelle: opennet.ru
