extern crate cc;
use std::env;
use std::path::Path;
fn main() {
println!("cargo:rerun-if-changed=depend");
let simplicity_path = Path::new("depend/simplicity");
let jet_files: Vec<_> = vec![
"frame.c",
"jets.c",
"jets-secp256k1.c",
"rsort.c",
"sha256.c",
"primitive/elements/env.c",
"primitive/elements/ops.c",
"primitive/elements/jets.c",
]
.into_iter()
.map(|x| simplicity_path.join(x))
.collect();
let mut build = cc::Build::new();
build
.std("c11")
.flag_if_supported("-fno-inline-functions")
.opt_level(2)
.files(jet_files)
.file(Path::new("depend/wrapper.c"))
.file(Path::new("depend/env.c"))
.file(Path::new("depend/jets_wrapper.c"))
.include(simplicity_path.join("include"));
if cfg!(feature = "test-utils") {
let test_files: Vec<_> = vec![
"bitstream.c",
"dag.c",
"deserialize.c",
"eval.c",
"type.c",
"typeInference.c",
"primitive/elements/exec.c",
"primitive/elements/primitive.c",
"ctx8Pruned.c",
"ctx8Unpruned.c",
"hashBlock.c",
"schnorr0.c",
"schnorr6.c",
"primitive/elements/checkSigHashAllTx1.c",
]
.into_iter()
.map(|x| simplicity_path.join(x))
.collect();
build.files(test_files);
}
if cfg!(not(fuzzing)) {
build.define("PRODUCTION", None);
}
if env::var("CARGO_CFG_TARGET_ARCH").unwrap() == "wasm32" {
build.include("wasm-sysroot");
}
build.compile("ElementsSimplicity");
}