Google Android üçün Soong modul montaj sistemi hazırlayır

Google tikinti sistemini inkişaf etdirir Tezliklə, make yardım proqramının istifadəsi əsasında Android platforması üçün köhnə qurma skriptlərini əvəz etmək üçün nəzərdə tutulmuşdur. Soong sadə deklarativdən istifadə etməyi təklif edir təsvirlər modulların yığılması qaydaları, verilmişdir “.bp” uzantılı fayllarda (planlar). Fayl formatı JSON-a yaxındır və mümkünsə montaj fayllarının sintaksisini və semantikasını təkrarlayır. Bazel. Kod Go-da yazılır və Apache 2.0 lisenziyası altında paylanır.

Tezliklə qurma faylları şərti ifadələri və budaqlanan ifadələri dəstəkləmir, ancaq tikinti zamanı istifadə olunan layihə strukturunu, modulları və asılılıqları təsvir edir. Qurulacaq fayllar maskalardan istifadə etməklə təsvir edilir və paketlərdə qruplaşdırılır, hər biri əlaqəli asılılıqları olan fayllar toplusudur. Dəyişənləri müəyyən etmək mümkündür. Dəyişənlər və xassələr ciddi şəkildə yazılır (dəyişənlərin növü ilk təyinat zamanı dinamik, xassələr üçün isə modulun növündən asılı olaraq statik olaraq seçilir). Montaj məntiqinin mürəkkəb elementləri işləyicilərə köçürülür, yazılıb Go dilində.

Tezliklə daha böyük bir layihə ilə birləşir Blueprint, daxilində Android ilə əlaqəli olmayan bir meta-montaj sistemi hazırlanır, bu, deklarativ modul təsvirləri olan fayllara əsaslanaraq montaj skriptlərini yaradır. Ninja (make üçün əvəz), qurmaq üçün icra edilməli olan əmrləri və asılılıqları təsvir edir. Quraşdırma məntiqini müəyyən etmək üçün mürəkkəb qaydalardan və ya domenə xas dildən istifadə etmək əvəzinə, Blueprint Go dilində layihəyə aid işləyicilərdən istifadə edir (Soong mahiyyətcə Android üçün oxşar işləyicilər toplusudur).

Bu yanaşma, sadə deklarativ sintaksisdən istifadə etməklə montajın təşkili və layihə strukturu ilə bağlı modullara dəyişiklik etmək imkanını saxlamaqla, Android kimi iri və heterojen layihələrə yüksək səviyyəli proqramlaşdırma dilində kodda montaj məntiqinin mürəkkəb elementlərini həyata keçirməyə imkan verir. . Məsələn, Soong-da kompilyator bayraqlarının seçimi işləyici tərəfindən həyata keçirilir llvm.go, və hardware arxitekturalarına xas olan parametrlərin tətbiqi işləyici tərəfindən həyata keçirilir art.go, lakin kod fayllarının əlaqələndirilməsi “.bp” faylında həyata keçirilir.

cc_library {
...
srcs: ["generic.cpp"],
arch: {
qol: {
srcs: ["arm.cpp"],
},
x86:{
srcs: ["x86.cpp"],
},
},
}

Mənbə: opennet.ru

Добавить комментарий