zuzu-rust 0.6.0

Rust implementation of ZuzuScript
Documentation
use std::env;
use std::path::PathBuf;
use std::process::Command;

fn main() {
    let out_dir = PathBuf::from(env::var("OUT_DIR").expect("OUT_DIR should be set"));
    let source = PathBuf::from("src/runtime/stdlib/clib_ffi.c");
    let object = out_dir.join("clib_ffi.o");
    let archive = out_dir.join("libzuzu_clib_ffi.a");

    let cc_status = Command::new("cc")
        .arg("-O2")
        .arg("-fPIC")
        .arg("-c")
        .arg(&source)
        .arg("-o")
        .arg(&object)
        .status()
        .expect("failed to run cc for clib ffi bridge");
    assert!(cc_status.success(), "cc failed for clib ffi bridge");

    let ar_status = Command::new("ar")
        .arg("crus")
        .arg(&archive)
        .arg(&object)
        .status()
        .expect("failed to run ar for clib ffi bridge");
    assert!(ar_status.success(), "ar failed for clib ffi bridge");

    println!("cargo:rerun-if-changed={}", source.display());
    println!("cargo:rustc-link-search=native={}", out_dir.display());
    println!("cargo:rustc-link-lib=static=zuzu_clib_ffi");
    println!("cargo:rustc-link-lib=ffi");
}