Google Android үчүн Soong модулдук чогултуу системасын иштеп чыгат

Google куруу системасын иштеп чыгууда Жакында, make утилитасын колдонуунун негизинде Android платформасы үчүн эски куруу скрипттерин алмаштыруу үчүн иштелип чыккан. Soong жөнөкөй декларативди колдонууну сунуш кылат сүрөттөөлөр модулдарды чогултуу эрежелери, берилген ".bp" кеңейтүүсү бар файлдарда (схемалар). Файл форматы JSONга жакын жана мүмкүн болсо, монтаждык файлдардын синтаксисин жана семантикасын кайталайт Базел. Код Go программасында жазылган жана Apache 2.0 лицензиясы боюнча таратылган.

Soong build файлдары шарттуу билдирүүлөрдү жана тармакталган туюнтмаларды колдобойт, бирок курууда колдонулган долбоордун түзүмүн, модулдарын жана көз карандылыктарын гана сүрөттөйт. Кура турган файлдар маскалар аркылуу сүрөттөлөт жана пакеттерге топтоштурулган, алардын ар бири байланышкан көз карандылыктары бар файлдардын жыйындысы. Өзгөрмөлөрдү аныктоого болот. Өзгөрмөлөр жана касиеттер катуу терилген (өзгөрмөлөрдүн түрү биринчи дайындоодо динамикалык түрдө тандалат, ал эми касиеттер үчүн модулдун түрүнө жараша статикалык түрдө тандалат). Монтаждык логиканын татаал элементтери иштеткичтерге көчүрүлөт, жазылган Go тилинде.

Көп өтпөй чоңураак долбоор менен чырмалышат план, анын ичинде Android менен байланышпаган мета-монтаж системасы иштелип жатат, ал декларативдик модулдун сыпаттамасы бар файлдардын негизинде ассамблея скрипттерин жаратат Ninja куруу үчүн аткарылышы керек болгон буйруктарды жана көз карандылыктарды сыпаттоо менен (макеме үчүн алмаштыруу). Куруу логикасын аныктоо үчүн татаал эрежелерди же доменге тиешелүү тилди колдонуунун ордуна, Blueprint Go тилиндеги долбоорго тиешелүү иштеткичтерди колдонот (Soong негизинен Android үчүн окшош иштеткичтердин жыйындысы).

Бул ыкма чоң жана гетерогендүү долбоорлорго, мисалы, Android үчүн, жөнөкөй декларативдик синтаксистин жардамы менен ассамблеяны уюштурууга жана долбоордун структурасына тиешелүү модулдарга өзгөртүүлөрдү киргизүү мүмкүнчүлүгүн сактап, жогорку деңгээлдеги программалоо тилиндеги коддогу ассамблея логикасынын татаал элементтерин ишке ашырууга мүмкүндүк берет. . Мисалы, Соонгдо компилятордун желектерин тандоону иштетүүчү ишке ашырат llvm.go, жана аппараттык архитектураларга мүнөздүү орнотууларды колдонууну иштетүүчү ишке ашырат art.go, бирок файлдарды код менен байланыштыруу “.bp” файлында ишке ашырылат.

cc_library {
...
srcs: ["generic.cpp"],
арка: {
кол: {
srcs: ["arm.cpp"],
},
x86:{
srcs: ["x86.cpp"],
},
},
}

Source: opennet.ru

Комментарий кошуу