Google Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π° ΠΌΠΎΠ΄ΡƒΠ»Π½Π° систСма Π·Π° сглобяванС Soong Π·Π° Android

Google Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π° систСма Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π‘ΠΊΠΎΡ€ΠΎ, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ Π΄Π° Π·Π°ΠΌΠ΅Π½ΠΈ старитС скриптовС Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Android, Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠΎΠΌΠΎΡ‰Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° make. Soong ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° проста дСкларация описания ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° сглобяванС Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, Π΄Π°Π΄Π΅Π½ΠΎ във Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ с Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ β€œ.bp” (Ρ‡Π΅Ρ€Ρ‚Π΅ΠΆΠΈ). Ѐайловият Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π΅ близък Π΄ΠΎ JSON ΠΈ, Π°ΠΊΠΎ Π΅ възмоТно, повтаря синтаксиса ΠΈ сСмантиката Π½Π° асСмблиращитС Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Bazel. ΠšΠΎΠ΄ΡŠΡ‚ Π΅ написан Π½Π° Go ΠΈ сС разпространява ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·Π° Apache 2.0.

Π€Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅ Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° Soong Π½Π΅ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ условни ΠΈΠ·Ρ€Π°Π·ΠΈ ΠΈ ΠΈΠ·Ρ€Π°Π·ΠΈ Π·Π° разклоняванС, Π° само описват структурата Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΌΠΎΠ΄ΡƒΠ»ΠΈΡ‚Π΅ ΠΈ зависимоститС, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΏΡ€ΠΈ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ. Π€Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½ΠΈ, са описани с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° маски ΠΈ Π³Ρ€ΡƒΠΏΠΈΡ€Π°Π½ΠΈ Π² ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, всСки ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ Π΅ колСкция ΠΎΡ‚ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ със ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ зависимости. Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° сС Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Ρ‚ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ. ΠŸΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡ‚Π΅ ΠΈ свойствата са строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€Π°Π½ΠΈ (Ρ‚ΠΈΠΏΡŠΡ‚ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡ‚Π΅ сС ΠΈΠ·Π±ΠΈΡ€Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ ΠΏΡ€ΠΈ ΠΏΡŠΡ€Π²ΠΎ присвояванС, Π° Π·Π° свойствата статично Π² зависимост ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° Π½Π° ΠΌΠΎΠ΄ΡƒΠ»Π°). Π‘Π»ΠΎΠΆΠ½ΠΈΡ‚Π΅ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ Π½Π° асСмблиращата Π»ΠΎΠ³ΠΈΠΊΠ° сС прСмСстват Π² ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ, написана Π½Π° Π΅Π·ΠΈΠΊΠ° Go.

Π‘ΠΊΠΎΡ€ΠΎ сС ΠΏΡ€Π΅ΠΏΠ»ΠΈΡ‚Π° с ΠΏΠΎ-голям ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ План, Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ сС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π° систСма Π·Π° ΠΌΠ΅Ρ‚Π°-сглобяванС, Π½Π΅ΠΎΠ±Π²ΡŠΡ€Π·Π°Π½Π° с Android, която Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ с Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΈ описания Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° скриптовС Π·Π° сглобяванС Ninja (замСститСл Π½Π° make), описващ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ изпълнСни Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ ΠΈ зависимоститС. ВмСсто Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° слоТни ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈΠ»ΠΈ спСцифичСн Π·Π° Π΄ΠΎΠΌΠ΅ΠΉΠ½ Π΅Π·ΠΈΠΊ Π·Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π° Π½Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅, Blueprint ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° спСцифични Π·Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ Π½Π° Π΅Π·ΠΈΠΊΠ° Go (Soong ΠΏΠΎ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΠΎ Π΅ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ Π·Π° Android).

Π’ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволява Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΈ Ρ…Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½Π½ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ, ΠΊΠ°Ρ‚ΠΎ Android, Π΄Π° внСдряват слоТни Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ ΠΎΡ‚ Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π° Π½Π° асСмблиранС Π² ΠΊΠΎΠ΄ Π½Π° Π΅Π·ΠΈΠΊ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ ΠΎΡ‚ високо Π½ΠΈΠ²ΠΎ, ΠΊΠ°Ρ‚ΠΎ ΡΡŠΡ‰Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π·Π°ΠΏΠ°Π·Π²Π°Ρ‚ способността Π΄Π° правят ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с организацията Π½Π° асСмблиранС ΠΈ структурата Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ прост Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π΅Π½ синтаксис . НапримСр Π² Soong ΠΈΠ·Π±ΠΎΡ€ΡŠΡ‚ Π½Π° Ρ„Π»Π°Π³ΠΎΠ²Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° ΠΎΡ‚ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€Π° llvm.go, Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅Ρ‚ΠΎ Π½Π° настройкитС, спСцифични Π·Π° Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½ΠΈΡ‚Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ, сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° ΠΎΡ‚ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€Π° art.go, Π½ΠΎ ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ΄ΠΎΠ²ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° във Ρ„Π°ΠΉΠ»Π° β€ž.bpβ€œ.

cc_library {
...
srcs: ["generic.cpp"],
Π°Ρ€ΠΊΠ°: {
Ρ€ΡŠΠΊΠ°: {
srcs: ["arm.cpp"],
},
x86:{
srcs: ["x86.cpp"],
},
},
}

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€