- let compiler = gcc::Config::new().get_compiler();
- // only msvc returns None for ar so unwrap is okay
- let ar = build_helper::cc2ar(compiler.path(), target).unwrap();
- let cflags = compiler.args().iter().map(|s| s.to_str().unwrap())
- .collect::<Vec<_>>().join(" ");
- run(Command::new("sh")
- .current_dir(&build_dir)
- .arg(src_dir.join("configure").to_str().unwrap()
- .replace("C:\\", "/c/")
- .replace("\\", "/"))
- .arg("--with-pic")
- .arg("--disable-multilib")
- .arg("--disable-shared")
- .arg("--disable-host-shared")
- .arg(format!("--host={}", build_helper::gnu_target(target)))
- .arg(format!("--build={}", build_helper::gnu_target(host)))
- .env("CC", compiler.path())
- .env("AR", &ar)
- .env("RANLIB", format!("{} s", ar.display()))
- .env("CFLAGS", cflags));
- run(Command::new(build_helper::make(host))
- .current_dir(&build_dir)
- .arg(format!("INCDIR={}", src_dir.display()))
- .arg("-j").arg(env::var("NUM_JOBS").expect("NUM_JOBS was not set")));
+ File::create(native.out_dir.join("backtrace-supported.h")).unwrap();
+ build.define("BACKTRACE_SUPPORTED", "1");
+ build.define("BACKTRACE_USES_MALLOC", "1");
+ build.define("BACKTRACE_SUPPORTS_THREADS", "0");
+ build.define("BACKTRACE_SUPPORTS_DATA", "0");
+
+ File::create(native.out_dir.join("config.h")).unwrap();
+ if !target.contains("apple-ios") &&
+ !target.contains("solaris") &&
+ !target.contains("redox") &&
+ !target.contains("android") &&
+ !target.contains("haiku") {
+ build.define("HAVE_DL_ITERATE_PHDR", "1");
+ }
+ build.define("_GNU_SOURCE", "1");
+ build.define("_LARGE_FILES", "1");
+
+ build.compile("backtrace");
+ Ok(())