use sgx_build_helper as build_helper;
use self::build_helper::native_lib_boilerplate;
use std::env;
use std::fs::File;
fn main() {
let target = env::var("TARGET").expect("TARGET was not set");
let _ = build_libbacktrace(&target);
}
fn build_libbacktrace(_target: &str) -> Result<(), ()> {
let native = native_lib_boilerplate("sgx_backtrace_sys-1.0.9/libbacktrace", "libbacktrace", "backtrace", "")?;
let mut build = cc::Build::new();
build
.flag("-fvisibility=hidden")
.include("./libbacktrace")
.include(&native.out_dir)
.out_dir(&native.out_dir)
.warnings(false)
.file("./libbacktrace/mmap.c")
.file("./libbacktrace/mmapio.c")
.file("./libbacktrace/backtrace.c")
.file("./libbacktrace/dwarf.c")
.file("./libbacktrace/fileline.c")
.file("./libbacktrace/posix.c")
.file("./libbacktrace/sort.c")
.file("./libbacktrace/state.c");
let any_debug = env::var("RUSTC_DEBUGINFO").unwrap_or_default() == "true" ||
env::var("RUSTC_DEBUGINFO_LINES").unwrap_or_default() == "true";
build.debug(any_debug);
build.file("./libbacktrace/elf.c");
let pointer_width = env::var("CARGO_CFG_TARGET_POINTER_WIDTH").unwrap();
if pointer_width == "64" {
build.define("BACKTRACE_ELF_SIZE", "64");
} else {
build.define("BACKTRACE_ELF_SIZE", "32");
}
File::create(native.out_dir.join("backtrace-supported.h")).unwrap();
build.define("BACKTRACE_SUPPORTED", "1");
build.define("BACKTRACE_USES_MALLOC", "0");
build.define("BACKTRACE_SUPPORTS_THREADS", "0");
build.define("BACKTRACE_SUPPORTS_DATA", "0");
File::create(native.out_dir.join("config.h")).unwrap();
build.define("HAVE_DL_ITERATE_PHDR", "1");
build.define("_GNU_SOURCE", "1");
build.define("_LARGE_FILES", "1");
build.compile("backtrace");
Ok(())
}