Google Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΡƒΡŽ ΡΠ±ΠΎΡ€ΠΎΡ‡Π½ΡƒΡŽ систСму Soong для Android

Компания Google Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅Ρ‚ ΡΠ±ΠΎΡ€ΠΎΡ‡Π½ΡƒΡŽ систСму Soong, ΠΏΡ€ΠΈΠ·Π²Π°Π½Π½ΡƒΡŽ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ собой старыС сцСнарии сборки ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Android, основанныС Π½Π° использовании ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ make. Soong ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ простыС Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ описания ΠΏΡ€Π°Π²ΠΈΠ» сборки ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ Π² Ρ„Π°ΠΉΠ»Π°Ρ… с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ «.bp» (blueprints). Π€ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„Π°ΠΉΠ»ΠΎΠ² Π±Π»ΠΈΠ·ΠΎΠΊ ΠΊ JSON ΠΈ ΠΏΠΎ возмоТности повторяСт синтаксис ΠΈ сСмантику сборочных Ρ„Π°ΠΉΠ»ΠΎΠ² Bazel. Код написан Π½Π° языкС Go ΠΈ распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ Apache 2.0.

Π‘Π±ΠΎΡ€ΠΎΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Soong Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ условных ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ для вСтвлСния, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ структуру ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, примСняСмыС ΠΏΡ€ΠΈ сборкС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ зависимости. ΠŸΠΎΠ΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ сборкС Ρ„Π°ΠΉΠ»Ρ‹ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ масок ΠΈ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт собой ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Ρ„Π°ΠΉΠ»ΠΎΠ² с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ связанных с Π½ΠΈΠΌΠΈ зависимостСй. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ свойства строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ (Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… выбираСтся динамичСски ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ присвоСнии, Π° для свойств статичСски Π² зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° модуля). Π‘Π»ΠΎΠΆΠ½Ρ‹Π΅ элСмСнты сборочной Π»ΠΎΠ³ΠΈΠΊΠΈ вынСсСны Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, написанныС Π½Π° языкС Go.

Soong пСрСплСтаСтся с Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰ΠΈΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Blueprint, Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ развиваСтся Π½Π΅ привязанная ΠΊ Android ΠΌΠ΅Ρ‚Π°-систСма сборки, которая Π½Π° основС Ρ„Π°ΠΉΠ»ΠΎΠ² с Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ описаниями ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ сборочныС сцСнарии Ninja (Π·Π°ΠΌΠ΅Π½Π° make), ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ для сборки, ΠΈ зависимости. ВмСсто примСнСния слоТных ΠΏΡ€Π°Π²ΠΈΠ» ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ языка для опрСдСлСния Π»ΠΎΠ³ΠΈΠΊΠΈ сборки, Π² Blueprint ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ спСцифичныС для собираСмых ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π½Π° языкС Go (Soong являСтся ΠΏΠΎ сути Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² для Android).

ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволяСт для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΈ Ρ€Π°Π·Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Android, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ слоТныС элСмСнты сборочной Π»ΠΎΠ³ΠΈΠΊΠΈ Π² ΠΊΠΎΠ΄Π΅ Π½Π° высокоуровнСвом языкС программирования, ΠΏΡ€ΠΈ этом сохраняя Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ простого Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ синтаксиса Π²Π½ΠΎΡΠΈΡ‚ΡŒ Π² ΠΌΠΎΠ΄ΡƒΠ»ΠΈ измСнСния, связанныС с ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ сборки ΠΈ структурой ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. НапримСр, Π² Soong Π²Ρ‹Π±ΠΎΡ€ Ρ„Π»Π°Π³ΠΎΠ² компилятора производится ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ llvm.go, Π° ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ спСцифичных для Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ настроСк производится ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠΌ art.go, Π½ΠΎ привязка Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΊΠΎΠ΄ΠΎΠΌ осущСствляСтся Π² Ρ„Π°ΠΉΠ»Π΅ «.bp».

cc_library {

srcs: [«generic.cpp»],
arch: {
arm: {
srcs: [«arm.cpp»],
},
x86: {
srcs: [«x86.cpp»],
},
},
}

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