From 310093b38a54d4f6e93cfe2f44562d38cacecbb9 Mon Sep 17 00:00:00 2001 From: Luke Street Date: Wed, 1 Sep 2021 19:06:37 -0400 Subject: [PATCH] Manually set bindgen sysroot for Android build --- build.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/build.rs b/build.rs index 120237b..a3f9925 100644 --- a/build.rs +++ b/build.rs @@ -24,6 +24,15 @@ fn main() { { bindings = bindings.layout_tests(false); } + if matches!(env::var("CARGO_CFG_TARGET_OS"), Result::Ok(v) if v == "android") { + if let Result::Ok(cc) = env::var("TARGET_CXX") { + let mut sysroot = PathBuf::from(cc).with_file_name("../sysroot"); + sysroot = sysroot.canonicalize().unwrap_or_else(|err| { + panic!("Failed to locate {}: {}", sysroot.to_string_lossy(), err) + }); + bindings = bindings.clang_arg(format!("--sysroot={}", sysroot.to_string_lossy())); + } + } let result = bindings.generate().expect("Unable to generate bindings"); let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); result.write_to_file(out_path.join("bindings.rs")).expect("Couldn't write bindings!");