Google développe le système de construction modulaire Soong pour Android

L'entreprise Google développe un système de compilation Soong, destiné à remplacer les anciens scripts de compilation de la plateforme Android, basés sur l'utilisation de l'outil make. Soong propose d'utiliser des descriptions déclaratives simples des descriptions des règles de compilation des modules, définies dans des fichiers avec l'extension «.bp» (blueprints). Le format des fichiers est proche de JSON et tente de reproduire autant que possible la syntaxe et la sémantique des fichiers de compilation Bazel. Le code est écrit en langage Go et est distribué sous la licence Apache 2.0.

Les fichiers de compilation Soong ne prennent pas en charge les opérateurs et expressions conditionnels pour le branchement, mais décrivent uniquement la structure du projet, les modules utilisés lors de la compilation et les dépendances. Les fichiers à compiler sont décrits à l'aide de masques et regroupés en packages, chacun représentant une collection de fichiers avec des dépendances associées. La définition de variables est possible. Les variables et propriétés sont fortement typées (le type des variables est choisi dynamiquement lors de la première attribution, et pour les propriétés statiquement en fonction du type de module). Les éléments complexes de la logique de compilation sont extraits dans des gestionnaires, écrits en langage Go.

Soong est imbriqué dans un projet plus général Blueprint, au sein duquel une méta-système de compilation non lié à Android est développé, qui, sur la base de fichiers avec des descriptions déclaratives des modules, forme des scripts de compilation Ninja (remplaçant make), décrivant les commandes à exécuter pour la compilation et les dépendances. Au lieu d'appliquer des règles complexes ou un langage orienté objet pour déterminer la logique de compilation, Blueprint utilise des gestionnaires spécifiques aux projets à compiler écrits en Go (Soong est en fait un ensemble de tels gestionnaires pour Android).

Cette approche permet, pour de grands projets variés comme Android, de réaliser des éléments complexes de la logique de compilation en code dans un langage de programmation de haut niveau, tout en conservant la possibilité, grâce à une syntaxe déclarative simple, d'apporter des modifications aux modules liées à l'organisation de la compilation et à la structure du projet. Par exemple, dans Soong, le choix des options du compilateur est réalisé par le gestionnaire llvm.go, et l'application des réglages spécifiques aux architectures matérielles est effectuée par le gestionnaire art.go, mais la liaison des fichiers de code se fait dans le fichier «.bp».

cc_library {
…
srcs: [«generic.cpp»],
arch: {
arm: {
srcs: [«arm.cpp»],
},
x86: {
srcs: [«x86.cpp»],
},
},
}

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster