Google dezvoltă sistemul de asamblare modular Soong pentru Android

Google dezvoltă un sistem de compilare Soong, conceput pentru a înlocui vechile scripturi de compilare pentru platforma Android, pe baza utilizării utilitarului make. Soong sugerează utilizarea declarativă simplă descrieri reguli de asamblare a modulelor, dat în fișierele cu extensia „.bp” (planuri). Formatul fișierului este apropiat de JSON și, dacă este posibil, repetă sintaxa și semantica fișierelor de asamblare Bazel. Codul este scris în Go și distribuit sub licența Apache 2.0.

Fișierele de compilare Soong nu acceptă declarații condiționate și expresii de ramificare, ci doar descriu structura proiectului, modulele și dependențele utilizate la construirea. Fișierele care urmează să fie construite sunt descrise folosind măști și grupate în pachete, fiecare dintre acestea fiind o colecție de fișiere cu dependențe asociate. Variabilele pot fi definite. Variabilele și proprietățile sunt strict tipizate (tipul de variabile este selectat dinamic la prima atribuire, iar pentru proprietăți static în funcție de tipul modulului). Elementele complexe ale logicii de asamblare sunt mutate la manipulatori, scris în limba Go.

Soong se împletește cu un proiect mai amplu Blueprint, în cadrul căruia se dezvoltă un sistem de meta-asamblare nelegat de Android, care, pe baza fișierelor cu descrieri declarative de module, generează scripturi de asamblare Ninja (un înlocuitor pentru make), descriind comenzile care trebuie executate pentru a construi și dependențele. În loc să folosească reguli complexe sau un limbaj specific domeniului pentru a defini logica de construcție, Blueprint folosește handlere specifice proiectului în limba Go (Soong este în esență un set de handlere similare pentru Android).

Această abordare permite proiectelor mari și eterogene, cum ar fi Android, să implementeze elemente complexe ale logicii de asamblare în cod într-un limbaj de programare de nivel înalt, menținând în același timp capacitatea de a face modificări modulelor legate de organizarea de asamblare și structura proiectului folosind sintaxa declarativă simplă. . De exemplu, în Soong, selectarea steagurilor compilatorului este făcută de handler llvm.go, iar aplicarea setărilor specifice arhitecturilor hardware este realizată de handler art.go, dar legarea fișierelor de cod se realizează în fișierul „.bp”.

cc_library {
...
srcs: ["generic.cpp"],
arc: {
braț: {
srcs: ["arm.cpp"],
},
x86:{
srcs: ["x86.cpp"],
},
},
}

Sursa: opennet.ru

Adauga un comentariu