From 99cb66dfb033275e9ccabd93e8d6764ed8dd5f0e Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Mon, 29 Aug 2022 16:25:37 -0600 Subject: [PATCH] Programmatically locate the system SDK path for bindgen --- crates/capture/build.rs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/crates/capture/build.rs b/crates/capture/build.rs index 4f8ada86706e61478c0da743eed9561ce7902156..d75b110b9b28ae0295c03f4096336d4e319448f2 100644 --- a/crates/capture/build.rs +++ b/crates/capture/build.rs @@ -1,4 +1,4 @@ -use std::{env, path::PathBuf}; +use std::{env, path::PathBuf, process::Command}; fn main() { println!("cargo:rustc-link-lib=framework=CoreMedia"); @@ -7,9 +7,19 @@ fn main() { println!("cargo:rustc-env=MACOSX_DEPLOYMENT_TARGET=12.3"); println!("cargo:rustc-link-arg=-ObjC"); + let sdk_path = String::from_utf8( + Command::new("xcrun") + .args(&["--sdk", "macosx", "--show-sdk-path"]) + .output() + .unwrap() + .stdout, + ) + .unwrap(); + let sdk_path = sdk_path.trim_end(); + let bindings = bindgen::Builder::default() .header("src/bindings.h") - .clang_arg("-isysroot/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk") + .clang_arg(format!("-isysroot{}", sdk_path)) .allowlist_function("CMTimeMake") .allowlist_type("CMSampleBufferRef") .allowlist_var("_dispatch_main_q")