1
Fork 0

Update to the cc crate

This is the name the `gcc` crate has moved to
This commit is contained in:
Alex Crichton 2017-09-22 21:34:27 -07:00
parent 041d3550f6
commit 7694ca419b
22 changed files with 66 additions and 57 deletions

20
src/Cargo.lock generated
View file

@ -42,8 +42,8 @@ dependencies = [
"alloc 0.0.0", "alloc 0.0.0",
"alloc_system 0.0.0", "alloc_system 0.0.0",
"build_helper 0.1.0", "build_helper 0.1.0",
"cc 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"core 0.0.0", "core 0.0.0",
"gcc 0.3.54 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.0.0", "libc 0.0.0",
] ]
@ -136,9 +136,9 @@ name = "bootstrap"
version = "0.0.0" version = "0.0.0"
dependencies = [ dependencies = [
"build_helper 0.1.0", "build_helper 0.1.0",
"cc 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"cmake 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)", "cmake 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)",
"filetime 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "filetime 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
"gcc 0.3.54 (registry+https://github.com/rust-lang/crates.io-index)",
"getopts 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)", "getopts 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.31 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.31 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1221,8 +1221,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
name = "profiler_builtins" name = "profiler_builtins"
version = "0.0.0" version = "0.0.0"
dependencies = [ dependencies = [
"cc 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"core 0.0.0", "core 0.0.0",
"gcc 0.3.54 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]] [[package]]
@ -1628,7 +1628,7 @@ version = "0.0.0"
dependencies = [ dependencies = [
"bitflags 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "bitflags 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"build_helper 0.1.0", "build_helper 0.1.0",
"gcc 0.3.54 (registry+https://github.com/rust-lang/crates.io-index)", "cc 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc_cratesio_shim 0.0.0", "rustc_cratesio_shim 0.0.0",
] ]
@ -1759,8 +1759,8 @@ name = "rustc_trans"
version = "0.0.0" version = "0.0.0"
dependencies = [ dependencies = [
"bitflags 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "bitflags 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"cc 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"flate2 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", "flate2 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)",
"gcc 0.3.54 (registry+https://github.com/rust-lang/crates.io-index)",
"jobserver 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "jobserver 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
"num_cpus 1.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1786,7 +1786,7 @@ name = "rustc_trans_utils"
version = "0.0.0" version = "0.0.0"
dependencies = [ dependencies = [
"ar 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "ar 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"flate2 0.2.19 (registry+https://github.com/rust-lang/crates.io-index)", "flate2 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
"owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc 0.0.0", "rustc 0.0.0",
@ -1828,8 +1828,8 @@ name = "rustdoc"
version = "0.0.0" version = "0.0.0"
dependencies = [ dependencies = [
"build_helper 0.1.0", "build_helper 0.1.0",
"cc 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
"gcc 0.3.54 (registry+https://github.com/rust-lang/crates.io-index)",
"html-diff 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "html-diff 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
"pulldown-cmark 0.0.14 (registry+https://github.com/rust-lang/crates.io-index)", "pulldown-cmark 0.0.14 (registry+https://github.com/rust-lang/crates.io-index)",
@ -1998,10 +1998,10 @@ dependencies = [
"alloc_jemalloc 0.0.0", "alloc_jemalloc 0.0.0",
"alloc_system 0.0.0", "alloc_system 0.0.0",
"build_helper 0.1.0", "build_helper 0.1.0",
"cc 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"collections 0.0.0", "collections 0.0.0",
"compiler_builtins 0.0.0", "compiler_builtins 0.0.0",
"core 0.0.0", "core 0.0.0",
"gcc 0.3.54 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.0.0", "libc 0.0.0",
"panic_abort 0.0.0", "panic_abort 0.0.0",
"panic_unwind 0.0.0", "panic_unwind 0.0.0",
@ -2320,6 +2320,10 @@ name = "unicode-xid"
version = "0.0.4" version = "0.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "unicødë"
version = "0.1.0"
[[package]] [[package]]
name = "unreachable" name = "unreachable"
version = "0.1.1" version = "0.1.1"

View file

@ -38,6 +38,7 @@ members = [
"tools/rls/test_data/infer_custom_bin", "tools/rls/test_data/infer_custom_bin",
"tools/rls/test_data/infer_lib", "tools/rls/test_data/infer_lib",
"tools/rls/test_data/omit_init_build", "tools/rls/test_data/omit_init_build",
"tools/rls/test_data/unicødë",
"tools/rls/test_data/workspace_symbol", "tools/rls/test_data/workspace_symbol",
] ]

View file

@ -34,7 +34,7 @@ cmake = "0.1.23"
filetime = "0.1" filetime = "0.1"
num_cpus = "1.0" num_cpus = "1.0"
getopts = "0.2" getopts = "0.2"
gcc = "0.3.54" cc = "1.0"
libc = "0.2" libc = "0.2"
serde = "1.0.8" serde = "1.0.8"
serde_derive = "1.0.8" serde_derive = "1.0.8"

View file

@ -8,7 +8,7 @@
// option. This file may not be copied, modified, or distributed // option. This file may not be copied, modified, or distributed
// except according to those terms. // except according to those terms.
extern crate gcc; extern crate cc;
use std::env; use std::env;
use std::process::{self, Command}; use std::process::{self, Command};
@ -18,7 +18,7 @@ fn main() {
// Locate the actual compiler that we're invoking // Locate the actual compiler that we're invoking
env::remove_var("CC"); env::remove_var("CC");
env::remove_var("CXX"); env::remove_var("CXX");
let mut cfg = gcc::Build::new(); let mut cfg = cc::Build::new();
cfg.cargo_metadata(false) cfg.cargo_metadata(false)
.out_dir("/") .out_dir("/")
.target(&target) .target(&target)

View file

@ -23,7 +23,7 @@
//! 6. "cc" //! 6. "cc"
//! //!
//! Some of this logic is implemented here, but much of it is farmed out to the //! Some of this logic is implemented here, but much of it is farmed out to the
//! `gcc` crate itself, so we end up having the same fallbacks as there. //! `cc` crate itself, so we end up having the same fallbacks as there.
//! Similar logic is then used to find a C++ compiler, just some s/cc/c++/ is //! Similar logic is then used to find a C++ compiler, just some s/cc/c++/ is
//! used. //! used.
//! //!
@ -35,7 +35,7 @@ use std::process::Command;
use std::iter; use std::iter;
use build_helper::{cc2ar, output}; use build_helper::{cc2ar, output};
use gcc; use cc;
use Build; use Build;
use config::Target; use config::Target;
@ -45,7 +45,7 @@ pub fn find(build: &mut Build) {
// For all targets we're going to need a C compiler for building some shims // For all targets we're going to need a C compiler for building some shims
// and such as well as for being a linker for Rust code. // and such as well as for being a linker for Rust code.
for target in build.targets.iter().chain(&build.hosts).cloned().chain(iter::once(build.build)) { for target in build.targets.iter().chain(&build.hosts).cloned().chain(iter::once(build.build)) {
let mut cfg = gcc::Build::new(); let mut cfg = cc::Build::new();
cfg.cargo_metadata(false).opt_level(0).warnings(false).debug(false) cfg.cargo_metadata(false).opt_level(0).warnings(false).debug(false)
.target(&target).host(&build.build); .target(&target).host(&build.build);
@ -67,7 +67,7 @@ pub fn find(build: &mut Build) {
// For all host triples we need to find a C++ compiler as well // For all host triples we need to find a C++ compiler as well
for host in build.hosts.iter().cloned().chain(iter::once(build.build)) { for host in build.hosts.iter().cloned().chain(iter::once(build.build)) {
let mut cfg = gcc::Build::new(); let mut cfg = cc::Build::new();
cfg.cargo_metadata(false).opt_level(0).warnings(false).debug(false).cpp(true) cfg.cargo_metadata(false).opt_level(0).warnings(false).debug(false).cpp(true)
.target(&host).host(&build.build); .target(&host).host(&build.build);
let config = build.config.target_config.get(&host); let config = build.config.target_config.get(&host);
@ -82,7 +82,7 @@ pub fn find(build: &mut Build) {
} }
} }
fn set_compiler(cfg: &mut gcc::Build, fn set_compiler(cfg: &mut cc::Build,
gnu_compiler: &str, gnu_compiler: &str,
target: Interned<String>, target: Interned<String>,
config: Option<&Target>, config: Option<&Target>,

View file

@ -126,7 +126,7 @@ extern crate lazy_static;
extern crate serde_json; extern crate serde_json;
extern crate cmake; extern crate cmake;
extern crate filetime; extern crate filetime;
extern crate gcc; extern crate cc;
extern crate getopts; extern crate getopts;
extern crate num_cpus; extern crate num_cpus;
extern crate toml; extern crate toml;
@ -148,7 +148,7 @@ use build_helper::{run_silent, run_suppressed, try_run_silent, try_run_suppresse
use util::{exe, libdir, OutputFolder, CiEnv}; use util::{exe, libdir, OutputFolder, CiEnv};
mod cc; mod cc_detect;
mod channel; mod channel;
mod check; mod check;
mod clean; mod clean;
@ -241,9 +241,9 @@ pub struct Build {
// Runtime state filled in later on // Runtime state filled in later on
// target -> (cc, ar) // target -> (cc, ar)
cc: HashMap<Interned<String>, (gcc::Tool, Option<PathBuf>)>, cc: HashMap<Interned<String>, (cc::Tool, Option<PathBuf>)>,
// host -> (cc, ar) // host -> (cc, ar)
cxx: HashMap<Interned<String>, gcc::Tool>, cxx: HashMap<Interned<String>, cc::Tool>,
crates: HashMap<Interned<String>, Crate>, crates: HashMap<Interned<String>, Crate>,
is_sudo: bool, is_sudo: bool,
ci_env: CiEnv, ci_env: CiEnv,
@ -350,7 +350,7 @@ impl Build {
} }
self.verbose("finding compilers"); self.verbose("finding compilers");
cc::find(self); cc_detect::find(self);
self.verbose("running sanity check"); self.verbose("running sanity check");
sanity::check(self); sanity::check(self);
// If local-rust is the same major.minor as the current version, then force a local-rebuild // If local-rust is the same major.minor as the current version, then force a local-rebuild
@ -619,7 +619,7 @@ impl Build {
/// specified. /// specified.
fn cflags(&self, target: Interned<String>) -> Vec<String> { fn cflags(&self, target: Interned<String>) -> Vec<String> {
// Filter out -O and /O (the optimization flags) that we picked up from // Filter out -O and /O (the optimization flags) that we picked up from
// gcc-rs because the build scripts will determine that for themselves. // cc-rs because the build scripts will determine that for themselves.
let mut base = self.cc[&target].0.args().iter() let mut base = self.cc[&target].0.args().iter()
.map(|s| s.to_string_lossy().into_owned()) .map(|s| s.to_string_lossy().into_owned())
.filter(|s| !s.starts_with("-O") && !s.starts_with("/O")) .filter(|s| !s.starts_with("-O") && !s.starts_with("/O"))

View file

@ -27,7 +27,7 @@ use std::process::Command;
use build_helper::output; use build_helper::output;
use cmake; use cmake;
use gcc; use cc;
use Build; use Build;
use util; use util;
@ -289,7 +289,7 @@ impl Step for TestHelpers {
let _folder = build.fold_output(|| "build_test_helpers"); let _folder = build.fold_output(|| "build_test_helpers");
println!("Building test helpers"); println!("Building test helpers");
t!(fs::create_dir_all(&dst)); t!(fs::create_dir_all(&dst));
let mut cfg = gcc::Build::new(); let mut cfg = cc::Build::new();
// We may have found various cross-compilers a little differently due to our // We may have found various cross-compilers a little differently due to our
// extra configuration, so inform gcc of these compilers. Note, though, that // extra configuration, so inform gcc of these compilers. Note, though, that

View file

@ -126,6 +126,10 @@ pub fn prepare_tool_cargo(
cargo.env("LIBZ_SYS_STATIC", "1"); cargo.env("LIBZ_SYS_STATIC", "1");
} }
// if tools are using lzma we want to force the build script to build its
// own copy
cargo.env("LZMA_API_STATIC", "1");
cargo.env("CFG_RELEASE_CHANNEL", &build.config.channel); cargo.env("CFG_RELEASE_CHANNEL", &build.config.channel);
cargo.env("CFG_VERSION", build.rust_version()); cargo.env("CFG_VERSION", build.rust_version());

View file

@ -19,7 +19,7 @@ libc = { path = "../rustc/libc_shim" }
[build-dependencies] [build-dependencies]
build_helper = { path = "../build_helper" } build_helper = { path = "../build_helper" }
gcc = "0.3.50" cc = "1.0"
[features] [features]
debug = [] debug = []

View file

@ -11,7 +11,7 @@
#![deny(warnings)] #![deny(warnings)]
extern crate build_helper; extern crate build_helper;
extern crate gcc; extern crate cc;
use std::env; use std::env;
use std::path::PathBuf; use std::path::PathBuf;
@ -63,7 +63,7 @@ fn main() {
_ => return, _ => return,
}; };
let compiler = gcc::Build::new().get_compiler(); let compiler = cc::Build::new().get_compiler();
// only msvc returns None for ar so unwrap is okay // only msvc returns None for ar so unwrap is okay
let ar = build_helper::cc2ar(compiler.path(), &target).unwrap(); let ar = build_helper::cc2ar(compiler.path(), &target).unwrap();
let cflags = compiler.args() let cflags = compiler.args()
@ -150,7 +150,7 @@ fn main() {
// sure the symbols are available. // sure the symbols are available.
if target.contains("androideabi") { if target.contains("androideabi") {
println!("cargo:rerun-if-changed=pthread_atfork_dummy.c"); println!("cargo:rerun-if-changed=pthread_atfork_dummy.c");
gcc::Build::new() cc::Build::new()
.flag("-fvisibility=hidden") .flag("-fvisibility=hidden")
.file("pthread_atfork_dummy.c") .file("pthread_atfork_dummy.c")
.compile("libpthread_atfork_dummy.a"); .compile("libpthread_atfork_dummy.a");

View file

@ -15,4 +15,4 @@ doc = false
core = { path = "../libcore" } core = { path = "../libcore" }
[build-dependencies] [build-dependencies]
gcc = "0.3.50" cc = "1.0"

View file

@ -12,14 +12,14 @@
//! //!
//! See the build.rs for libcompiler_builtins crate for details. //! See the build.rs for libcompiler_builtins crate for details.
extern crate gcc; extern crate cc;
use std::env; use std::env;
use std::path::Path; use std::path::Path;
fn main() { fn main() {
let target = env::var("TARGET").expect("TARGET was not set"); let target = env::var("TARGET").expect("TARGET was not set");
let cfg = &mut gcc::Build::new(); let cfg = &mut cc::Build::new();
let mut profile_sources = vec!["GCDAProfiling.c", let mut profile_sources = vec!["GCDAProfiling.c",
"InstrProfiling.c", "InstrProfiling.c",

View file

@ -1373,20 +1373,20 @@ pub fn rustc_optgroups() -> Vec<RustcOptGroup> {
always = always colorize output; always = always colorize output;
never = never colorize output", "auto|always|never"), never = never colorize output", "auto|always|never"),
opt::flagopt("", "pretty", opt::opt("", "pretty",
"Pretty-print the input instead of compiling; "Pretty-print the input instead of compiling;
valid types are: `normal` (un-annotated source), valid types are: `normal` (un-annotated source),
`expanded` (crates expanded), or `expanded` (crates expanded), or
`expanded,identified` (fully parenthesized, AST nodes with IDs).", `expanded,identified` (fully parenthesized, AST nodes with IDs).",
"TYPE"), "TYPE"),
opt::flagopt("", "unpretty", opt::opt("", "unpretty",
"Present the input source, unstable (and less-pretty) variants; "Present the input source, unstable (and less-pretty) variants;
valid types are any of the types for `--pretty`, as well as: valid types are any of the types for `--pretty`, as well as:
`flowgraph=<nodeid>` (graphviz formatted flowgraph for node), `flowgraph=<nodeid>` (graphviz formatted flowgraph for node),
`everybody_loops` (all function bodies replaced with `loop {}`), `everybody_loops` (all function bodies replaced with `loop {}`),
`hir` (the HIR), `hir,identified`, or `hir` (the HIR), `hir,identified`, or
`hir,typed` (HIR with types for each node).", `hir,typed` (HIR with types for each node).",
"TYPE"), "TYPE"),
]); ]);
opts opts
} }

View file

@ -18,4 +18,4 @@ rustc_cratesio_shim = { path = "../librustc_cratesio_shim" }
[build-dependencies] [build-dependencies]
build_helper = { path = "../build_helper" } build_helper = { path = "../build_helper" }
gcc = "0.3.50" cc = "1.0"

View file

@ -8,7 +8,7 @@
// option. This file may not be copied, modified, or distributed // option. This file may not be copied, modified, or distributed
// except according to those terms. // except according to those terms.
extern crate gcc; extern crate cc;
extern crate build_helper; extern crate build_helper;
use std::process::Command; use std::process::Command;
@ -136,7 +136,7 @@ fn main() {
let mut cmd = Command::new(&llvm_config); let mut cmd = Command::new(&llvm_config);
cmd.arg("--cxxflags"); cmd.arg("--cxxflags");
let cxxflags = output(&mut cmd); let cxxflags = output(&mut cmd);
let mut cfg = gcc::Build::new(); let mut cfg = cc::Build::new();
cfg.warnings(false); cfg.warnings(false);
for flag in cxxflags.split_whitespace() { for flag in cxxflags.split_whitespace() {
// Ignore flags like `-m64` when we're doing a cross build // Ignore flags like `-m64` when we're doing a cross build

View file

@ -32,4 +32,4 @@ syntax = { path = "../libsyntax" }
syntax_pos = { path = "../libsyntax_pos" } syntax_pos = { path = "../libsyntax_pos" }
[target."cfg(windows)".dependencies] [target."cfg(windows)".dependencies]
gcc = "0.3.50" cc = "1.0"

View file

@ -125,7 +125,7 @@ pub fn get_linker(sess: &Session) -> (String, Command, Vec<(OsString, OsString)>
#[cfg(windows)] #[cfg(windows)]
pub fn msvc_link_exe_cmd(sess: &Session) -> (Command, Vec<(OsString, OsString)>) { pub fn msvc_link_exe_cmd(sess: &Session) -> (Command, Vec<(OsString, OsString)>) {
use gcc::windows_registry; use cc::windows_registry;
let target = &sess.opts.target_triple; let target = &sess.opts.target_triple;
let tool = windows_registry::find_tool(target, "link.exe"); let tool = windows_registry::find_tool(target, "link.exe");

View file

@ -61,7 +61,7 @@ extern crate syntax_pos;
extern crate rustc_errors as errors; extern crate rustc_errors as errors;
extern crate serialize; extern crate serialize;
#[cfg(windows)] #[cfg(windows)]
extern crate gcc; // Used to locate MSVC, not gcc :) extern crate cc; // Used to locate MSVC
pub use base::trans_crate; pub use base::trans_crate;

View file

@ -18,4 +18,4 @@ html-diff = "0.0.4"
[build-dependencies] [build-dependencies]
build_helper = { path = "../build_helper" } build_helper = { path = "../build_helper" }
gcc = "0.3.50" cc = "1.0"

View file

@ -9,12 +9,12 @@
// except according to those terms. // except according to those terms.
extern crate build_helper; extern crate build_helper;
extern crate gcc; extern crate cc;
fn main() { fn main() {
let src_dir = std::path::Path::new("../rt/hoedown/src"); let src_dir = std::path::Path::new("../rt/hoedown/src");
build_helper::rerun_if_changed_anything_in_dir(src_dir); build_helper::rerun_if_changed_anything_in_dir(src_dir);
let mut cfg = gcc::Build::new(); let mut cfg = cc::Build::new();
cfg.file("../rt/hoedown/src/autolink.c") cfg.file("../rt/hoedown/src/autolink.c")
.file("../rt/hoedown/src/buffer.c") .file("../rt/hoedown/src/buffer.c")
.file("../rt/hoedown/src/document.c") .file("../rt/hoedown/src/document.c")

View file

@ -36,7 +36,7 @@ rustc_tsan = { path = "../librustc_tsan" }
[build-dependencies] [build-dependencies]
build_helper = { path = "../build_helper" } build_helper = { path = "../build_helper" }
gcc = "0.3.50" cc = "1.0"
[features] [features]
backtrace = [] backtrace = []

View file

@ -11,7 +11,7 @@
#![deny(warnings)] #![deny(warnings)]
extern crate build_helper; extern crate build_helper;
extern crate gcc; extern crate cc;
use std::env; use std::env;
use std::process::Command; use std::process::Command;
@ -77,7 +77,7 @@ fn main() {
fn build_libbacktrace(host: &str, target: &str) -> Result<(), ()> { fn build_libbacktrace(host: &str, target: &str) -> Result<(), ()> {
let native = native_lib_boilerplate("libbacktrace", "libbacktrace", "backtrace", ".libs")?; let native = native_lib_boilerplate("libbacktrace", "libbacktrace", "backtrace", ".libs")?;
let compiler = gcc::Build::new().get_compiler(); let compiler = cc::Build::new().get_compiler();
// only msvc returns None for ar so unwrap is okay // only msvc returns None for ar so unwrap is okay
let ar = build_helper::cc2ar(compiler.path(), target).unwrap(); let ar = build_helper::cc2ar(compiler.path(), target).unwrap();
let mut cflags = compiler.args().iter().map(|s| s.to_str().unwrap()) let mut cflags = compiler.args().iter().map(|s| s.to_str().unwrap())