Google-ը մշակում է Soong մոդուլային հավաքման համակարգը Android-ի համար

Google-ը մշակում է կառուցման համակարգ Սունգ, որը նախատեսված է Android պլատֆորմի համար հին build սկրիպտները փոխարինելու համար՝ հիմնված make utility-ի օգտագործման վրա: Soong-ն առաջարկում է օգտագործել պարզ դեկլարատիվ նկարագրություններ մոդուլների հավաքման կանոններ, տրված «.bp» ընդլայնմամբ ֆայլերում (գծագրեր): Ֆայլի ձևաչափը մոտ է JSON-ին և, հնարավորության դեպքում, կրկնում է հավաքման ֆայլերի շարահյուսությունն ու իմաստաբանությունը Բազել. Կոդը գրված է Go-ում և տարածվում է Apache 2.0 լիցենզիայի ներքո:

Soong build ֆայլերը չեն աջակցում պայմանական հայտարարություններ և ճյուղավորվող արտահայտություններ, այլ միայն նկարագրում են նախագծի կառուցվածքը, մոդուլները և կախվածությունները, որոնք օգտագործվում են կառուցելիս: Կառուցվելիք ֆայլերը նկարագրվում են դիմակների միջոցով և խմբավորված են փաթեթների մեջ, որոնցից յուրաքանչյուրը իրենից ներկայացնում է կապված կախվածություններ ունեցող ֆայլերի հավաքածու: Հնարավոր է սահմանել փոփոխականներ: Փոփոխականները և հատկությունները խիստ տպագրված են (փոփոխականների տեսակը ընտրվում է դինամիկ կերպով առաջին հանձնարարությունից հետո, իսկ հատկությունների համար՝ ստատիկ՝ կախված մոդուլի տեսակից): Հավաքման տրամաբանության բարդ տարրերը տեղափոխվում են մշակողներ, գրված Go լեզվով։

Soong-ը միահյուսվում է ավելի մեծ նախագծի հետ Նախագիծ, որի շրջանակներում մշակվում է Android-ի հետ չկապված մետա հավաքման համակարգ, որը, հիմնվելով դեկլարատիվ մոդուլի նկարագրություններով ֆայլերի վրա, ստեղծում է հավաքման սկրիպտներ։ Ninja (փոխարինում է make-ին), նկարագրելով հրամանները, որոնք պետք է գործարկվեն կառուցելու համար և կախվածությունները: Կառուցման տրամաբանությունը սահմանելու համար բարդ կանոններ կամ տիրույթին հատուկ լեզու օգտագործելու փոխարեն, Blueprint-ն օգտագործում է նախագծին հատուկ մշակիչներ Go լեզվով (Soong-ը, ըստ էության, Android-ի համար նմանատիպ մշակողների հավաքածու է):

Այս մոտեցումը թույլ է տալիս խոշոր և տարասեռ նախագծերին, ինչպիսին է Android-ը, կոդի մեջ ներդնել հավաքման տրամաբանության բարդ տարրեր բարձր մակարդակի ծրագրավորման լեզվով՝ միաժամանակ պահպանելով հավաքման կազմակերպման և նախագծի կառուցվածքի հետ կապված մոդուլներում փոփոխություններ կատարելու հնարավորությունը՝ օգտագործելով պարզ դեկլարատիվ շարահյուսություն: . Օրինակ՝ Soong-ում կոմպիլյատորների դրոշների ընտրությունը կատարվում է կարգավորողի կողմից llvm.go, և ապարատային ճարտարապետությանը հատուկ կարգավորումների կիրառումն իրականացվում է կարգավորողի կողմից art.go, սակայն կոդային ֆայլերի միացումը կատարվում է «.bp» ֆայլում։

cc_գրադարան {
...
srcs՝ ["generic.cpp"],
կամար: {
թեւ: {
srcs՝ ["arm.cpp"],
},
x86:{
srcs՝ ["x86.cpp"],
},
},
}

Source: opennet.ru

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