Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit e0421f8

Browse filesBrowse files
committed
replace cc_detect::cc2ar with cc::try_get_archiver
Signed-off-by: onur-ozkan <work@onurozkan.dev>
1 parent 414482f commit e0421f8
Copy full SHA for e0421f8

File tree

2 files changed

+2
-145
lines changed
Filter options

2 files changed

+2
-145
lines changed

‎src/bootstrap/src/utils/cc_detect.rs

Copy file name to clipboardExpand all lines: src/bootstrap/src/utils/cc_detect.rs
+2-32
Original file line numberDiff line numberDiff line change
@@ -22,43 +22,13 @@
2222
//! everything.
2323
2424
use std::collections::HashSet;
25+
use std::iter;
2526
use std::path::{Path, PathBuf};
26-
use std::{env, iter};
2727

2828
use crate::core::config::TargetSelection;
2929
use crate::utils::exec::{BootstrapCommand, command};
3030
use crate::{Build, CLang, GitRepo};
3131

32-
/// Finds archiver tool for the given target if possible.
33-
/// FIXME(onur-ozkan): This logic should be replaced by calling into the `cc` crate.
34-
fn cc2ar(cc: &Path, target: TargetSelection, default_ar: PathBuf) -> Option<PathBuf> {
35-
if let Some(ar) = env::var_os(format!("AR_{}", target.triple.replace('-', "_"))) {
36-
Some(PathBuf::from(ar))
37-
} else if let Some(ar) = env::var_os("AR") {
38-
Some(PathBuf::from(ar))
39-
} else if target.is_msvc() {
40-
None
41-
} else if target.contains("musl") || target.contains("openbsd") {
42-
Some(PathBuf::from("ar"))
43-
} else if target.contains("vxworks") {
44-
Some(PathBuf::from("wr-ar"))
45-
} else if target.contains("-nto-") {
46-
if target.starts_with("i586") {
47-
Some(PathBuf::from("ntox86-ar"))
48-
} else if target.starts_with("aarch64") {
49-
Some(PathBuf::from("ntoaarch64-ar"))
50-
} else if target.starts_with("x86_64") {
51-
Some(PathBuf::from("ntox86_64-ar"))
52-
} else {
53-
panic!("Unknown architecture, cannot determine archiver for Neutrino QNX");
54-
}
55-
} else if target.contains("android") || target.contains("-wasi") {
56-
Some(cc.parent().unwrap().join(PathBuf::from("llvm-ar")))
57-
} else {
58-
Some(default_ar)
59-
}
60-
}
61-
6232
/// Creates and configures a new [`cc::Build`] instance for the given target.
6333
fn new_cc_build(build: &Build, target: TargetSelection) -> cc::Build {
6434
let mut cfg = cc::Build::new();
@@ -140,7 +110,7 @@ pub fn find_target(build: &Build, target: TargetSelection) {
140110
let ar = if let ar @ Some(..) = config.and_then(|c| c.ar.clone()) {
141111
ar
142112
} else {
143-
cc2ar(compiler.path(), target, PathBuf::from(cfg.get_archiver().get_program()))
113+
cfg.try_get_archiver().map(|c| PathBuf::from(c.get_program())).ok()
144114
};
145115

146116
build.cc.borrow_mut().insert(target, compiler.clone());

‎src/bootstrap/src/utils/cc_detect/tests.rs

Copy file name to clipboardExpand all lines: src/bootstrap/src/utils/cc_detect/tests.rs
-113
Original file line numberDiff line numberDiff line change
@@ -5,119 +5,6 @@ use super::*;
55
use crate::core::config::{Target, TargetSelection};
66
use crate::{Build, Config, Flags};
77

8-
#[test]
9-
fn test_cc2ar_env_specific() {
10-
let triple = "x86_64-unknown-linux-gnu";
11-
let key = "AR_x86_64_unknown_linux_gnu";
12-
// SAFETY: bootstrap tests run on a single thread
13-
unsafe { env::set_var(key, "custom-ar") };
14-
let target = TargetSelection::from_user(triple);
15-
let cc = Path::new("/usr/bin/clang");
16-
let default_ar = PathBuf::from("default-ar");
17-
let result = cc2ar(cc, target, default_ar);
18-
// SAFETY: bootstrap tests run on a single thread
19-
unsafe { env::remove_var(key) };
20-
assert_eq!(result, Some(PathBuf::from("custom-ar")));
21-
}
22-
23-
#[test]
24-
fn test_cc2ar_musl() {
25-
let triple = "x86_64-unknown-linux-musl";
26-
// SAFETY: bootstrap tests run on a single thread
27-
unsafe { env::remove_var("AR_x86_64_unknown_linux_musl") };
28-
// SAFETY: bootstrap tests run on a single thread
29-
unsafe { env::remove_var("AR") };
30-
let target = TargetSelection::from_user(triple);
31-
let cc = Path::new("/usr/bin/clang");
32-
let default_ar = PathBuf::from("default-ar");
33-
let result = cc2ar(cc, target, default_ar);
34-
assert_eq!(result, Some(PathBuf::from("ar")));
35-
}
36-
37-
#[test]
38-
fn test_cc2ar_openbsd() {
39-
let triple = "x86_64-unknown-openbsd";
40-
// SAFETY: bootstrap tests run on a single thread
41-
unsafe { env::remove_var("AR_x86_64_unknown_openbsd") };
42-
// SAFETY: bootstrap tests run on a single thread
43-
unsafe { env::remove_var("AR") };
44-
let target = TargetSelection::from_user(triple);
45-
let cc = Path::new("/usr/bin/cc");
46-
let default_ar = PathBuf::from("default-ar");
47-
let result = cc2ar(cc, target, default_ar);
48-
assert_eq!(result, Some(PathBuf::from("ar")));
49-
}
50-
51-
#[test]
52-
fn test_cc2ar_vxworks() {
53-
let triple = "armv7-wrs-vxworks";
54-
// SAFETY: bootstrap tests run on a single thread
55-
unsafe { env::remove_var("AR_armv7_wrs_vxworks") };
56-
// SAFETY: bootstrap tests run on a single thread
57-
unsafe { env::remove_var("AR") };
58-
let target = TargetSelection::from_user(triple);
59-
let cc = Path::new("/usr/bin/clang");
60-
let default_ar = PathBuf::from("default-ar");
61-
let result = cc2ar(cc, target, default_ar);
62-
assert_eq!(result, Some(PathBuf::from("wr-ar")));
63-
}
64-
65-
#[test]
66-
fn test_cc2ar_nto_i586() {
67-
let triple = "i586-unknown-nto-something";
68-
// SAFETY: bootstrap tests run on a single thread
69-
unsafe { env::remove_var("AR_i586_unknown_nto_something") };
70-
// SAFETY: bootstrap tests run on a single thread
71-
unsafe { env::remove_var("AR") };
72-
let target = TargetSelection::from_user(triple);
73-
let cc = Path::new("/usr/bin/clang");
74-
let default_ar = PathBuf::from("default-ar");
75-
let result = cc2ar(cc, target, default_ar);
76-
assert_eq!(result, Some(PathBuf::from("ntox86-ar")));
77-
}
78-
79-
#[test]
80-
fn test_cc2ar_nto_aarch64() {
81-
let triple = "aarch64-unknown-nto-something";
82-
// SAFETY: bootstrap tests run on a single thread
83-
unsafe { env::remove_var("AR_aarch64_unknown_nto_something") };
84-
// SAFETY: bootstrap tests run on a single thread
85-
unsafe { env::remove_var("AR") };
86-
let target = TargetSelection::from_user(triple);
87-
let cc = Path::new("/usr/bin/clang");
88-
let default_ar = PathBuf::from("default-ar");
89-
let result = cc2ar(cc, target, default_ar);
90-
assert_eq!(result, Some(PathBuf::from("ntoaarch64-ar")));
91-
}
92-
93-
#[test]
94-
fn test_cc2ar_nto_x86_64() {
95-
let triple = "x86_64-unknown-nto-something";
96-
// SAFETY: bootstrap tests run on a single thread
97-
unsafe { env::remove_var("AR_x86_64_unknown_nto_something") };
98-
// SAFETY: bootstrap tests run on a single thread
99-
unsafe { env::remove_var("AR") };
100-
let target = TargetSelection::from_user(triple);
101-
let cc = Path::new("/usr/bin/clang");
102-
let default_ar = PathBuf::from("default-ar");
103-
let result = cc2ar(cc, target, default_ar);
104-
assert_eq!(result, Some(PathBuf::from("ntox86_64-ar")));
105-
}
106-
107-
#[test]
108-
#[should_panic(expected = "Unknown architecture, cannot determine archiver for Neutrino QNX")]
109-
fn test_cc2ar_nto_unknown() {
110-
let triple = "powerpc-unknown-nto-something";
111-
// SAFETY: bootstrap tests run on a single thread
112-
unsafe { env::remove_var("AR_powerpc_unknown_nto_something") };
113-
// SAFETY: bootstrap tests run on a single thread
114-
unsafe { env::remove_var("AR") };
115-
let target = TargetSelection::from_user(triple);
116-
let cc = Path::new("/usr/bin/clang");
117-
let default_ar = PathBuf::from("default-ar");
118-
let _ = cc2ar(cc, target, default_ar);
119-
}
120-
1218
#[test]
1229
fn test_ndk_compiler_c() {
12310
let ndk_path = PathBuf::from("/ndk");

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.