Mae Google yn datblygu system gydosod fodiwlaidd Soong ar gyfer Android

Mae Google yn datblygu system adeiladu Cyn hir, wedi'i gynllunio i ddisodli'r hen sgriptiau adeiladu ar gyfer y platfform Android, yn seiliedig ar y defnydd o'r cyfleustodau gwneud. Mae Soong yn awgrymu defnyddio datganiad syml disgrifiadau rheolau ar gyfer cydosod modiwlau, a roddwyd mewn ffeiliau gyda'r estyniad “.bp” (glasbrintiau). Mae fformat y ffeil yn agos at JSON ac, os yn bosibl, mae'n ailadrodd cystrawen a semanteg ffeiliau cydosod Bazel. Mae'r cod wedi'i ysgrifennu yn Go a'i ddosbarthu o dan drwydded Apache 2.0.

Nid yw ffeiliau Soong Build yn cefnogi datganiadau amodol ac ymadroddion canghennog, ond dim ond yn disgrifio strwythur y prosiect, y modiwlau a'r dibyniaethau a ddefnyddir wrth adeiladu. Disgrifir y ffeiliau sydd i'w hadeiladu gan ddefnyddio masgiau a'u grwpio i becynnau, pob un ohonynt yn gasgliad o ffeiliau gyda dibyniaethau cysylltiedig. Mae'n bosibl diffinio newidynnau. Mae newidynnau a phriodweddau yn cael eu teipio'n llym (mae'r math o newidynnau'n cael eu dewis yn ddeinamig ar yr aseiniad cyntaf, ac ar gyfer priodweddau yn statig yn dibynnu ar y math o fodiwl). Mae elfennau cymhleth o resymeg cydosod yn cael eu symud i'r trinwyr, ysgrifenedig yn iaith Go.

Mae Soong yn cydblethu â phrosiect mwy Glasbrint, lle mae system meta-gynulliad nad yw'n gysylltiedig ag Android yn cael ei datblygu, sydd, yn seiliedig ar ffeiliau â disgrifiadau modiwl datganiadol, yn cynhyrchu sgriptiau cydosod Ninja (yn lle gwneud), yn disgrifio'r gorchmynion y mae angen eu rhedeg i adeiladu a'r dibyniaethau. Yn lle defnyddio rheolau cymhleth neu iaith parth-benodol i ddiffinio rhesymeg adeiladu, mae Blueprint yn defnyddio trinwyr prosiect-benodol yn yr iaith Go (yn ei hanfod, set o drinwyr tebyg ar gyfer Android yw Soong).

Mae'r dull hwn yn caniatáu i brosiectau mawr a heterogenaidd, megis Android, weithredu elfennau cymhleth o resymeg cydosod mewn cod mewn iaith raglennu lefel uchel, tra'n cynnal y gallu i wneud newidiadau i fodiwlau sy'n ymwneud â threfniadaeth y cynulliad a strwythur y prosiect gan ddefnyddio cystrawen ddatganiadol syml. . Er enghraifft, yn Soong, y triniwr sy'n dewis baneri casglwr llvm.go, a'r triniwr sy'n gwneud cais gosodiadau sy'n benodol i bensaernïaeth caledwedd celf.go, ond mae cysylltu ffeiliau cod yn cael ei wneud yn y ffeil “.bp”.

cc_llyfrgell {
...
srcs: ["generic.cpp"],
bwa: {
braich: {
srcs: ["arm.cpp"],
},
x86:{
srcs: ["x86.cpp"],
},
},
}

Ffynhonnell: opennet.ru

Ychwanegu sylw