about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/build_helper/lib.rs12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/build_helper/lib.rs b/src/build_helper/lib.rs
index 092a1cabc74..8e1da69cf02 100644
--- a/src/build_helper/lib.rs
+++ b/src/build_helper/lib.rs
@@ -43,10 +43,16 @@ pub fn cc2ar(cc: &Path, target: &str) -> PathBuf {
     if target.contains("musl") || target.contains("msvc") {
         PathBuf::from("ar")
     } else {
+        let parent = cc.parent().unwrap();
         let file = cc.file_name().unwrap().to_str().unwrap();
-        cc.parent().unwrap().join(file.replace("gcc", "ar")
-                                      .replace("cc", "ar")
-                                      .replace("clang", "ar"))
+        for suffix in &["gcc", "cc", "clang"] {
+            if let Some(idx) = file.rfind(suffix) {
+                let mut file = file[..idx].to_owned();
+                file.push_str("ar");
+                return parent.join(&file);
+            }
+        }
+        parent.join(file)
     }
 }