aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Schulz <david.schulz@qt.io>2021-04-26 15:00:26 +0200
committerDavid Schulz <david.schulz@qt.io>2021-04-27 10:39:48 +0000
commit64a15b97b7e89f164c70b4e47990e24e9cf3fd5a (patch)
tree9e028e0d84c4df8208eac4b4216af5e4f87b6dd9
parent758af0ee075004e3f3492f1d269d9686517d8e46 (diff)
ProjectExplorer: refine toolchain abi check
Filter out toolchains targeting a different word with or architecture than the Qt version. Change-Id: Iac2fb1b30d493e10dc4bd92b5585bbb9faa76d4a Reviewed-by: Alessandro Portale <alessandro.portale@qt.io> Reviewed-by: Eike Ziller <eike.ziller@qt.io>
-rw-r--r--src/plugins/qtsupport/baseqtversion.cpp7
-rw-r--r--src/plugins/qtsupport/qtkitinformation.cpp7
2 files changed, 10 insertions, 4 deletions
diff --git a/src/plugins/qtsupport/baseqtversion.cpp b/src/plugins/qtsupport/baseqtversion.cpp
index 454c0d7b01..e9feec7f2a 100644
--- a/src/plugins/qtsupport/baseqtversion.cpp
+++ b/src/plugins/qtsupport/baseqtversion.cpp
@@ -526,8 +526,11 @@ Tasks BaseQtVersion::validateKit(const Kit *k)
qtAbiString.append(' ');
qtAbiString.append(qtAbi.toString());
- if (!fullMatch)
- fullMatch = supportedAbis.contains(qtAbi);
+ if (!fullMatch) {
+ fullMatch = supportedAbis.contains(qtAbi)
+ && qtAbi.wordWidth() == targetAbi.wordWidth()
+ && qtAbi.architecture() == targetAbi.architecture();
+ }
if (!fuzzyMatch && !fullMatch) {
fuzzyMatch = Utils::anyOf(supportedAbis, [&](const Abi &abi) {
return qtAbi.isCompatibleWith(abi);
diff --git a/src/plugins/qtsupport/qtkitinformation.cpp b/src/plugins/qtsupport/qtkitinformation.cpp
index d6aca91001..153f43ac0f 100644
--- a/src/plugins/qtsupport/qtkitinformation.cpp
+++ b/src/plugins/qtsupport/qtkitinformation.cpp
@@ -224,8 +224,11 @@ void QtKitAspect::fix(Kit *k)
QList<ToolChain *> possibleTcs = ToolChainManager::toolChains([version](const ToolChain *t) {
if (!t->isValid() || t->language() != ProjectExplorer::Constants::CXX_LANGUAGE_ID)
return false;
- return Utils::anyOf(version->qtAbis(),
- [t](const Abi &qtAbi) { return t->supportedAbis().contains(qtAbi); });
+ return Utils::anyOf(version->qtAbis(), [t](const Abi &qtAbi) {
+ return t->supportedAbis().contains(qtAbi)
+ && t->targetAbi().wordWidth() == qtAbi.wordWidth()
+ && t->targetAbi().architecture() == qtAbi.architecture();
+ });
});
if (!possibleTcs.isEmpty()) {
// Prefer exact matches.