Google, Android için Soong modüler montaj sistemini geliştiriyor

Google bir derleme sistemi geliştiriyor yakındamake yardımcı programının kullanımına dayalı olarak Android platformu için eski derleme komut dosyalarının yerini alacak şekilde tasarlanmıştır. Soong basit bildirim biçiminin kullanılmasını öneriyor tanım modüllerin montajına ilişkin kurallar, verildi “.bp” (planlar) uzantılı dosyalarda. Dosya formatı JSON'a yakındır ve mümkünse montaj dosyalarının sözdizimi ve anlambilimini tekrarlar Bazel. Kod Go'da yazılmıştır ve Apache 2.0 lisansı altında dağıtılmaktadır.

Soong derleme dosyaları koşullu ifadeleri ve dallanma ifadelerini desteklemez, yalnızca proje yapısını, modülleri ve oluşturma sırasında kullanılan bağımlılıkları açıklar. Oluşturulacak dosyalar maskeler kullanılarak tanımlanır ve her biri ilgili bağımlılıklara sahip bir dosya koleksiyonu olan paketler halinde gruplandırılır. Değişkenleri tanımlamak mümkündür. Değişkenler ve özellikler kesin olarak yazılmıştır (değişkenlerin türü ilk atamada dinamik olarak seçilir ve özellikler için modül türüne bağlı olarak statik olarak seçilir). Montaj mantığının karmaşık öğeleri işleyicilere taşınır, yazılı Go dilinde.

Soong daha büyük bir projeyle iç içe geçiyor BlueprintBildirimsel modül açıklamalarına sahip dosyalara dayanarak derleme komut dosyaları oluşturan, Android'e bağlı olmayan bir meta montaj sistemi geliştirilmektedir. Ninja (make'nin yerine geçen), derlemek için çalıştırılması gereken komutları ve bağımlılıkları açıklayan. Yapı mantığını tanımlamak için karmaşık kurallar veya alana özgü bir dil kullanmak yerine Blueprint, Go dilindeki projeye özgü işleyicileri kullanır (Soong aslında Android için bir dizi benzer işleyicidir).

Bu yaklaşım, Android gibi büyük ve heterojen projelerin, montaj mantığının karmaşık öğelerini üst düzey bir programlama dilinde kodda uygulamasına olanak tanırken, basit bildirimsel sözdizimi kullanarak montaj organizasyonu ve proje yapısı ile ilgili modüllerde değişiklik yapma yeteneğini korur. . Örneğin Soong'da derleyici bayraklarının seçimi işleyici tarafından yapılır. llvm.gove donanım mimarilerine özgü ayarların uygulanması işleyici tarafından gerçekleştirilir. sanat.go, ancak kod dosyalarının bağlanması “.bp” dosyasında gerçekleştirilir.

cc_kütüphane {
...
kaynaklar: ["generic.cpp"],
kemer: {
kol: {
kaynaklar: ["arm.cpp"],
},
x86:{
kaynaklar: ["x86.cpp"],
},
},
}

Kaynak: opennet.ru

Yorum ekle