āĻāĻ āĻĒā§āώā§āĻ āĻžāĻāĻŋ āĻāĻŋāĻāĻžāĻŦā§ āĻāϤā§āĻĒāύā§āύ āĻā§āϏ āϏāĻŽāϰā§āĻĨāĻŋāϤ āĻšāϝāĻŧ āĻāĻŦāĻ āĻāĻāĻŋ āĻŦāĻŋāϞā§āĻĄ āϏāĻŋāϏā§āĻā§āĻŽā§ āĻā§āĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰ⧠āϤāĻžāϰ āĻāĻāĻāĻŋ āĻāĻā§āĻ-āϏā§āϤāϰā§āϰ āĻĻā§āĻļā§āϝ āĻĒā§āϰāĻĻāĻžāύ āĻāϰā§āĨ¤
āϏāĻŽāϏā§āϤ āĻā§āϏ āĻā§āύāĻžāϰā§āĻāϰ āĻāĻāĻ āϧāϰāύā§āϰ āĻŦāĻŋāϞā§āĻĄ-āϏāĻŋāϏā§āĻā§āĻŽ āĻāĻžāϰā§āϝāĻāĻžāϰāĻŋāϤāĻž āĻĒā§āϰāĻĻāĻžāύ āĻāϰā§āĨ¤ āϤāĻŋāύāĻāĻŋ āĻŦāĻŋāϞā§āĻĄ-āϏāĻŋāϏā§āĻā§āĻŽ āϏāĻŽāϰā§āĻĨāĻŋāϤ āϏā§āϰā§āϏ-āĻā§āύāĻžāϰā§āĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰā§āϰ āĻā§āώā§āϤā§āϰ⧠āĻŦāĻŋāύā§āĻĄāĻā§āύ, āĻāĻāĻāĻĄāĻŋāĻāϞ āĻāύā§āĻāĻžāϰāĻĢā§āϏ āĻāĻŦāĻ āĻĒā§āϰā§āĻā§āĻŦāĻžāĻĢ āĻāύā§āĻāĻžāϰāĻĢā§āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āϏāĻŋ āĻŦāĻžāĻāύā§āĻĄāĻŋāĻ āϤā§āϰāĻŋ āĻāϰāĻā§āĨ¤
āĻā§āĻĒāύā§āύ āĻā§āϏ āĻĨā§āĻā§ āĻā§āϰā§āĻ
āϏā§āϰā§āϏ āĻā§āĻĄ āϤā§āϰāĻŋ āĻāϰ⧠āĻāĻŽāύ āĻĒā§āϰāϤāĻŋāĻāĻŋ āϰāĻžāϏā§āĻ āĻŽāĻĄāĻŋāĻāϞ āĻāĻāĻāĻŋ āĻā§āϰā§āĻ āĻšāĻŋāϏāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§, āĻ āĻŋāĻ āϝā§āύ āĻāĻāĻŋ āĻāĻāĻāĻŋ rust_library
āĻšāĻŋāϏāĻžāĻŦā§ āϏāĻāĻā§āĻāĻžāϝāĻŧāĻŋāϤ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤ (āĻāϰ āĻŽāĻžāύ⧠āĻāĻāĻŋ rustlibs
, rlibs
, āĻāĻŦāĻ dylibs
āĻŦā§āĻļāĻŋāώā§āĻā§āϝāĻā§āϞāĻŋāϤ⧠āĻāĻāĻāĻŋ āύāĻŋāϰā§āĻāϰāϤāĻž āĻšāĻŋāϏāĻžāĻŦā§ āϏāĻāĻā§āĻāĻžāϝāĻŧāĻŋāϤ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤) āĻĒā§āϞā§āϝāĻžāĻāĻĢāϰā§āĻŽ āĻā§āĻĄā§āϰ āĻāύā§āϝ āϏāϰā§āĻŦā§āϤā§āϤāĻŽ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻĒā§āϝāĻžāĻāĻžāϰā§āύ āĻšāϞ āĻā§āϰā§āĻ āĻšāĻŋāϏāĻžāĻŦā§ āĻāϤā§āĻĒāύā§āύ āĻāϤā§āϏāĻā§ āύāĻŋāϝāĻŧā§āĻ āĻāϰāĻžāĨ¤ āϝāĻĻāĻŋāĻ include!
āĻŽā§āϝāĻžāĻā§āϰ⧠āĻā§āύāĻžāϰā§āĻā§āĻĄ āϏā§āϰā§āϏā§āϰ āĻāύā§āϝ āϏāĻŽāϰā§āĻĨāĻŋāϤ, āĻāϰ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ āĻāĻĻā§āĻĻā§āĻļā§āϝ āĻšāϞ external/
āĻ āĻĨāĻžāĻāĻž āϤā§āϤā§āϝāĻŧ āĻĒāĻā§āώā§āϰ āĻā§āĻĄāĻā§ āϏāĻŽāϰā§āĻĨāύ āĻāϰāĻžāĨ¤
āĻāĻŽāύ āĻāĻŋāĻā§ āĻā§āώā§āϤā§āϰ⧠āϰāϝāĻŧā§āĻā§ āϝā§āĻāĻžāύ⧠āĻĒā§āϞā§āϝāĻžāĻāĻĢāϰā§āĻŽ āĻā§āĻĄ āĻāĻāύāĻ include!()
āĻŽā§āϝāĻžāĻā§āϰā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āϤā§āϰāĻŋ āĻāϤā§āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§, āϝā§āĻŽāύ āĻāĻĒāύāĻŋ āϝāĻāύ āĻāĻāĻāĻŋ āĻ
āύāύā§āϝ āĻĢā§āϝāĻžāĻļāύ⧠āĻāϤā§āϏ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻāĻāĻāĻŋ genrule
āĻŽāĻĄāĻŋāĻāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύāĨ¤
āĻā§āĻĒāύā§āύ āĻā§āϏ āĻ āύā§āϤāϰā§āĻā§āĻā§āϤ āĻāϰāϤ⧠āĻ āύā§āϤāϰā§āĻā§āĻā§āϤ!() āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ
āĻāĻāĻāĻŋ āĻā§āϰā§āĻ āĻšāĻŋāϏāĻžāĻŦā§ āĻāϤā§āĻĒāύā§āύ āĻāϤā§āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻĒā§āϰāϤāĻŋāĻāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ (āϏā§āĻŦāϤāύā§āϤā§āϰ) āĻŽāĻĄāĻŋāĻāϞ āĻĒā§āώā§āĻ āĻžāϝāĻŧ āĻāĻĻāĻžāĻšāϰāĻŖ āĻĻā§āĻŦāĻžāϰāĻž āĻāĻā§āĻāĻžāĻĻāĻŋāϤ āĻāϰāĻž āĻšāϝāĻŧ. āĻāĻ āĻŦāĻŋāĻāĻžāĻāĻāĻŋ āĻĻā§āĻāĻžāϝāĻŧ āĻāĻŋāĻāĻžāĻŦā§ include!()
āĻŽā§āϝāĻžāĻā§āϰā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāϤā§āĻĒāύā§āύ āĻāϤā§āϏ āĻāϞā§āϞā§āĻ āĻāϰāϤ⧠āĻšāϝāĻŧāĨ¤ āĻŽāύ⧠āϰāĻžāĻāĻŦā§āύ āϝ⧠āĻāĻ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻžāĻāĻŋ āϏāĻŽāϏā§āϤ āĻāϤā§āϏ āĻā§āύāĻžāϰā§āĻāϰā§āϰ āĻāύā§āϝ āĻ
āύā§āϰā§āĻĒāĨ¤
āĻĒā§āϰā§āĻŦāĻļāϰā§āϤ
āĻāĻ āĻāĻĻāĻžāĻšāϰāĻŖāĻāĻŋ āĻāĻ āϧāĻžāϰāĻŖāĻžāϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰ⧠āϤā§āϰāĻŋ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ āϝ⧠āĻāĻĒāύāĻŋ āĻāĻāĻāĻŋ rust_bindgen
āĻŽāĻĄāĻŋāĻāϞ ( libbuzz_bindgen
) āϏāĻāĻā§āĻāĻžāϝāĻŧāĻŋāϤ āĻāϰā§āĻā§āύ āĻāĻŦāĻ include!()
āĻŽā§āϝāĻžāĻā§āϰ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāϤā§āĻĒāύā§āύ āĻāϤā§āϏ āĻ
āύā§āϤāϰā§āĻā§āĻā§āϤ āĻāϰāĻžāϰ āĻāύā§āϝ āϧāĻžāĻĒā§ āϝā§āϤ⧠āĻĒāĻžāϰā§āύāĨ¤ āϝāĻĻāĻŋ āĻāĻĒāύāĻžāϰ āύāĻž āĻĨāĻžāĻā§, āĻ
āύā§āĻā§āϰāĻš āĻāϰ⧠āĻāĻāĻāĻŋ rust bindgen āĻŽāĻĄāĻŋāĻāϞ āύāĻŋāϰā§āϧāĻžāϰāĻŖā§ āϝāĻžāύ, libbuzz_bindgen
āϤā§āϰāĻŋ āĻāϰā§āύ, āϤāĻžāϰāĻĒāϰ āĻāĻāĻžāύ⧠āĻĢāĻŋāϰ⧠āĻāϏā§āύāĨ¤
āύā§āĻ āĻāϰā§āύ āϝ⧠āĻāϰ āĻŦāĻŋāϞā§āĻĄ-āĻĢāĻžāĻāϞ āĻ āĻāĻļāĻā§āϞāĻŋ āϏāĻŽāϏā§āϤ āĻāϤā§āϏ āĻā§āύāĻžāϰā§āĻāϰā§āϰ āĻāύā§āϝ āĻĒā§āϰāϝā§āĻā§āϝāĨ¤
āĻāϤā§āĻĒāύā§āύ āĻāϤā§āϏ āĻ āύā§āϤāϰā§āĻā§āĻā§āϤ āĻāϰāĻžāϰ āĻāύā§āϝ āĻĒāĻĻāĻā§āώā§āĻĒ
āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āĻŦāĻŋāώāϝāĻŧāĻŦāϏā§āϤ⧠āϏāĻš external/rust/hello_bindgen/Android.bp
āϤā§āϰāĻŋ āĻāϰā§āύ:
rust_binary {
name: "hello_bzip_bindgen_include",
srcs: [
// The primary rust source file must come first in this list.
"src/lib.rs",
// The module providing the bindgen bindings is
// included in srcs prepended by ":".
":libbuzz_bindgen",
],
// Dependencies need to be redeclared when generated source is used via srcs.
shared_libs: [
"libbuzz",
],
}
āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āĻŦāĻŋāώāϝāĻŧāĻŦāϏā§āϤ⧠āϏāĻš external/rust/hello_bindgen/src/bindings.rs
āϤā§āϰāĻŋ āĻāϰā§āύ:
#![allow(clippy::all)]
#![allow(non_upper_case_globals)]
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
#![allow(unused)]
#![allow(missing_docs)]
// Note that "bzip_bindings.rs" here must match the source_stem property from
// the rust_bindgen module.
include!(concat!(env!("OUT_DIR"), "/bzip_bindings.rs"));
āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āĻŦāĻŋāώāϝāĻŧāĻŦāϏā§āϤ⧠āϏāĻš external/rust/hello_bindgen/src/lib.rs
āϤā§āϰāĻŋ āĻāϰā§āύ:
mod bindings;
fn main() {
let mut x = bindings::foo { x: 2 };
unsafe { bindings::fizz(1, &mut x as *mut bindings::foo) }
}
āĻā§āύ āĻāϤā§āĻĒāύā§āύ āĻāϤā§āϏ āĻāύā§āϝ crates
C/C++ āĻāĻŽā§āĻĒāĻžāĻāϞāĻžāϰ āĻĨā§āĻā§ āĻāĻŋāύā§āύ, rustc
āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻāĻāĻāĻŋ āĻāĻāĻ āĻā§āϏ āĻĢāĻžāĻāϞ āĻā§āϰāĻšāĻŖ āĻāϰ⧠āϝāĻž āĻāĻāĻāĻŋ āĻŦāĻžāĻāύāĻžāϰāĻŋ āĻŦāĻž āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋāϤ⧠āĻāĻāĻāĻŋ āĻāύā§āĻā§āϰāĻŋ āĻĒāϝāĻŧā§āύā§āĻ āĻāĻĒāϏā§āĻĨāĻžāĻĒāύ āĻāϰā§āĨ¤ āĻāĻāĻŋ āĻāĻļāĻž āĻāϰ⧠āϝ⧠āϏā§āϰā§āϏ āĻā§āϰāĻŋāĻāĻŋ āĻāĻŽāύāĻāĻžāĻŦā§ āĻāĻ āύ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ āϝāĻžāϤ⧠āϏāĻŽāϏā§āϤ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āϏā§āϰā§āϏ āĻĢāĻžāĻāϞ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āĻāĻŦāĻŋāώā§āĻāĻžāϰ āĻāϰāĻž āϝāĻžāϝāĻŧāĨ¤ āĻāϰ āĻŽāĻžāύ⧠āĻšāϞ āϝ⧠āĻāϤā§āĻĒāύā§āύ āĻāϤā§āϏ āĻ
āĻŦāĻļā§āϝāĻ āĻāϤā§āϏ āĻāĻžāĻā§ āϏā§āĻĨāĻžāĻĒāύ āĻāϰāϤ⧠āĻšāĻŦā§, āĻŦāĻž āĻāϤā§āϏ⧠āĻ
āύā§āϤāϰā§āĻā§āĻā§āϤ āύāĻŋāϰā§āĻĻā§āĻļā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āϏāϰāĻŦāϰāĻžāĻš āĻāϰāϤ⧠āĻšāĻŦā§:
include!("/path/to/hello.rs");
āĻŽāϰāĻŋāĻāĻž āϏāĻŽā§āĻĒā§āϰāĻĻāĻžāϝāĻŧ āĻāĻ āĻĒāĻžāϰā§āĻĨāĻā§āϝā§āϰ āϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰāĻžāϰ āĻāύā§āϝ build.rs
āϏā§āĻā§āϰāĻŋāĻĒā§āĻ āĻāĻŦāĻ āĻāĻžāϰā§āĻā§ āĻŦāĻŋāϞā§āĻĄ āĻĒāϰāĻŋāĻŦā§āĻļ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻ
āύā§āĻŽāĻžāύā§āϰ āĻāĻĒāϰ āύāĻŋāϰā§āĻāϰ āĻāϰā§āĨ¤ āϝāĻāύ āĻāĻāĻŋ āϤā§āϰāĻŋ āĻšāϝāĻŧ, cargo
āĻāĻŽāĻžāύā§āĻĄ āĻāĻāĻāĻŋ OUT_DIR
āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āϏā§āĻ āĻāϰ⧠āϝāĻžāϰ āĻŽāϧā§āϝ⧠build.rs
āϏā§āĻā§āϰāĻŋāĻĒā§āĻāĻā§āϞāĻŋ āĻā§āύāĻžāϰā§āĻā§āĻĄ āϏā§āϰā§āϏ āĻā§āĻĄ āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻŦā§ āĻŦāϞ⧠āĻāĻļāĻž āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āϏā§āϰā§āϏ āĻā§āĻĄ āĻ
āύā§āϤāϰā§āĻā§āĻā§āϤ āĻāϰāϤ⧠āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āĻāĻŽāĻžāύā§āĻĄāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ:
include!(concat!(env!("OUT_DIR"), "/hello.rs"));
āĻāĻāĻŋ Soong-āĻāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻā§āϝāĻžāϞā§āĻā§āĻ āĻāĻĒāϏā§āĻĨāĻžāĻĒāύ āĻāϰ⧠āĻāĻžāϰāĻŖ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻŽāĻĄāĻŋāĻāϞā§āϰ āĻāĻāĻāĻĒā§āĻāĻā§āϞāĻŋ āϤāĻžāĻĻā§āϰ āύāĻŋāĻāϏā§āĻŦ out/
āĻĄāĻŋāϰā§āĻā§āĻāϰāĻŋ 1 āĻ āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻŽāύ āĻāĻāĻāĻŋ OUT_DIR
āύā§āĻ āϝā§āĻāĻžāύ⧠āύāĻŋāϰā§āĻāϰāϤāĻžāĻā§āϞāĻŋ āϤāĻžāĻĻā§āϰ āĻā§āĻĒāύā§āύ āĻāϤā§āϏ āĻāĻāĻāĻĒā§āĻ āĻāϰā§āĨ¤
āĻĒā§āϞā§āϝāĻžāĻāĻĢāϰā§āĻŽ āĻā§āĻĄā§āϰ āĻāύā§āϝ, AOSP āĻĒā§āϝāĻžāĻā§āĻāĻŋāĻ āĻā§āĻĒāύā§āύ āĻā§āϏāĻā§ āĻāĻāĻāĻŋ āĻā§āϰā§āĻā§ āĻĒāĻāύā§āĻĻ āĻāϰ⧠āϝāĻž āĻāĻŽāĻĻāĻžāύāĻŋ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§, āĻŦāĻŋāĻāĻŋāύā§āύ āĻāĻžāϰāĻŖā§:
- āĻāϤā§āĻĒāύā§āύ āĻāϤā§āϏ āĻĢāĻžāĻāϞ āύāĻžāĻŽ āϏāĻāĻāϰā§āώ āĻĨā§āĻā§ āĻĒā§āϰāϤāĻŋāϰā§āϧ āĻāϰā§āύ.
- āϰāĻā§āώāĻŖāĻžāĻŦā§āĻā§āώāĻŖā§āϰ āĻĒā§āϰāϝāĻŧā§āĻāύ āĻā§āĻĄāĻŧā§ āĻŦāϝāĻŧāϞāĻžāϰāĻĒā§āϞā§āĻ āĻā§āĻĄ āĻā§āĻ-āĻāύ āĻāĻŽ āĻāϰā§āύāĨ¤ āϝā§āĻā§āύ āĻŦāϝāĻŧāϞāĻžāϰāĻĒā§āϞā§āĻ āϝāĻž āĻā§āύāĻžāϰā§āĻā§āĻĄ āϏā§āϰā§āϏāĻā§ āĻāĻāĻāĻŋ āĻā§āϰā§āĻā§ āĻāĻŽā§āĻĒāĻžāĻāϞ āĻāϰāĻžāϰ āĻāύā§āϝ āĻĒā§āϰāϝāĻŧā§āĻāύ āĻšāϝāĻŧ āϤāĻž āĻā§āύā§āĻĻā§āϰā§āϝāĻŧāĻāĻžāĻŦā§ āϰāĻā§āώāĻŖāĻžāĻŦā§āĻā§āώāĻŖ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤
- āĻā§āύāĻžāϰā§āĻ āĻāϰāĻž āĻā§āĻĄ āĻāĻŦāĻ āĻāĻļā§āĻĒāĻžāĻļā§āϰ āĻā§āϰā§āĻā§āϰ āĻŽāϧā§āϝ⧠āĻ āύā§āϤāϰā§āύāĻŋāĻšāĻŋāϤ 2āĻāĻŋ āĻŽāĻŋāĻĨāϏā§āĻā§āϰāĻŋāϝāĻŧāĻž āĻāĻĄāĻŧāĻŋāϝāĻŧā§ āĻāϞā§āύāĨ¤
- āϏāĻžāϧāĻžāϰāĻŖāϤ āĻŦā§āϝāĻŦāĻšā§āϤ āĻā§āĻĒāύā§āύ āĻāϤā§āϏāĻā§āϞāĻŋāĻā§ āĻāϤāĻŋāĻļā§āϞāĻāĻžāĻŦā§ āϏāĻāϝā§āĻā§āϤ āĻāϰ⧠āĻŽā§āĻŽāϰāĻŋ āĻāĻŦāĻ āĻĄāĻŋāϏā§āĻā§āϰ āĻāĻĒāϰ āĻāĻžāĻĒ āĻāĻŽāĻžāϝāĻŧ⧎
āĻĢāϞāϏā§āĻŦāϰā§āĻĒ, āĻ
ā§āϝāĻžāύā§āĻĄā§āϰāϝāĻŧā§āĻĄā§āϰ āϏāĻŽāϏā§āϤ āĻŽāϰāĻŋāĻāĻž āϏā§āϰā§āϏ āĻā§āύāĻžāϰā§āĻļāύ āĻŽāĻĄāĻŋāĻāϞ āϧāϰāύā§āϰ āĻā§āĻĄ āϤā§āϰāĻŋ āĻāϰ⧠āϝāĻž āĻāĻŽā§āĻĒāĻžāĻāϞ āĻāϰāĻž āϝāĻžāϝāĻŧ āĻāĻŦāĻ āĻā§āϰā§āĻ āĻšāĻŋāϏāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝāĻžāϝāĻŧāĨ¤ āϏā§āĻ āĻāĻāύāĻ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāĻžāĻĄāĻŧāĻžāĻ āϤā§āϤā§āϝāĻŧ-āĻĒāĻā§āώā§āϰ āĻā§āϰā§āĻ āϏāĻŽāϰā§āĻĨāύ āĻāϰ⧠āϝāĻĻāĻŋ āĻāĻāĻāĻŋ āĻŽāĻĄāĻŋāĻāϞā§āϰ āĻāύā§āϝ āϏāĻŽāϏā§āϤ āĻāϤā§āĻĒāύā§āύ āĻāϤā§āϏ āύāĻŋāϰā§āĻāϰāϤāĻž āĻāĻžāϰā§āĻā§āϰ āĻ
āύā§āϰā§āĻĒ āĻāĻāĻāĻŋ āĻāĻāĻ āĻĒā§āϰāϤāĻŋ-āĻŽāĻĄāĻŋāĻāϞ āĻĄāĻŋāϰā§āĻā§āĻāϰāĻŋāϤ⧠āĻ
āύā§āϞāĻŋāĻĒāĻŋ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻ āϧāϰāύā§āϰ āĻā§āώā§āϤā§āϰā§, āĻŽāĻĄāĻŋāĻāϞ āĻāĻŽā§āĻĒāĻžāĻāϞ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ Soong āϏā§āĻ āĻĄāĻŋāϰā§āĻā§āĻāϰāĻŋāϤ⧠OUT_DIR
āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āϏā§āĻ āĻāϰā§, āϝāĻžāϤ⧠āĻā§āύāĻžāϰā§āĻ āĻāϰāĻž āĻā§āϏ āĻā§āĻāĻā§ āĻĒāĻžāĻāϝāĻŧāĻž āϝāĻžāϝāĻŧāĨ¤ āϝāĻžāĻāĻšā§āĻ, āĻāϤāĻŋāĻŽāϧā§āϝ⧠āĻŦāϰā§āĻŖāĻŋāϤ āĻāĻžāϰāĻŖāĻā§āϞāĻŋāϰ āĻāύā§āϝ, āĻĒā§āϞā§āϝāĻžāĻāĻĢāϰā§āĻŽ āĻā§āĻĄā§ āĻāĻ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻžāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϏāϰā§āĻŦā§āϤā§āϤāĻŽ āĻ
āύā§āĻļā§āϞāύ āϝāĻāύ āĻāĻāĻŋ āĻāĻā§āĻŦāĻžāϰ⧠āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧāĨ¤
āĻāĻāĻŋ C/C++ āĻāĻŦāĻ āĻ āύā§āϰā§āĻĒ āĻāĻžāώāĻžāϰ āĻāύā§āϝ āĻā§āύ⧠āϏāĻŽāϏā§āϝāĻž āĻāĻĒāϏā§āĻĨāĻžāĻĒāύ āĻāϰ⧠āύāĻž, āĻāĻžāϰāĻŖ āĻā§āĻĒāύā§āύ āĻā§āϏā§āϰ āĻĒāĻžāĻĨ āϏāϰāĻžāϏāϰāĻŋ āĻāĻŽā§āĻĒāĻžāĻāϞāĻžāϰāĻā§ āĻĻā§āĻāϝāĻŧāĻž āĻšāϝāĻŧāĨ¤ âŠ
āϝā§āĻšā§āϤā§
include!
āĻĒāĻžāĻ ā§āϝ āĻ āύā§āϤāϰā§āĻā§āĻā§āϤāĻŋ āĻĻā§āĻŦāĻžāϰāĻž āĻāĻžāĻ āĻāϰā§, āĻāĻāĻŋ āĻāĻŦāĻĻā§āϧ āύāĻžāĻŽāϏā§āĻĨāĻžāύ āĻĨā§āĻā§ āĻŽāĻžāύ āĻāϞā§āϞā§āĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§, āύāĻžāĻŽāϏā§āĻĨāĻžāύ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāϤ⧠āĻĒāĻžāϰā§, āĻŦāĻž#![foo]
āĻāϰ āĻŽāϤ⧠āĻāĻ āύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻāĻ āĻ āύā§āϤāϰā§āύāĻŋāĻšāĻŋāϤ āĻŽāĻŋāĻĨāϏā§āĻā§āϰāĻŋāϝāĻŧāĻž āĻŦāĻāĻžāϝāĻŧ āϰāĻžāĻāĻž āĻāĻ āĻŋāύ āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤ āϝāĻāύ āĻŦāĻžāĻāĻŋ āĻā§āϰā§āĻā§āϰ āϏāĻžāĻĨā§ āĻŽāĻŋāĻĨāϏā§āĻā§āϰāĻŋāϝāĻŧāĻž āϏāϤā§āϝāĻŋāĻ āĻĒā§āϰāϝāĻŧā§āĻāύ āĻšāϝāĻŧ āϤāĻāύ āϏāϰā§āĻŦāĻĻāĻž āĻŽā§āϝāĻžāĻā§āϰ⧠āĻĒāĻāύā§āĻĻ āĻāϰā§āύāĨ¤ âŠ