Google sta sviluppando un sistema di compilazione
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,
Soong si intreccia con un progetto più ampio
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
libreria_cc {
...
srcs: ["generic.cpp"],
arco: {
braccio: {
sorgenti: ["arm.cpp"],
},
x86:{
sorgenti: ["x86.cpp"],
},
},
}
Fonte: opennet.ru