replace cc_detect::cc2ar with cc::try_get_archiver
Signed-off-by: onur-ozkan <work@onurozkan.dev>
This commit is contained in:
parent
414482f6a0
commit
e0421f8f61
2 changed files with 2 additions and 145 deletions
|
|
@ -22,43 +22,13 @@
|
|||
//! everything.
|
||||
|
||||
use std::collections::HashSet;
|
||||
use std::iter;
|
||||
use std::path::{Path, PathBuf};
|
||||
use std::{env, iter};
|
||||
|
||||
use crate::core::config::TargetSelection;
|
||||
use crate::utils::exec::{BootstrapCommand, command};
|
||||
use crate::{Build, CLang, GitRepo};
|
||||
|
||||
/// Finds archiver tool for the given target if possible.
|
||||
/// FIXME(onur-ozkan): This logic should be replaced by calling into the `cc` crate.
|
||||
fn cc2ar(cc: &Path, target: TargetSelection, default_ar: PathBuf) -> Option<PathBuf> {
|
||||
if let Some(ar) = env::var_os(format!("AR_{}", target.triple.replace('-', "_"))) {
|
||||
Some(PathBuf::from(ar))
|
||||
} else if let Some(ar) = env::var_os("AR") {
|
||||
Some(PathBuf::from(ar))
|
||||
} else if target.is_msvc() {
|
||||
None
|
||||
} else if target.contains("musl") || target.contains("openbsd") {
|
||||
Some(PathBuf::from("ar"))
|
||||
} else if target.contains("vxworks") {
|
||||
Some(PathBuf::from("wr-ar"))
|
||||
} else if target.contains("-nto-") {
|
||||
if target.starts_with("i586") {
|
||||
Some(PathBuf::from("ntox86-ar"))
|
||||
} else if target.starts_with("aarch64") {
|
||||
Some(PathBuf::from("ntoaarch64-ar"))
|
||||
} else if target.starts_with("x86_64") {
|
||||
Some(PathBuf::from("ntox86_64-ar"))
|
||||
} else {
|
||||
panic!("Unknown architecture, cannot determine archiver for Neutrino QNX");
|
||||
}
|
||||
} else if target.contains("android") || target.contains("-wasi") {
|
||||
Some(cc.parent().unwrap().join(PathBuf::from("llvm-ar")))
|
||||
} else {
|
||||
Some(default_ar)
|
||||
}
|
||||
}
|
||||
|
||||
/// Creates and configures a new [`cc::Build`] instance for the given target.
|
||||
fn new_cc_build(build: &Build, target: TargetSelection) -> cc::Build {
|
||||
let mut cfg = cc::Build::new();
|
||||
|
|
@ -140,7 +110,7 @@ pub fn find_target(build: &Build, target: TargetSelection) {
|
|||
let ar = if let ar @ Some(..) = config.and_then(|c| c.ar.clone()) {
|
||||
ar
|
||||
} else {
|
||||
cc2ar(compiler.path(), target, PathBuf::from(cfg.get_archiver().get_program()))
|
||||
cfg.try_get_archiver().map(|c| PathBuf::from(c.get_program())).ok()
|
||||
};
|
||||
|
||||
build.cc.borrow_mut().insert(target, compiler.clone());
|
||||
|
|
|
|||
|
|
@ -5,119 +5,6 @@ use super::*;
|
|||
use crate::core::config::{Target, TargetSelection};
|
||||
use crate::{Build, Config, Flags};
|
||||
|
||||
#[test]
|
||||
fn test_cc2ar_env_specific() {
|
||||
let triple = "x86_64-unknown-linux-gnu";
|
||||
let key = "AR_x86_64_unknown_linux_gnu";
|
||||
// SAFETY: bootstrap tests run on a single thread
|
||||
unsafe { env::set_var(key, "custom-ar") };
|
||||
let target = TargetSelection::from_user(triple);
|
||||
let cc = Path::new("/usr/bin/clang");
|
||||
let default_ar = PathBuf::from("default-ar");
|
||||
let result = cc2ar(cc, target, default_ar);
|
||||
// SAFETY: bootstrap tests run on a single thread
|
||||
unsafe { env::remove_var(key) };
|
||||
assert_eq!(result, Some(PathBuf::from("custom-ar")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_cc2ar_musl() {
|
||||
let triple = "x86_64-unknown-linux-musl";
|
||||
// SAFETY: bootstrap tests run on a single thread
|
||||
unsafe { env::remove_var("AR_x86_64_unknown_linux_musl") };
|
||||
// SAFETY: bootstrap tests run on a single thread
|
||||
unsafe { env::remove_var("AR") };
|
||||
let target = TargetSelection::from_user(triple);
|
||||
let cc = Path::new("/usr/bin/clang");
|
||||
let default_ar = PathBuf::from("default-ar");
|
||||
let result = cc2ar(cc, target, default_ar);
|
||||
assert_eq!(result, Some(PathBuf::from("ar")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_cc2ar_openbsd() {
|
||||
let triple = "x86_64-unknown-openbsd";
|
||||
// SAFETY: bootstrap tests run on a single thread
|
||||
unsafe { env::remove_var("AR_x86_64_unknown_openbsd") };
|
||||
// SAFETY: bootstrap tests run on a single thread
|
||||
unsafe { env::remove_var("AR") };
|
||||
let target = TargetSelection::from_user(triple);
|
||||
let cc = Path::new("/usr/bin/cc");
|
||||
let default_ar = PathBuf::from("default-ar");
|
||||
let result = cc2ar(cc, target, default_ar);
|
||||
assert_eq!(result, Some(PathBuf::from("ar")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_cc2ar_vxworks() {
|
||||
let triple = "armv7-wrs-vxworks";
|
||||
// SAFETY: bootstrap tests run on a single thread
|
||||
unsafe { env::remove_var("AR_armv7_wrs_vxworks") };
|
||||
// SAFETY: bootstrap tests run on a single thread
|
||||
unsafe { env::remove_var("AR") };
|
||||
let target = TargetSelection::from_user(triple);
|
||||
let cc = Path::new("/usr/bin/clang");
|
||||
let default_ar = PathBuf::from("default-ar");
|
||||
let result = cc2ar(cc, target, default_ar);
|
||||
assert_eq!(result, Some(PathBuf::from("wr-ar")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_cc2ar_nto_i586() {
|
||||
let triple = "i586-unknown-nto-something";
|
||||
// SAFETY: bootstrap tests run on a single thread
|
||||
unsafe { env::remove_var("AR_i586_unknown_nto_something") };
|
||||
// SAFETY: bootstrap tests run on a single thread
|
||||
unsafe { env::remove_var("AR") };
|
||||
let target = TargetSelection::from_user(triple);
|
||||
let cc = Path::new("/usr/bin/clang");
|
||||
let default_ar = PathBuf::from("default-ar");
|
||||
let result = cc2ar(cc, target, default_ar);
|
||||
assert_eq!(result, Some(PathBuf::from("ntox86-ar")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_cc2ar_nto_aarch64() {
|
||||
let triple = "aarch64-unknown-nto-something";
|
||||
// SAFETY: bootstrap tests run on a single thread
|
||||
unsafe { env::remove_var("AR_aarch64_unknown_nto_something") };
|
||||
// SAFETY: bootstrap tests run on a single thread
|
||||
unsafe { env::remove_var("AR") };
|
||||
let target = TargetSelection::from_user(triple);
|
||||
let cc = Path::new("/usr/bin/clang");
|
||||
let default_ar = PathBuf::from("default-ar");
|
||||
let result = cc2ar(cc, target, default_ar);
|
||||
assert_eq!(result, Some(PathBuf::from("ntoaarch64-ar")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_cc2ar_nto_x86_64() {
|
||||
let triple = "x86_64-unknown-nto-something";
|
||||
// SAFETY: bootstrap tests run on a single thread
|
||||
unsafe { env::remove_var("AR_x86_64_unknown_nto_something") };
|
||||
// SAFETY: bootstrap tests run on a single thread
|
||||
unsafe { env::remove_var("AR") };
|
||||
let target = TargetSelection::from_user(triple);
|
||||
let cc = Path::new("/usr/bin/clang");
|
||||
let default_ar = PathBuf::from("default-ar");
|
||||
let result = cc2ar(cc, target, default_ar);
|
||||
assert_eq!(result, Some(PathBuf::from("ntox86_64-ar")));
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[should_panic(expected = "Unknown architecture, cannot determine archiver for Neutrino QNX")]
|
||||
fn test_cc2ar_nto_unknown() {
|
||||
let triple = "powerpc-unknown-nto-something";
|
||||
// SAFETY: bootstrap tests run on a single thread
|
||||
unsafe { env::remove_var("AR_powerpc_unknown_nto_something") };
|
||||
// SAFETY: bootstrap tests run on a single thread
|
||||
unsafe { env::remove_var("AR") };
|
||||
let target = TargetSelection::from_user(triple);
|
||||
let cc = Path::new("/usr/bin/clang");
|
||||
let default_ar = PathBuf::from("default-ar");
|
||||
let _ = cc2ar(cc, target, default_ar);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_ndk_compiler_c() {
|
||||
let ndk_path = PathBuf::from("/ndk");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue