Kompania Google po zhvillon një sistem ndërtimi , i cili ka për qëllim të zëvendësojë skenarët e vjetër të ndërtimit të platformës Android, të bazuar në përdorimin e utilitarit make. Soong ofron përdorimin e deklaratave të thjeshta të rregullave të ndërtimit të moduleve, në skedaret me zgjedhje " .bp " (blueprints). Formati i skedarëve është i ngjashëm me JSON dhe, sa e mundur, përsërit sintaksën dhe semantikën e skedarëve të ndërtimit . Kodi është shkruar në gjuhën Go dhe shpërndahet nën licencën Apache 2.0.
Skedaret e ndërtimit Soong nuk mbështesin operatorë dhe shprehje kushtore për deklasifikim, por thjesht përshkruajnë strukturën e projektit, modulët e aplikuar gjatë ndërtimit dhe varësitë. Skedaret për ndërtim përshkruhen përmes maskave dhe grupohen në paketa, secili prej të cilave përfaqëson një koleksion skedarësh me të dhëna të lidhura me varësitë përkatëse. Është e mundur të përcaktohen variabla. Variablat dhe pronat janë të tipizuara strikte (tipi i variablave zgjidhet dinamik gjatë caktimit të parë, ndërsa për pronat statikisht në varësi të tipit të modulit). Elementet e komplikuara të logjikës së ndërtimit janë shpërndarë në trajtues, në gjuhën Go.
Soong ndërthur me një projekt më të gjerë , në kuadër të të cilit po zhvillohet një meta-sistem ndërtimi që nuk është i lidhur me Android, i cili, në bazë të skedarëve me përshkrime deklarative të moduleve, formon skenarët e ndërtimit (zëvendësimi i make), i cili përshkruan komandat që duhet të ekzekutohen për ndërtimin dhe varësitë. Në vend të përdorimit të rregullave të komplikuara ose një gjuhe të orientuar për subjekt për të përcaktuar logjikën e ndërtimit, në Blueprint përdoren trajtues specifik për projektet që po ndërtohen në gjuhën Go (Soong është në thelb një grup i tillë trajtuesish për Android).
Ky qasje lejon që për projekte të mëdha dhe të larmishme, si Android, të realizohen elemente të komplikuara të logjikës së ndërtimit në kodin e një gjuhe të programimit të nivelit të lartë, duke ruajtur mundësinë që, përmes një sintakse deklarative të thjeshtë, të bëhen ndryshime në module që lidhen me organizimin e ndërtimit dhe strukturën e projektit. Për shembull, në Soong, zgjedhja e flamujve të kompajlerit bëhet nga trajtuesi , ndërsa aplikimi i konfigurimeve specifike për arkitekturat harduerike bëhet nga trajtuesi , por lidhja e skedarëve me kodin bëhet në skedarin " .bp ".
cc_library {
…
srcs: [«generic.cpp»],
arch: {
arm: {
srcs: [«arm.cpp»],
},
x86: {
srcs: [«x86.cpp»],
},
},
}
Burimi: opennet.ru
