libmysofa-sys 0.2.1

Low level binding for libmysofa library
Documentation
use system_deps::{BuildInternalClosureError, Library};

use std::env;

pub fn build_from_src(lib: &str, version: &str) -> Result<Library, BuildInternalClosureError> {
    let lib = lib.strip_prefix("lib").unwrap_or(lib);
    let dst = std::path::PathBuf::from(env::var_os("OUT_DIR").unwrap());
    let z_root = env::var_os("DEP_Z_ROOT").unwrap();
    let z_inc = std::path::PathBuf::from(&z_root).join("include");
    let z_lib = std::path::PathBuf::from(&z_root).join("lib");

    let mut cfg = cc::Build::new();
    cfg.flag_if_supported("-Wno-sign-compare")
        .flag_if_supported("-Wno-unused-parameter")
        .flag_if_supported("-Wno-unused-but-set-variable")
        .include(z_inc)
        .include("libmysofa/src/hrtf")
        .include("c")
        .file("libmysofa/src/hrtf/cache.c")
        .file("libmysofa/src/hdf/gunzip.c")
        .file("libmysofa/src/hdf/gcol.c")
        .file("libmysofa/src/hrtf/tools.c")
        .file("libmysofa/src/hdf/superblock.c")
        .file("libmysofa/src/hrtf/loudness.c")
        .file("libmysofa/src/hrtf/lookup.c")
        .file("libmysofa/src/hdf/btree.c")
        .file("libmysofa/src/hrtf/minphase.c")
        .file("libmysofa/src/hrtf/neighbors.c")
        .file("libmysofa/src/hrtf/easy.c")
        .file("libmysofa/src/hrtf/check.c")
        .file("libmysofa/src/hrtf/kdtree.c")
        .file("libmysofa/src/hrtf/spherical.c")
        .file("libmysofa/src/hrtf/reader.c")
        .file("libmysofa/src/hdf/fractalhead.c")
        .file("libmysofa/src/hrtf/interpolate.c")
        .file("libmysofa/src/hrtf/resample.c")
        .file("libmysofa/src/hdf/dataobject.c")
        .file("libmysofa/src/resampler/speex_resampler.c")
        .compile(lib);

    Ok(Library {
        name: lib.to_owned(),
        version: version.to_owned(),
        source: system_deps::Source::EnvVariables,
        link_paths: vec![dst, z_lib.to_owned()],
        libs: vec![
            system_deps::InternalLib {
                name: lib.to_owned(),
                is_static_available: false,
            },
            system_deps::InternalLib {
                name: "z".to_owned(),
                is_static_available: false,
            },
        ],
        frameworks: Default::default(),
        framework_paths: Default::default(),
        include_paths: Default::default(),
        defines: Default::default(),
        ld_args: Default::default(),
        statik: true,
    })
}

fn main() {
    let build_internal_key = "SYSTEM_DEPS_LIBMYSOFA_BUILD_INTERNAL";
    let build_internal_val = env::var_os(build_internal_key).unwrap_or("auto".into());

    env::set_var(build_internal_key, build_internal_val);

    system_deps::Config::new()
        .add_build_internal("libmysofa", build_from_src)
        .probe()
        .unwrap();
}