media-codec-opus-sys 0.2.0

Rust bindings to opus
Documentation
use std::{env, path::PathBuf};

use bindgen::EnumVariation::Rust;
use bindgen::MacroTypeVariation::Signed;
use pkg_config::Config;

fn main() {
    if env::var("DOCS_RS").is_ok() || env::var("CARGO_DOC").is_ok() {
        return;
    }

    println!("cargo:rerun-if-changed=include/wrapper.h");

    let libs = Config::new().atleast_version("1.5.2").probe("opus").unwrap();
    let headers = libs.include_paths;

    let mut builder = bindgen::builder()
        .header("include/wrapper.h")
        .default_enum_style(Rust {
            non_exhaustive: false,
        })
        .default_macro_constant_type(Signed)
        .layout_tests(false)
        .merge_extern_blocks(true)
        .generate_comments(false);

    for header in headers {
        builder = builder.clang_arg("-I").clang_arg(header.to_str().unwrap());
    }

    builder.generate().unwrap().write_to_file(PathBuf::from(env::var("OUT_DIR").unwrap()).join("opus.rs")).unwrap();
}