Google entwickelt das modulare Montagesystem Soong für Android

Google entwickelt ein Build-System Bald, entwickelt, um die alten Build-Skripte für die Android-Plattform zu ersetzen, basierend auf der Verwendung des Make-Dienstprogramms. Soong schlägt die Verwendung einer einfachen Deklarativform vor Beschreibungen Regeln für den Zusammenbau von Modulen, gegeben in Dateien mit der Endung „.bp“ (Blaupausen). Das Dateiformat ähnelt JSON und wiederholt, wenn möglich, die Syntax und Semantik von Assembly-Dateien Bazel. Der Code ist in Go geschrieben und wird unter der Apache 2.0-Lizenz vertrieben.

Soong-Build-Dateien unterstützen keine bedingten Anweisungen und Verzweigungsausdrücke, sondern beschreiben nur die Projektstruktur, Module und Abhängigkeiten, die beim Erstellen verwendet werden. Die zu erstellenden Dateien werden mithilfe von Masken beschrieben und in Pakete gruppiert, bei denen es sich jeweils um eine Sammlung von Dateien mit zugehörigen Abhängigkeiten handelt. Es ist möglich, Variablen zu definieren. Variablen und Eigenschaften sind streng typisiert (der Variablentyp wird dynamisch bei der ersten Zuweisung ausgewählt, bei Eigenschaften statisch abhängig vom Modultyp). Komplexe Elemente der Assemblerlogik werden in Handler verschoben, geschrieben in Go-Sprache.

Soong ist mit einem größeren Projekt verknüpft Entwurf, innerhalb dessen ein nicht an Android gebundenes Meta-Assembly-System entwickelt wird, das auf Basis von Dateien mit deklarativen Modulbeschreibungen Assembler-Skripte generiert Ninja (ein Ersatz für make) und beschreibt die Befehle, die zum Erstellen ausgeführt werden müssen, sowie die Abhängigkeiten. Anstatt komplexe Regeln oder eine domänenspezifische Sprache zum Definieren der Build-Logik zu verwenden, verwendet Blueprint projektspezifische Handler in der Go-Sprache (Soong ist im Wesentlichen eine Reihe ähnlicher Handler für Android).

Dieser Ansatz ermöglicht es großen und heterogenen Projekten wie Android, komplexe Elemente der Assemblerlogik im Code einer höheren Programmiersprache zu implementieren und gleichzeitig die Möglichkeit beizubehalten, mithilfe einfacher deklarativer Syntax Änderungen an Modulen im Zusammenhang mit der Assemblierungsorganisation und der Projektstruktur vorzunehmen . Beispielsweise erfolgt in Soong die Auswahl der Compiler-Flags durch den Handler llvm.go, und die Anwendung von Einstellungen, die für Hardware-Architekturen spezifisch sind, wird vom Handler durchgeführt art.go, aber die Verknüpfung von Codedateien erfolgt in der „.bp“-Datei.

cc_library {
...
srcs: ["generic.cpp"],
Bogen: {
Arm: {
srcs: ["arm.cpp"],
},
x86:{
Quellen: ["x86.cpp"],
},
},
}

Source: opennet.ru

Kommentar hinzufügen