cairo-sys-rs 0.2.1

FFI bindings to Cairo
extern crate pkg_config;

const MIN_MAJOR: u16 = 1;
const MIN_MINOR: u16 = 10;
const MINOR_STEP: u16 = 2;

fn main() {
    let lib = pkg_config::find_library("cairo")
        .unwrap_or_else(|e| panic!("{}", e));
    let mut parts = lib.version.splitn(3, '.')
        .map(|s| s.parse())
        .take_while(|r| r.is_ok())
        .map(|r| r.unwrap());
    let version: (u16, u16) = (parts.next().unwrap_or(0), parts.next().unwrap_or(0));
    let mut cfgs = Vec::new();
    if version.0 == MIN_MAJOR && version.1 > MIN_MINOR {
        let major = version.0;
        let mut minor = MIN_MINOR + MINOR_STEP;
        while minor <= version.1 {
            cfgs.push(format!("cairo_{}_{}", major, minor));
            minor += MINOR_STEP;
        }
    }
    for cfg in &cfgs {
        println!("cargo:rustc-cfg={}", cfg);
    }
    println!("cargo:cfg={}", cfgs.join(" "));
}