use std::env;
use std::fs;
use std::path::Path;
fn comment_out(before: String, line: &str) -> String {
let after = before.replace(line, &format!("// {}", line));
assert_ne!(before, after); after
}
fn generate_wren_core_source_rs() {
let wren_core_wren_path = Path::new("wren_c/src/vm/wren_core.wren");
let source = fs::read_to_string(wren_core_wren_path).unwrap();
let modified = comment_out(comment_out(source, "class Fiber {}"), "class Fn {}");
let code = format!(
"pub fn wren_core_source() -> &'static str {{
r#\"{}\"#
}}
",
modified
);
let out_dir = env::var_os("OUT_DIR").unwrap();
let dest_path = Path::new(&out_dir).join("wren_core_source.rs");
fs::write(&dest_path, code).unwrap();
println!("cargo:rerun-if-changed={}", wren_core_wren_path.display());
println!("cargo:rerun-if-changed=build.rs");
}
fn compile_opt_random() {
let opt_random_path = "wren_c/src/optional/wren_opt_random.c";
cc::Build::new()
.file(opt_random_path)
.include("wren_c/src/include") .include("wren_c/src/vm") .warnings(false) .compile("wren_opt_random");
println!("cargo:rerun-if-changed={}", opt_random_path);
}
fn main() {
generate_wren_core_source_rs();
compile_opt_random();
}