Google, Android์šฉ Soong ๋ชจ๋“ˆ์‹ ์กฐ๋ฆฝ ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ

Google์€ ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ๊ฐœ๋ฐœ ์ค‘์ž…๋‹ˆ๋‹ค. ์ˆญ, make ์œ ํ‹ธ๋ฆฌํ‹ฐ ์‚ฌ์šฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ Android ํ”Œ๋žซํผ์˜ ์ด์ „ ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋Œ€์ฒดํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Soong์€ ๊ฐ„๋‹จํ•œ ์„ ์–ธ๋ฌธ ์‚ฌ์šฉ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ์„ค๋ช… ๋ชจ๋“ˆ ์กฐ๋ฆฝ ๊ทœ์น™, ์ฃผ์–ด์ง„ ํ™•์žฅ์ž๊ฐ€ ".bp"์ธ ํŒŒ์ผ(์ฒญ์‚ฌ์ง„)์— ์žˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ ํ˜•์‹์€ JSON์— ๊ฐ€๊น๊ณ  ๊ฐ€๋Šฅํ•˜๋ฉด ์–ด์…ˆ๋ธ”๋ฆฌ ํŒŒ์ผ์˜ ๊ตฌ๋ฌธ๊ณผ ์˜๋ฏธ๋ฅผ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. Bazel. ์ฝ”๋“œ๋Š” Go๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ Apache 2.0 ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

Soong ๋นŒ๋“œ ํŒŒ์ผ์€ ์กฐ๊ฑด๋ฌธ๊ณผ ๋ถ„๊ธฐ ํ‘œํ˜„์‹์„ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋นŒ๋“œ ์‹œ ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ, ๋ชจ๋“ˆ ๋ฐ ์ข…์†์„ฑ๋งŒ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋นŒ๋“œํ•  ํŒŒ์ผ์€ ๋งˆ์Šคํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค๋ช…ํ•˜๊ณ  ํŒจํ‚ค์ง€๋กœ ๊ทธ๋ฃนํ™”ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ํŒจํ‚ค์ง€๋Š” ๊ด€๋ จ ์ข…์†์„ฑ์„ ๊ฐ€์ง„ ํŒŒ์ผ ๋ชจ์Œ์ž…๋‹ˆ๋‹ค. ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋ณ€์ˆ˜์™€ ์†์„ฑ์€ ์—„๊ฒฉํ•˜๊ฒŒ ์œ ํ˜•์ด ์ง€์ •๋ฉ๋‹ˆ๋‹ค(๋ณ€์ˆ˜ ์œ ํ˜•์€ ์ฒซ ๋ฒˆ์งธ ํ• ๋‹น ์‹œ ๋™์ ์œผ๋กœ ์„ ํƒ๋˜๊ณ  ์†์„ฑ์˜ ๊ฒฝ์šฐ ๋ชจ๋“ˆ ์œ ํ˜•์— ๋”ฐ๋ผ ์ •์ ์œผ๋กœ ์„ ํƒ๋ฉ๋‹ˆ๋‹ค). ์–ด์…ˆ๋ธ”๋ฆฌ ๋กœ์ง์˜ ๋ณต์žกํ•œ ์š”์†Œ๋Š” ํ•ธ๋“ค๋Ÿฌ๋กœ ์ด๋™๋ฉ๋‹ˆ๋‹ค. ์“ด Go ์–ธ์–ด๋กœ.

์‘น์€ ๋” ํฐ ํ”„๋กœ์ ํŠธ์™€ ์–ฝํžŒ๋‹ค ์ฒญ์‚ฌ์ง„, Android์— ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์€ ๋ฉ”ํƒ€ ์–ด์…ˆ๋ธ”๋ฆฌ ์‹œ์Šคํ…œ์ด ๊ฐœ๋ฐœ๋˜๊ณ  ์žˆ์œผ๋ฉฐ ์„ ์–ธ์  ๋ชจ๋“ˆ ์„ค๋ช…์ด ์žˆ๋Š” ํŒŒ์ผ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์–ด์…ˆ๋ธ”๋ฆฌ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋‹Œ์ž (make์˜ ๋Œ€์ฒด), ๋นŒ๋“œ๋ฅผ ์œ„ํ•ด ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ๋ช…๋ น๊ณผ ์ข…์†์„ฑ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ๊ทœ์น™์ด๋‚˜ ๋„๋ฉ”์ธ๋ณ„ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œ ๋กœ์ง์„ ์ •์˜ํ•˜๋Š” ๋Œ€์‹  Blueprint๋Š” Go ์–ธ์–ด์˜ ํ”„๋กœ์ ํŠธ๋ณ„ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(Soong์€ ๋ณธ์งˆ์ ์œผ๋กœ Android์šฉ ์œ ์‚ฌํ•œ ํ•ธ๋“ค๋Ÿฌ ์„ธํŠธ์ž…๋‹ˆ๋‹ค).

์ด ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด Android์™€ ๊ฐ™์€ ํฌ๊ณ  ์ด์งˆ์ ์ธ ํ”„๋กœ์ ํŠธ์—์„œ ๊ฐ„๋‹จํ•œ ์„ ์–ธ์  ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์–ด์…ˆ๋ธ”๋ฆฌ ์กฐ์ง ๋ฐ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ์™€ ๊ด€๋ จ๋œ ๋ชจ๋“ˆ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๊ณ ๊ธ‰ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ์ฝ”๋“œ๋กœ ์–ด์…ˆ๋ธ”๋ฆฌ ๋…ผ๋ฆฌ์˜ ๋ณต์žกํ•œ ์š”์†Œ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. . ์˜ˆ๋ฅผ ๋“ค์–ด Soong์—์„œ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ ํ”Œ๋ž˜๊ทธ ์„ ํƒ์ด ํ•ธ๋“ค๋Ÿฌ์— ์˜ํ•ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. llvm.go, ํ•˜๋“œ์›จ์–ด ์•„ํ‚คํ…์ฒ˜์— ํŠน์ •ํ•œ ์„ค์ • ์ ์šฉ์€ ํ•ธ๋“ค๋Ÿฌ์— ์˜ํ•ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. art.go, ๊ทธ๋Ÿฌ๋‚˜ ์ฝ”๋“œ ํŒŒ์ผ์˜ ์—ฐ๊ฒฐ์€ ".bp" ํŒŒ์ผ์—์„œ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

cc_library {
...
์†Œ์Šค: ["generic.cpp"],
์•„์น˜: {
ํŒ”: {
์†Œ์Šค: ["arm.cpp"],
},
x86:{
์†Œ์Šค: ["x86.cpp"],
},
},
}

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€