use std::env;
use std::path::PathBuf;
fn main() {
build_library();
}
fn build_library() {
let base_dir = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap());
let code_dir = base_dir.join("quickjs");
let quickjs_version =
std::fs::read_to_string(code_dir.join("VERSION")).expect("failed to read quickjs version");
let mut builder = cc::Build::new();
#[cfg(feature = "dump_leaks")]
builder.define("DUMP_LEAKS", None);
#[cfg(feature = "bignum")]
builder.define("CONFIG_BIGNUM", None);
#[cfg(feature = "dump_free")]
builder.define("DUMP_FREE", None);
builder
.files(
[
"cutils.c",
"libbf.c",
"libregexp.c",
"libunicode.c",
"quickjs.c",
]
.iter()
.map(|f| code_dir.join(f)),
)
.file(base_dir.join("quickjs+extern.c"))
.define("_GNU_SOURCE", None)
.define(
"CONFIG_VERSION",
format!("\"{}\"", quickjs_version.trim()).as_str(),
)
.flag("-Wchar-subscripts")
.flag("-Wno-array-bounds")
.flag_if_supported("-Wno-format-truncation")
.flag("-Wno-missing-field-initializers")
.flag("-Wno-sign-compare")
.flag("-Wno-unused-parameter")
.flag("-Wundef")
.flag("-Wuninitialized")
.flag("-Wunused")
.flag("-Wwrite-strings")
.flag("-funsigned-char")
.flag_if_supported("-Wno-cast-function-type")
.flag("-Wno-implicit-fallthrough")
.opt_level(2)
.compile("quickjs");
}