sqlite3-sys 0.6.7

The package provides bindings to SQLite.
Documentation
extern crate pkg_config;

fn main() {
    let library = match pkg_config::find_library("sqlite3") {
        Ok(library) => library,
        _ => {
            println!("cargo:rustc-link-lib=dylib=sqlite3");
            return;
        },
    };
    let version = match parse(&library.version) {
        Some(version) => version,
        _ => return,
    };
    let mut features = vec![];
    if version >= [3, 7, 14] {
        features.push("sqlite3-close-v2");
    }
    if version >= [3, 7, 15] {
        features.push("sqlite3-errstr");
    }
    for feature in &features {
        println!(r#"cargo:rustc-cfg=feature="{}""#, feature);
    }
    println!("cargo:features={}", join(&features));
    println!("cargo:version={}.{}.{}", version[0], version[1], version[2]);
}

fn parse(line: &str) -> Option<[u32; 3]> {
    let mut version = [0, 0, 0];
    for (i, part) in line.split('.').take(3).enumerate() {
        version[i] = match part.parse::<u32>() {
            Ok(part) => part,
            _ => return None,
        }
    }
    Some(version)
}

fn join(chunks: &[&str]) -> String {
    let mut buffer = String::new();
    for (i, chunk) in chunks.iter().enumerate() {
        if i > 0 {
            buffer.push(' ');
        }
        buffer.push_str(chunk);
    }
    buffer
}