From f90a4d2ee1632c106ee6f19dd3f5e2c7dd550bcd Mon Sep 17 00:00:00 2001
From: Tobias Hunger <tobias.hunger@nokia.com>
Date: Fri, 6 May 2011 17:56:21 +0200
Subject: [PATCH] Fix ABI detection of static mingw libraries on windows

Task-number: QTCREATORBUG-4771
(cherry picked from commit fcf82b74b650238e4bdcda19fe45833e7a2b0e74)
---
 src/plugins/projectexplorer/abi.cpp | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/src/plugins/projectexplorer/abi.cpp b/src/plugins/projectexplorer/abi.cpp
index 33ccbdb3f98..df264a7f91a 100644
--- a/src/plugins/projectexplorer/abi.cpp
+++ b/src/plugins/projectexplorer/abi.cpp
@@ -506,8 +506,6 @@ QList<Abi> Abi::abisOfBinary(const QString &path)
     if (!f.exists())
         return tmp;
 
-    bool windowsStatic = path.endsWith(QLatin1String(".lib"));
-
     f.open(QFile::ReadOnly);
     QByteArray data = f.read(1024);
     if (data.size() >= 67
@@ -534,12 +532,11 @@ QList<Abi> Abi::abisOfBinary(const QString &path)
 
             int toSkip = 60 + fileNameOffset;
             offset += fileLength.toInt() + 60 /* header */;
-            if (windowsStatic) {
-                if (fileName == QLatin1String("/0              "))
-                    tmp = parseCoffHeader(data.mid(toSkip, 20));
-            } else {
-                tmp.append(abiOf(data.mid(toSkip)));
-            }
+
+            tmp.append(abiOf(data.mid(toSkip)));
+            if (tmp.isEmpty() && fileName == QLatin1String("/0              "))
+                tmp = parseCoffHeader(data.mid(toSkip, 20)); // This might be windws...
+
             if (!tmp.isEmpty()
                     && tmp.at(0).binaryFormat() != Abi::MachOFormat)
                 break;
@@ -606,6 +603,9 @@ void ProjectExplorer::ProjectExplorerPlugin::testAbiOfBinary_data()
     QTest::newRow("static QtCore: win msvc2008 (debug)")
             << QString::fromLatin1("%1/abi/static/win-msvc2008-debug.lib").arg(prefix)
             << (QStringList() << QString::fromLatin1("x86-windows-unknown-pe-32bit"));
+    QTest::newRow("static QtCore: win mingw")
+            << QString::fromLatin1("%1/abi/static/win-mingw.a").arg(prefix)
+            << (QStringList() << QString::fromLatin1("x86-windows-unknown-pe-32bit"));
     QTest::newRow("static QtCore: mac (debug)")
             << QString::fromLatin1("%1/abi/static/mac-32bit-debug.a").arg(prefix)
             << (QStringList() << QString::fromLatin1("x86-macos-generic-mach_o-32bit"));
-- 
GitLab