diff options
author | Fawzi Mohamed <fawzi.mohamed@digia.com> | 2013-10-31 19:35:39 +0100 |
---|---|---|
committer | Fawzi Mohamed <fawzi.mohamed@digia.com> | 2013-11-01 12:31:23 +0100 |
commit | 08bb1471531fb3039f6c223f51921dee936c197c (patch) | |
tree | 6ab7f87cd7e613c0fe9657c71147cbde33ec8de4 /src/plugins/qtsupport | |
parent | c56a106dbeb87239272b21c7290f705b8a7e3b19 (diff) | |
download | qt-creator-08bb1471531fb3039f6c223f51921dee936c197c.tar.gz |
qtsupport: collect the Abi of all QtCore libraries
ios now uses libQt5Core_iphonesimulator.a and libQt5Core.a for device
and simulator, this changes detects both architectures.
Change-Id: I0e2883c06355eb2b75aeeba4365c8aea14bb8ced
Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com>
Diffstat (limited to 'src/plugins/qtsupport')
-rw-r--r-- | src/plugins/qtsupport/baseqtversion.cpp | 33 | ||||
-rw-r--r-- | src/plugins/qtsupport/baseqtversion.h | 5 | ||||
-rw-r--r-- | src/plugins/qtsupport/desktopqtversion.cpp | 2 | ||||
-rw-r--r-- | src/plugins/qtsupport/simulatorqtversion.cpp | 2 |
4 files changed, 23 insertions, 19 deletions
diff --git a/src/plugins/qtsupport/baseqtversion.cpp b/src/plugins/qtsupport/baseqtversion.cpp index 7e08dc3493..c8c0d94236 100644 --- a/src/plugins/qtsupport/baseqtversion.cpp +++ b/src/plugins/qtsupport/baseqtversion.cpp @@ -1517,13 +1517,14 @@ void BaseQtVersion::buildDebuggingHelper(ToolChain *tc, int tools) ProgressManager::addTask(task, taskName, "Qt::BuildHelpers"); } -FileName BaseQtVersion::qtCorePath(const QHash<QString,QString> &versionInfo, const QString &versionString) +QList<FileName> BaseQtVersion::qtCorePaths(const QHash<QString,QString> &versionInfo, const QString &versionString) { QStringList dirs; dirs << qmakeProperty(versionInfo, "QT_INSTALL_LIBS") << qmakeProperty(versionInfo, "QT_INSTALL_BINS"); - QFileInfoList staticLibs; + QList<FileName> staticLibs; + QList<FileName> dynamicLibs; foreach (const QString &dir, dirs) { if (dir.isEmpty()) continue; @@ -1536,33 +1537,35 @@ FileName BaseQtVersion::qtCorePath(const QHash<QString,QString> &versionInfo, co && file.endsWith(QLatin1String(".framework"))) { // handle Framework FileName lib(info); - lib.appendPath(file.left(file.lastIndexOf(QLatin1Char('.')))); - return lib; - } - if (info.isReadable()) { + dynamicLibs.append(lib.appendPath(file.left(file.lastIndexOf(QLatin1Char('.'))))); + } else if (info.isReadable()) { if (file.startsWith(QLatin1String("libQtCore")) || file.startsWith(QLatin1String("libQt5Core")) || file.startsWith(QLatin1String("QtCore")) || file.startsWith(QLatin1String("Qt5Core"))) { - // Only handle static libs if we can not find dynamic ones: if (file.endsWith(QLatin1String(".a")) || file.endsWith(QLatin1String(".lib"))) - staticLibs.append(info); + staticLibs.append(FileName(info)); else if (file.endsWith(QLatin1String(".dll")) || file.endsWith(QString::fromLatin1(".so.") + versionString) || file.endsWith(QLatin1String(".so")) || file.endsWith(QLatin1Char('.') + versionString + QLatin1String(".dylib"))) - return FileName(info); + dynamicLibs.append(FileName(info)); } } } } - // Return path to first static library found: - if (!staticLibs.isEmpty()) - return FileName(staticLibs.at(0)); - return FileName(); + // Only handle static libs if we can not find dynamic ones: + if (dynamicLibs.isEmpty()) + return staticLibs; + return dynamicLibs; } -QList<Abi> BaseQtVersion::qtAbisFromLibrary(const FileName &coreLibrary) +QList<Abi> BaseQtVersion::qtAbisFromLibrary(const QList<FileName> &coreLibraries) { - return Abi::abisOfBinary(coreLibrary); + QList<Abi> res; + foreach (const FileName &library, coreLibraries) + foreach (const Abi &abi, Abi::abisOfBinary(library)) + if (!res.contains(abi)) + res.append(abi); + return res; } diff --git a/src/plugins/qtsupport/baseqtversion.h b/src/plugins/qtsupport/baseqtversion.h index 591717d90f..40bb590812 100644 --- a/src/plugins/qtsupport/baseqtversion.h +++ b/src/plugins/qtsupport/baseqtversion.h @@ -247,8 +247,9 @@ protected: virtual QList<ProjectExplorer::Task> reportIssuesImpl(const QString &proFile, const QString &buildDir) const; // helper function for desktop and simulator to figure out the supported abis based on the libraries - static Utils::FileName qtCorePath(const QHash<QString,QString> &versionInfo, const QString &versionString); - static QList<ProjectExplorer::Abi> qtAbisFromLibrary(const Utils::FileName &coreLibrary); + static QList<Utils::FileName> qtCorePaths(const QHash<QString,QString> &versionInfo, + const QString &versionString); + static QList<ProjectExplorer::Abi> qtAbisFromLibrary(const QList<Utils::FileName> &coreLibraries); void ensureMkSpecParsed() const; virtual void parseMkSpec(ProFileEvaluator *) const; diff --git a/src/plugins/qtsupport/desktopqtversion.cpp b/src/plugins/qtsupport/desktopqtversion.cpp index 8e4943fbe2..dbb2d6dc48 100644 --- a/src/plugins/qtsupport/desktopqtversion.cpp +++ b/src/plugins/qtsupport/desktopqtversion.cpp @@ -76,7 +76,7 @@ QStringList DesktopQtVersion::warningReason() const QList<ProjectExplorer::Abi> DesktopQtVersion::detectQtAbis() const { - return qtAbisFromLibrary(qtCorePath(versionInfo(), qtVersionString())); + return qtAbisFromLibrary(qtCorePaths(versionInfo(), qtVersionString())); } QString DesktopQtVersion::description() const diff --git a/src/plugins/qtsupport/simulatorqtversion.cpp b/src/plugins/qtsupport/simulatorqtversion.cpp index 8c8a73e63e..de77497610 100644 --- a/src/plugins/qtsupport/simulatorqtversion.cpp +++ b/src/plugins/qtsupport/simulatorqtversion.cpp @@ -77,7 +77,7 @@ QStringList SimulatorQtVersion::warningReason() const QList<ProjectExplorer::Abi> SimulatorQtVersion::detectQtAbis() const { ensureMkSpecParsed(); - return qtAbisFromLibrary(qtCorePath(versionInfo(), qtVersionString())); + return qtAbisFromLibrary(qtCorePaths(versionInfo(), qtVersionString())); } QString SimulatorQtVersion::description() const |