Google sta sviluppando un sistema di assemblaggio modulare Soong per Android

Google sta sviluppando un sistema di compilazione presto, pensato per sostituire i vecchi script di build per la piattaforma Android, basati sull'utilizzo dell'utility make. Soong suggerisce di utilizzare un dichiarativo semplice descrizione regole per assemblare i moduli, dato nei file con estensione “.bp” (progetti). Il formato del file è vicino a JSON e, se possibile, ripete la sintassi e la semantica dei file assembly Bazel. Il codice è scritto in Go e distribuito sotto la licenza Apache 2.0.

I file di build di Soong non supportano istruzioni condizionali ed espressioni di ramificazione, ma descrivono solo la struttura del progetto, i moduli e le dipendenze utilizzate durante la creazione. I file da costruire vengono descritti tramite maschere e raggruppati in pacchetti, ognuno dei quali è una raccolta di file con relative dipendenze. È possibile definire delle variabili. Le variabili e le proprietà sono rigorosamente tipizzate (il tipo delle variabili viene selezionato dinamicamente al momento della prima assegnazione e per le proprietà staticamente a seconda del tipo di modulo). Gli elementi complessi della logica dell'assembly vengono spostati nei gestori, scritto nella lingua Go.

Soong si intreccia con un progetto più ampio Cianografia, all'interno del quale è in fase di sviluppo un sistema di meta-assembly non legato ad Android che, sulla base di file con descrizioni dichiarative dei moduli, genera script di assembly Ninja (un sostituto di make), descrivendo i comandi che devono essere eseguiti per compilare e le dipendenze. Invece di utilizzare regole complesse o un linguaggio specifico del dominio per definire la logica di compilazione, Blueprint utilizza gestori specifici del progetto nel linguaggio Go (Soong è essenzialmente un insieme di gestori simili per Android).

Questo approccio consente a progetti grandi ed eterogenei, come Android, di implementare elementi complessi di logica assembly nel codice in un linguaggio di programmazione di alto livello, pur mantenendo la capacità di apportare modifiche ai moduli relativi all'organizzazione dell'assembly e alla struttura del progetto utilizzando una semplice sintassi dichiarativa . Ad esempio, in Soong, la selezione dei flag del compilatore viene effettuata dal gestore lvm.goe l'applicazione delle impostazioni specifiche delle architetture hardware viene eseguita dal gestore art.go, ma il collegamento dei file di codice viene effettuato nel file “.bp”.

libreria_cc {
...
srcs: ["generic.cpp"],
arco: {
braccio: {
sorgenti: ["arm.cpp"],
},
x86:{
sorgenti: ["x86.cpp"],
},
},
}

Fonte: opennet.ru

Aggiungi un commento