Skip to content

Commit a5cfddc

Browse files
committed
Check for ar/strip in PATH before panic.
It's possible they located in another dir than compiler bindir.
1 parent 304f7a1 commit a5cfddc

File tree

1 file changed

+21
-28
lines changed

1 file changed

+21
-28
lines changed

src/lib.rs

Lines changed: 21 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -147,42 +147,35 @@ impl Build {
147147

148148
// Find ar
149149
if env::var_os("TARGET_AR").is_none() {
150-
if bindir.join(format!("{prefix}ar")).is_file() {
151-
let mut ar = bindir.join(format!("{prefix}ar")).into_os_string();
152-
ar.push(" rcus");
153-
make.env("TARGET_AR", ar);
154-
} else if compiler.is_like_clang() {
155-
if bindir.join("llvm-ar").is_file() {
156-
let mut ar = bindir.join("llvm-ar").into_os_string();
157-
ar.push(" rcus");
158-
make.env("TARGET_AR", ar);
159-
} else {
160-
panic!("cannot find {prefix}ar or llvm-ar");
161-
}
150+
let mut ar = if bindir.join(format!("{prefix}ar")).is_file() {
151+
bindir.join(format!("{prefix}ar")).into_os_string()
152+
} else if compiler.is_like_clang() && bindir.join("llvm-ar").is_file() {
153+
bindir.join("llvm-ar").into_os_string()
162154
} else if compiler.is_like_gnu() && bindir.join("ar").is_file() {
163-
let mut ar = bindir.join("ar").into_os_string();
164-
ar.push(" rcus");
165-
make.env("TARGET_AR", ar);
155+
bindir.join("ar").into_os_string()
156+
} else if let Ok(ar) = which::which(format!("{prefix}ar")) {
157+
ar.into_os_string()
166158
} else {
167-
panic!("cannot find {prefix}ar");
168-
}
159+
panic!("cannot find {prefix}ar")
160+
};
161+
ar.push(" rcus");
162+
make.env("TARGET_AR", ar);
169163
}
170164

171165
// Find strip
172166
if env::var_os("TARGET_STRIP").is_none() {
173-
if bindir.join(format!("{prefix}strip")).is_file() {
174-
make.env("TARGET_STRIP", bindir.join(format!("{prefix}strip")));
175-
} else if compiler.is_like_clang() {
176-
if bindir.join("llvm-strip").is_file() {
177-
make.env("TARGET_STRIP", bindir.join("llvm-strip"));
178-
} else {
179-
panic!("cannot find {prefix}strip or llvm-strip");
180-
}
167+
let strip = if bindir.join(format!("{prefix}strip")).is_file() {
168+
bindir.join(format!("{prefix}strip"))
169+
} else if compiler.is_like_clang() && bindir.join("llvm-strip").is_file() {
170+
bindir.join("llvm-strip")
181171
} else if compiler.is_like_gnu() && bindir.join("strip").is_file() {
182-
make.env("TARGET_STRIP", bindir.join("strip"));
172+
bindir.join("strip")
173+
} else if let Ok(strip) = which::which(format!("{prefix}strip")) {
174+
strip
183175
} else {
184-
panic!("cannot find {prefix}strip");
185-
}
176+
panic!("cannot find {prefix}strip")
177+
};
178+
make.env("TARGET_STRIP", strip);
186179
}
187180

188181
let mut xcflags = vec!["-fPIC"];

0 commit comments

Comments
 (0)