use std::env;
extern crate cc;
extern crate peg;

fn main() {
    let is_release = env::var("PROFILE").unwrap() == "release";

    // parser
    peg::cargo_build("src/parser.peg");

    // cc
    {
        let mut build = cc::Build::new();
        for path in std::fs::read_dir("./src/vm").unwrap() {
            if let Some(path) = path.unwrap().path().to_str() {
                let pstr = path.to_string();
                if pstr.ends_with(".c") {
                    build.file(pstr);
                }
            }
        }
        if env::var("NOLOG").is_ok() || is_release {
            build.define("NOLOG", None);
        }
        if env::var("PROFILE").is_ok() {
            build.flag("-pg");
        }
        if is_release {
            build.flag("-flto");
        }
        build
            .flag("-Wall")
            .flag("-Wno-unused-parameter")
            .flag("-std=c11")
            .shared_flag(true)
            .static_flag(true)
            .compile("hana");
    }
}
