Google mengembangkan sistem perakitan modular Soong untuk Android

Google sedang mengembangkan sistem pembangunan segera, dirancang untuk menggantikan skrip build lama untuk platform Android, berdasarkan penggunaan utilitas make. Soong menyarankan penggunaan deklaratif sederhana deskripsi aturan untuk merakit modul, diberikan dalam file dengan ekstensi β€œ.bp” (cetak biru). Format file mirip dengan JSON dan, jika memungkinkan, mengulangi sintaksis dan semantik file rakitan Bazel. Kode ini ditulis dalam Go dan didistribusikan di bawah lisensi Apache 2.0.

File build Soong tidak mendukung pernyataan kondisional dan ekspresi percabangan, tetapi hanya menjelaskan struktur proyek, modul, dan dependensi yang digunakan saat membangun. File yang akan dibangun dideskripsikan menggunakan mask dan dikelompokkan ke dalam paket, yang masing-masing merupakan kumpulan file dengan dependensi terkait. Dimungkinkan untuk mendefinisikan variabel. Variabel dan properti diketik secara ketat (jenis variabel dipilih secara dinamis saat penugasan pertama, dan untuk properti secara statis bergantung pada jenis modul). Elemen kompleks dari logika perakitan dipindahkan ke penangan, tertulis dalam bahasa Go.

Soong terkait dengan proyek yang lebih besar Denah, di mana sistem meta-perakitan yang tidak terikat dengan Android sedang dikembangkan, yang, berdasarkan file dengan deskripsi modul deklaratif, menghasilkan skrip perakitan Ninja (pengganti make), menjelaskan perintah yang perlu dijalankan untuk membangun dan dependensinya. Alih-alih menggunakan aturan yang rumit atau bahasa khusus domain untuk mendefinisikan logika build, Blueprint menggunakan penangan khusus proyek dalam bahasa Go (Soong pada dasarnya adalah kumpulan penangan serupa untuk Android).

Pendekatan ini memungkinkan proyek besar dan heterogen, seperti Android, untuk mengimplementasikan elemen kompleks logika perakitan dalam kode dalam bahasa pemrograman tingkat tinggi, sambil mempertahankan kemampuan untuk membuat perubahan pada modul yang terkait dengan organisasi perakitan dan struktur proyek menggunakan sintaksis deklaratif sederhana . Misalnya, di Soong, pemilihan flag compiler dilakukan oleh handler llvm.pergi, dan penerapan pengaturan khusus untuk arsitektur perangkat keras dilakukan oleh pengendali seni.pergi, tetapi penautan file kode dilakukan di file β€œ.bp”.

cc_perpustakaan {
...
srcs: ["generik.cpp"],
lengkungan: {
lengan: {
srcs: ["lengan.cpp"],
},
x86: {
srcs: ["x86.cpp"],
},
},
}

Sumber: opennet.ru

Tambah komentar