bitcoin-consensus 0.2.1

Rust bindings to libbitcoinconsensus
Documentation
extern crate num_cpus;

use std::process::Command;
use std::env;

fn main() {
    Command::new("git").args(&["submodule", "update", "--init"]).status().unwrap();
    env::set_current_dir("bitcoin-core").unwrap();

    Command::new("sh").arg("./autogen.sh").status().unwrap();
    let out_dir = env::var("OUT_DIR").unwrap();
    Command::new("sh").args(&["./configure",
                              &format!("--prefix={}", out_dir),
                              "--with-gui=no",
                              "--with-daemon=no",
                              "--with-utils=no",
                              "--disable-wallet",
                              "--disable-zmq",
                              "--disable-bench",
                              "--disable-tests",
                              "--with-miniupnpc=no"]).status().unwrap();
    let cpus = num_cpus::get();
    Command::new("make").arg(format!("-j{}", cpus)).status().unwrap();
    Command::new("make").args(&[&format!("-j{}", cpus), "install"]).status().unwrap();
    env::set_current_dir("src/secp256k1").unwrap();
    Command::new("make").args(&[&format!("-j{}", cpus), "install"]).status().unwrap();

    let target = env::var("TARGET").unwrap();
    if !target.contains("msvc") {
        let cpplib = if target.contains("darwin") || target.contains("freebsd") { "c++" } else { "stdc++" };
        println!("cargo:rustc-link-lib=dylib={}", cpplib);
    }

    println!("cargo:rustc-link-search=native={}/lib", out_dir);
    println!("cargo:rustc-link-lib=static=bitcoinconsensus");
    println!("cargo:rustc-link-lib=static=secp256k1");
}