forked from qt-creator/qt-creator
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>
This commit is contained in:
@@ -92,7 +92,7 @@ QString AndroidQtVersion::invalidReason() const
|
||||
|
||||
QList<ProjectExplorer::Abi> AndroidQtVersion::detectQtAbis() const
|
||||
{
|
||||
QList<ProjectExplorer::Abi> abis = qtAbisFromLibrary(qtCorePath(versionInfo(), qtVersionString()));
|
||||
QList<ProjectExplorer::Abi> abis = qtAbisFromLibrary(qtCorePaths(versionInfo(), qtVersionString()));
|
||||
for (int i = 0; i < abis.count(); ++i) {
|
||||
abis[i] = Abi(abis.at(i).architecture(),
|
||||
abis.at(i).os(),
|
||||
|
@@ -90,7 +90,7 @@ QString IosQtVersion::invalidReason() const
|
||||
|
||||
QList<ProjectExplorer::Abi> IosQtVersion::detectQtAbis() const
|
||||
{
|
||||
QList<ProjectExplorer::Abi> abis = qtAbisFromLibrary(qtCorePath(versionInfo(), qtVersionString()));
|
||||
QList<ProjectExplorer::Abi> abis = qtAbisFromLibrary(qtCorePaths(versionInfo(), qtVersionString()));
|
||||
for (int i = 0; i < abis.count(); ++i) {
|
||||
abis[i] = Abi(abis.at(i).architecture(),
|
||||
abis.at(i).os(),
|
||||
|
@@ -90,7 +90,7 @@ void QnxAbstractQtVersion::fromMap(const QVariantMap &map)
|
||||
QList<ProjectExplorer::Abi> QnxAbstractQtVersion::detectQtAbis() const
|
||||
{
|
||||
ensureMkSpecParsed();
|
||||
return qtAbisFromLibrary(qtCorePath(versionInfo(), qtVersionString()));
|
||||
return qtAbisFromLibrary(qtCorePaths(versionInfo(), qtVersionString()));
|
||||
}
|
||||
|
||||
void QnxAbstractQtVersion::addToEnvironment(const ProjectExplorer::Kit *k, Utils::Environment &env) const
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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;
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -63,7 +63,7 @@ QString EmbeddedLinuxQtVersion::type() const
|
||||
|
||||
QList<ProjectExplorer::Abi> EmbeddedLinuxQtVersion::detectQtAbis() const
|
||||
{
|
||||
return qtAbisFromLibrary(qtCorePath(versionInfo(), qtVersionString()));
|
||||
return qtAbisFromLibrary(qtCorePaths(versionInfo(), qtVersionString()));
|
||||
}
|
||||
|
||||
QString EmbeddedLinuxQtVersion::description() const
|
||||
|
Reference in New Issue
Block a user