From 958672e4607acf654b0fe5f35a385e95a3042f23 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Tue, 11 Jun 2013 19:06:18 +0200 Subject: [PATCH] find qmakespecs in source directory of shadow built qt qt 5.2 does not copy the qmakespecs to the build directory any more. a fallback to the /get property variant ensures that other build types continue to work. consequently, this has no effect whatsoever on installed qt versions. (based on qtbase/214b55d5d4c8fdf975b3c36f69bac4b07d8d39d0) Task-number: QTCREATORBUG-9572 Change-Id: I9edac11f8997fcb0594d0a67419d4733dd4ed86b Reviewed-by: Mitch Curtis Reviewed-by: Daniel Teske --- src/plugins/qtsupport/baseqtversion.cpp | 8 +++++--- src/plugins/qtsupport/baseqtversion.h | 4 +++- src/shared/proparser/qmakeevaluator.cpp | 2 ++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/plugins/qtsupport/baseqtversion.cpp b/src/plugins/qtsupport/baseqtversion.cpp index 37c063cd4cd..e2062e21458 100644 --- a/src/plugins/qtsupport/baseqtversion.cpp +++ b/src/plugins/qtsupport/baseqtversion.cpp @@ -992,9 +992,11 @@ QHash BaseQtVersion::versionInfo() const return m_versionInfo; } -QString BaseQtVersion::qmakeProperty(const QHash &versionInfo, const QByteArray &name) +QString BaseQtVersion::qmakeProperty(const QHash &versionInfo, const QByteArray &name, + PropertyVariant variant) { - QString val = versionInfo.value(QString::fromLatin1(name + "/get")); + QString val = versionInfo.value(QString::fromLatin1( + name + (variant == PropertyVariantGet ? "/get" : "/src"))); if (!val.isNull()) return val; return versionInfo.value(QString::fromLatin1(name)); @@ -1354,7 +1356,7 @@ bool BaseQtVersion::queryQMakeVariables(const FileName &binary, const Environmen FileName BaseQtVersion::mkspecDirectoryFromVersionInfo(const QHash &versionInfo) { - QString dataDir = qmakeProperty(versionInfo, "QT_HOST_DATA"); + QString dataDir = qmakeProperty(versionInfo, "QT_HOST_DATA", PropertyVariantSrc); if (dataDir.isEmpty()) return FileName(); return FileName::fromUserInput(dataDir + QLatin1String("/mkspecs")); diff --git a/src/plugins/qtsupport/baseqtversion.h b/src/plugins/qtsupport/baseqtversion.h index 0728cc3ecb8..c0d14e419a9 100644 --- a/src/plugins/qtsupport/baseqtversion.h +++ b/src/plugins/qtsupport/baseqtversion.h @@ -121,7 +121,9 @@ public: // Returns the PREFIX, BINPREFIX, DOCPREFIX and similar information QHash versionInfo() const; - static QString qmakeProperty(const QHash &versionInfo, const QByteArray &name); + enum PropertyVariant { PropertyVariantGet, PropertyVariantSrc }; + static QString qmakeProperty(const QHash &versionInfo, const QByteArray &name, + PropertyVariant variant = PropertyVariantGet); QString qmakeProperty(const QByteArray &name) const; virtual void addToEnvironment(const ProjectExplorer::Kit *k, Utils::Environment &env) const; virtual Utils::Environment qmakeRunEnvironment() const; diff --git a/src/shared/proparser/qmakeevaluator.cpp b/src/shared/proparser/qmakeevaluator.cpp index e13b3e49ccc..21a0e3bd31b 100644 --- a/src/shared/proparser/qmakeevaluator.cpp +++ b/src/shared/proparser/qmakeevaluator.cpp @@ -1418,6 +1418,7 @@ void QMakeEvaluator::updateMkspecPaths() ret << m_sourceRoot + concat; ret << m_option->propertyValue(ProKey("QT_HOST_DATA/get")) + concat; + ret << m_option->propertyValue(ProKey("QT_HOST_DATA/src")) + concat; ret.removeDuplicates(); m_mkspecPaths = ret; @@ -1471,6 +1472,7 @@ void QMakeEvaluator::updateFeaturePaths() } feature_bases << (m_option->propertyValue(ProKey("QT_HOST_DATA/get")) + mkspecs_concat); + feature_bases << (m_option->propertyValue(ProKey("QT_HOST_DATA/src")) + mkspecs_concat); foreach (const QString &fb, feature_bases) { foreach (const ProString &sfx, values(ProKey("QMAKE_PLATFORM")))