diff --git a/build.rs b/build.rs index 13b4467..a620e13 100644 --- a/build.rs +++ b/build.rs @@ -664,6 +664,7 @@ fn main() { fn thread_main() { let statik = env::var("CARGO_FEATURE_STATIC").is_ok(); let target = env::var("TARGET").unwrap(); + let is_wasm_emscripten = target == "wasm32-unknown-emscripten"; let target_os = os_from_triple(&target); // it's different than Rust's target_os! but ./configure likes these better let include_paths: Vec = if env::var("CARGO_FEATURE_BUILD").is_ok() { @@ -1107,6 +1108,7 @@ fn thread_main() { // the resulting bindings. let mut builder = bindgen::Builder::default() .clang_args(clang_includes) + .clang_arg("-fvisibility=default") .ctypes_prefix("libc") // https://github.com/rust-lang/rust-bindgen/issues/550 .blocklist_type("max_align_t") @@ -1204,6 +1206,13 @@ fn thread_main() { .size_t_is_usize(true) .parse_callbacks(Box::new(Callbacks)); + if is_wasm_emscripten { + let emsdk_path = PathBuf::from(env::var("EMSDK").unwrap()); + let emsdk_sysroot = emsdk_path.join("upstream/emscripten/cache/sysroot"); + builder = builder + .clang_arg(format!("--sysroot={}", emsdk_sysroot.to_string_lossy())); + } + // The input headers we would like to generate // bindings for. if env::var("CARGO_FEATURE_AVCODEC").is_ok() {