tolk-sys 0.2.1

Raw ffi bindings to Tolk.dll
use std::env;
use std::fs;
use std::io;
use std::path::PathBuf;

fn main() -> io::Result<()> {
    let out_dir = env::var("OUT_DIR").unwrap();
    let manifest = env::var("CARGO_MANIFEST_DIR").unwrap();
    let target = env::var("TARGET").unwrap();
    let libs = if target.contains("64") {
        format!("{}/vendor/tolk/libs/x64", manifest)
    } else {
        format!("{}/vendor/tolk/libs/686", manifest)
    };
    let mut target: PathBuf = out_dir.into();
    target.pop();
    target.pop();
    target.pop();
    let target = target.into_os_string().into_string().unwrap();
    for entry in fs::read_dir(libs)? {
        let path = entry.unwrap().path();
        let file_name = path.file_name().unwrap().to_os_string().into_string().unwrap();
        let out = format!("{}/{}", &target, &file_name);
        fs::copy(&path, out)?;
        let out = format!("{}/examples/{}", &target, &file_name);
        fs::copy(&path, out)?;
    }
    let root = "vendor/tolk";
    cc::Build::new()
        .cpp(true)
        .define("_EXPORTING", "")
        .define("UNICODE", "")
        .file(format!("{}/src/Tolk.cpp", root))
        .file(format!("{}/src/ScreenReaderDriverJAWS.cpp", root))
        .file(format!("{}/src/ScreenReaderDriverNVDA.cpp", root))
        .file(format!("{}/src/ScreenReaderDriverSA.cpp", root))
        .file(format!("{}/src/ScreenReaderDriverSNova.cpp", root))
        .file(format!("{}/src/ScreenReaderDriverWE.cpp", root))
        .file(format!("{}/src/ScreenReaderDriverZT.cpp", root))
        .file(format!("{}/src/ScreenReaderDriverSAPI.cpp", root))
        .file(format!("{}/src/fsapi.c", root))
        .file(format!("{}/src/wineyes.c", root))
        .file(format!("{}/src/zt.c", root))
        .compile("tolk");
    println!("cargo:rustc-flags=-l User32 -l Ole32 -l OleAut32");
    Ok(())
}