diff --git a/src/lib.rs b/src/lib.rs
index e3a2b98b..9192ff35 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1991,10 +1991,10 @@ impl Build {
     }
 
     fn assemble_progressive(&self, dst: &Path, objs: &[PathBuf]) -> Result<(), Error> {
-        let target = self.get_target()?;
+        let (mut cmd, program) = self.get_ar()?;
 
-        if target.contains("msvc") {
-            let (mut cmd, program) = self.get_ar()?;
+        // `get_ar()` will never return "lib" or such
+        if program.eq_ignore_ascii_case("lib.exe") {
             let mut out = OsString::from("-out:");
             out.push(dst);
             cmd.arg(out).arg("-nologo");
@@ -2009,8 +2009,6 @@ impl Build {
             cmd.args(objs);
             run(&mut cmd, &program)?;
         } else {
-            let (mut ar, cmd) = self.get_ar()?;
-
             // Set an environment variable to tell the OSX archiver to ensure
             // that all dates listed in the archive are zero, improving
             // determinism of builds. AFAIK there's not really official
@@ -2033,11 +2031,11 @@ impl Build {
             //
             // In any case if this doesn't end up getting read, it shouldn't
             // cause that many issues!
-            ar.env("ZERO_AR_DATE", "1");
+            cmd.env("ZERO_AR_DATE", "1");
             for flag in self.ar_flags.iter() {
-                ar.arg(flag);
+                cmd.arg(flag);
             }
-            run(ar.arg("cq").arg(dst).args(objs), &cmd)?;
+            run(cmd.arg("cq").arg(dst).args(objs), &program)?;
         }
 
         Ok(())