use std::env;
use std::path::Path;
fn main() {
let target = env::var("CARGO_CFG_TARGET_OS").unwrap();
if target != "emscripten" {
return;
}
let out_dir = env::var("OUT_DIR").expect("failed to get envvar OUT_DIR");
let emscripten_dir = env::var("EMSDK").expect("failed to get envvar EMSCRIPTEN");
let emscripten_dir = format!("{}/upstream/emscripten/cache/sysroot", emscripten_dir);
let builder = bindgen::builder()
.header("emscripten.h")
.generate_comments(true)
.allowlist_type(".*")
.blocklist_type("max_align_t")
.allowlist_function(".*")
.allowlist_var(".*")
.use_core()
.clang_arg(format!("-I{}", env::var("CARGO_MANIFEST_DIR").unwrap()))
.clang_arg("-fvisibility=default")
.clang_arg(format!("-I{}/include", emscripten_dir))
.clang_arg(format!("-I{}/include/libc", emscripten_dir))
.clang_arg(format!("-I{}/include/libcxx", emscripten_dir))
.clang_arg("-x")
.clang_arg("c++")
.clang_arg("-std=c++11")
.clang_arg("-D__EMSCRIPTEN__");
builder
.generate()
.expect("failed to generate rust bindings")
.write_to_file(Path::new(&out_dir).join("emscripten.rs"))
.expect("failed to write to file")
}