deft-emscripten-sys 0.1.0

emscripten bindings
Documentation
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")
}