build.rs

 1use std::{env, path::PathBuf};
 2
 3fn main() {
 4    generate_dispatch_bindings();
 5}
 6
 7fn generate_dispatch_bindings() {
 8    println!("cargo:rustc-link-lib=framework=System");
 9    println!("cargo:rerun-if-changed=src/platform/mac/dispatch.h");
10
11    let bindings = bindgen::Builder::default()
12        .header("src/platform/mac/dispatch.h")
13        .allowlist_var("_dispatch_main_q")
14        .allowlist_function("dispatch_async_f")
15        .parse_callbacks(Box::new(bindgen::CargoCallbacks))
16        .layout_tests(false)
17        .generate()
18        .expect("unable to generate bindings");
19
20    let out_path = PathBuf::from(env::var("OUT_DIR").unwrap());
21    bindings
22        .write_to_file(out_path.join("dispatch_sys.rs"))
23        .expect("couldn't write dispatch bindings");
24}