Google sviluppa u sistema di assemblea modulare Soong per Android

Google hà sviluppatu un sistema di creazione Soong, cuncepitu per rimpiazzà i vechji script di custruzzione per a piattaforma Android, basatu annantu à l'usu di l'utilità make. Soong suggerisce l'usu di dichjarazione simplice descrizzioni regule per l'assemblea di moduli, datu in i schedari cù l'estensione ".bp" (blueprints). U furmatu di u schedariu hè vicinu à JSON è, se pussibule, ripete a sintassi è a semantica di i schedari di assemblea. bazel. U codice hè scrittu in Go è distribuitu sottu a licenza Apache 2.0.

I schedarii di custruzzione di Soong ùn supportanu micca dichjarazioni cundiziunali è espressioni di ramificazione, ma solu descrizanu a struttura di u prugettu, i moduli è e dependenzii utilizati durante a custruzione. I schedarii da esse custruitu sò descritti cù maschere è raggruppati in pacchetti, ognuna di e quali hè una cullizzioni di schedari cù dipendenze assuciate. Variables ponu esse definite. Variabili è pruprietà sò strettamente tipati (u tipu di variàbili hè sceltu dinamicamente nantu à a prima assignazione, è per e pruprietà staticamente secondu u tipu di u modulu). Elementi cumplessi di a logica di l'assemblea sò trasferiti à i gestori, scrittu in lingua Go.

Soong si intreccia cù un prughjettu più grande Corsu Sintineddi, in u quale hè sviluppatu un sistema di meta-assemblea micca ligatu à Android, chì, basatu annantu à i schedari cù descrizzioni di moduli dichjarativi, genera script di assemblea. Ninja (un rimpiazzamentu per make), chì descrive i cumandamenti chì deve esse eseguitu per custruisce è e dipendenze. Invece d'utilizà regule cumplesse o una lingua specifica di u duminiu per definisce a logica di custruzzione, Blueprint usa gestori specifichi di prughjettu in a lingua Go (Soong hè essenzialmente un set di gestori simili per Android).

Stu approcciu permette à prughjetti grandi è eterogenei, cum'è Android, per implementà elementi cumplessi di logica di l'assemblea in codice in una lingua di prugrammazione d'altu livellu, mantenendu a capacità di fà cambiamenti à i moduli ligati à l'urganizazione di l'assemblea è a struttura di u prugettu utilizendu una sintassi dichjarazione simplice. . Per esempiu, in Soong, a selezzione di bandieri di compilatore hè fatta da u gestore llvm.go, è l'applicazione di paràmetri specifichi à l'architetture hardware hè realizatu da u gestore art.go, ma u ligame di i schedari cù u codice hè realizatu in u schedariu ".bp".

cc_library {
...
srcs: ["generic.cpp"],
arcu: {
bracciu: {
srcs: ["arm.cpp"],
},
x86: {
srcs: ["x86.cpp"],
},
},
}

Source: opennet.ru

Add a comment