Google développe un système d'assemblage modulaire Soong pour Android

Google développe un système de build Bientôt, conçu pour remplacer les anciens scripts de build pour la plateforme Android, basé sur l'utilisation de l'utilitaire make. Soong suggère d'utiliser un déclaratif simple des descriptions règles d'assemblage des modules, donné dans des fichiers avec l’extension « .bp » (plans). Le format de fichier est proche de JSON et, si possible, répète la syntaxe et la sémantique des fichiers assembleur Bazel. Le code est écrit en Go et distribué sous la licence Apache 2.0.

Les fichiers de construction Soong ne prennent pas en charge les instructions conditionnelles et les expressions de branchement, mais décrivent uniquement la structure du projet, les modules et les dépendances utilisés lors de la construction. Les fichiers à construire sont décrits à l'aide de masques et regroupés en packages, chacun étant un ensemble de fichiers avec des dépendances associées. Il est possible de définir des variables. Les variables et propriétés sont strictement typées (le type des variables est sélectionné dynamiquement lors de la première affectation, et pour les propriétés de manière statique en fonction du type du module). Les éléments complexes de la logique d'assemblage sont déplacés vers des gestionnaires, écrit en langage Go.

Soong s'associe à un projet plus vaste Plan, au sein duquel est développé un système de méta-assemblage non lié à Android, qui, sur la base de fichiers avec des descriptions déclaratives de modules, génère des scripts d'assemblage Ninja (un remplacement de make), décrivant les commandes qui doivent être exécutées pour construire et les dépendances. Au lieu d'utiliser des règles complexes ou un langage spécifique au domaine pour définir la logique de construction, Blueprint utilise des gestionnaires spécifiques au projet dans le langage Go (Soong est essentiellement un ensemble de gestionnaires similaires pour Android).

Cette approche permet aux projets volumineux et hétérogènes, tels qu'Android, d'implémenter des éléments complexes de logique d'assemblage dans le code dans un langage de programmation de haut niveau, tout en conservant la possibilité d'apporter des modifications aux modules liés à l'organisation de l'assemblage et à la structure du projet en utilisant une syntaxe déclarative simple. . Par exemple, dans Soong, la sélection des drapeaux du compilateur est effectuée par le gestionnaire llvm.go, et l'application des paramètres spécifiques aux architectures matérielles est réalisée par le gestionnaire art.aller, mais la liaison des fichiers de code s'effectue dans le fichier « .bp ».

cc_bibliothèque {
...
srcs : ["générique.cpp"],
arc : {
bras: {
srcs : ["arm.cpp"],
},
x86 : {
srcs : ["x86.cpp"],
},
},
}

Source: opennet.ru

Ajouter un commentaire