sylvan-sys 1.1.0

Bindings for the Sylvan parallel decision diagrams library.
Documentation
extern crate cmake;

use cmake::Config;
use std::env;
use std::path::PathBuf;

fn main() -> Result<(), String> {
    let build_sylvan = env::var_os("CARGO_FEATURE_BUILD_SYLVAN").is_some();
    if !build_sylvan {
        // If silent build is active, don't do anything.
        return Ok(());
    }

    let out_dir = env::var("OUT_DIR")
        .map_err(|_| "Environmental variable `OUT_DIR` not defined.".to_string())?;

    let wrapper_path = PathBuf::from("wrapper");
    let mut cfg = Config::new(wrapper_path);

    let is_debug = env::var_os("DEBUG").unwrap_or_else(|| "true".into());
    if is_debug == "true" {
        cfg.cflag("-Werror");
    }
    cfg.build();

    println!(
        "cargo:rustc-link-search=native={}",
        PathBuf::from(out_dir).join("lib").display()
    );
    println!("cargo:rustc-link-lib=static=lace");
    println!("cargo:rustc-link-lib=static=sylvan");
    println!("cargo:rustc-link-lib=static=wrapper");

    Ok(())
}