use cc::Build;
use std::env;
use walkdir::WalkDir;
fn main() {
let mut cfg = Build::new();
cfg.compiler("clang");
cfg.flag("-nostdlibinc");
cfg.flag("-fno-stack-protector");
cfg.flag("-fno-profile-instr-generate");
cfg.flag("-fno-coverage-mapping");
cfg.define("COMPILER_RT_HAS_ATOMICS", "1");
let sources = vec![
"c/InstrProfiling.c",
"c/InstrProfilingBuffer.c",
"c/InstrProfilingInternal.c",
"c/InstrProfilingMerge.c",
"c/InstrProfilingPlatformLinux.c",
"c/InstrProfilingPlatformOther.c",
"c/InstrProfilingPlatformWindows.c",
"c/InstrProfilingWriter.c",
"c/InstrProfilingValue.c",
"c/InstrProfilingVersionVar.c",
];
let target = env::var("TARGET").unwrap_or_default();
if target.ends_with("-uefi") {
cfg.define("MINICOV_UEFI", "1");
}
for source in &sources {
cfg.file(source);
}
cfg.compile("llvm_profiler_runtime");
for entry in WalkDir::new("c") {
println!(
"cargo:rerun-if-changed={}",
entry.unwrap().path().to_str().unwrap()
);
}
}