]>
git.proxmox.com Git - rustc.git/blob - src/vendor/backtrace-sys/build.rs
1 extern crate pkg_config
;
5 use std
::path
::PathBuf
;
9 let target
= env
::var("TARGET").unwrap();
11 // libbacktrace isn't used on windows
12 if target
.contains("windows") {
16 // no way this will ever compile for emscripten
17 if target
.contains("emscripten") {
21 let out_dir
= PathBuf
::from(env
::var_os("OUT_DIR").unwrap());
23 let mut build
= cc
::Build
::new();
25 .include("src/libbacktrace")
28 .file("src/libbacktrace/alloc.c")
29 .file("src/libbacktrace/backtrace.c")
30 .file("src/libbacktrace/dwarf.c")
31 .file("src/libbacktrace/fileline.c")
32 .file("src/libbacktrace/posix.c")
33 .file("src/libbacktrace/read.c")
34 .file("src/libbacktrace/sort.c")
35 .file("src/libbacktrace/state.c");
37 if target
.contains("darwin") {
38 build
.file("src/libbacktrace/macho.c");
39 } else if target
.contains("windows") {
40 build
.file("src/libbacktrace/pecoff.c");
42 build
.flag("-fvisibility=hidden");
43 build
.file("src/libbacktrace/elf.c");
45 if target
.contains("64") {
46 build
.define("BACKTRACE_ELF_SIZE", "64");
48 build
.define("BACKTRACE_ELF_SIZE", "32");
52 if let Ok(unwind
) = pkg_config
::Config
::new().probe("libunwind") {
53 for path
in unwind
.include_paths
{
58 File
::create(out_dir
.join("backtrace-supported.h")).unwrap();
59 build
.define("BACKTRACE_SUPPORTED", "1");
60 build
.define("BACKTRACE_USES_MALLOC", "1");
61 build
.define("BACKTRACE_SUPPORTS_THREADS", "0");
62 build
.define("BACKTRACE_SUPPORTS_DATA", "0");
64 File
::create(out_dir
.join("config.h")).unwrap();
65 if !target
.contains("apple-ios") {
66 build
.define("HAVE_DL_ITERATE_PHDR", "1");
68 build
.define("_GNU_SOURCE", "1");
69 build
.define("_LARGE_FILES", "1");
73 "backtrace_dwarf_add",
74 "backtrace_initialize",
78 "backtrace_release_view",
81 "backtrace_vector_finish",
82 "backtrace_vector_grow",
83 "backtrace_vector_release",
89 "backtrace_create_state",
90 "backtrace_uncompress_zdebug",
92 for sym
in syms
.iter() {
93 build
.define(sym
, &format
!("__rbt_{}", sym
)[..]);
96 build
.compile("backtrace");