Google disvolvas modulan muntan sistemon Soong por Android

Google disvolvas konstrusistemon Soong, dizajnita por anstataŭigi la malnovajn konstruskriptojn por la Android-platformo, surbaze de la uzo de la make-utilo. Soong sugestas uzi simplan deklaron priskriboj reguloj por kunmeti modulojn, donita en dosieroj kun la etendo “.bp” (skioj). La dosierformato estas proksima al JSON kaj, se eble, ripetas la sintakson kaj semantikon de kunigdosieroj bazel. La kodo estas skribita en Go kaj distribuita sub la licenco Apache 2.0.

Soong-konstruaj dosieroj ne subtenas kondiĉajn deklarojn kaj disbranĉajn esprimojn, sed nur priskribas la projektostrukturon, modulojn kaj dependecojn uzatajn dum konstruado. La konstruotaj dosieroj estas priskribitaj per maskoj kaj grupigitaj en pakaĵojn, ĉiu el kiuj estas kolekto de dosieroj kun rilataj dependecoj. Eblas difini variablojn. Variabloj kaj trajtoj estas strikte tajpitaj (la speco de variabloj estas elektita dinamike sur unua tasko, kaj por trajtoj statike depende de la tipo de la modulo). Kompleksaj elementoj de kuniglogiko estas movitaj al prizorgantoj, skribita en la lingvo Go.

Soong interplektas kun pli granda projekto blukopio, ene de kiu estas evoluigita meta-asemblea sistemo ne ligita al Android, kiu, surbaze de dosieroj kun deklaraj modulpriskriboj, generas kunigskriptojn. ninja (anstataŭaĵo por make), priskribante la komandojn, kiuj devas esti rulitaj por konstrui kaj la dependencojn. Anstataŭ uzi kompleksajn regulojn aŭ domajn-specifan lingvon por difini konstrulogikon, Blueprint uzas projekt-specifajn prizorgilojn en la Go-lingvo (Soong estas esence aro de similaj pritraktiloj por Android).

Tiu aliro permesas grandajn kaj heterogenajn projektojn, kiel ekzemple Android, efektivigi kompleksajn elementojn de asemblelogiko en kodo en altnivela programlingvo, konservante la kapablon fari ŝanĝojn al moduloj ligitaj al kunigorganizo kaj projektstrukturo uzante simplan deklaran sintakson. . Ekzemple, en Soong, la elekto de kompililflagoj estas farita de la prizorganto llvm.go, kaj la aplikado de agordoj specifaj por aparataj arkitekturoj estas efektivigita de la prizorganto arto.go, sed la ligo de kodaj dosieroj estas efektivigita en la dosiero ".bp".

cc_biblioteko {
...
srcs: ["generic.cpp"],
arko: {
brako: {
srcs: ["arm.cpp"],
},
x86: {
srcs: ["x86.cpp"],
},
},
}

fonto: opennet.ru

Aldoni komenton