diff options
author | David Schulz <david.schulz@qt.io> | 2021-04-26 15:00:26 +0200 |
---|---|---|
committer | David Schulz <david.schulz@qt.io> | 2021-04-27 10:39:48 +0000 |
commit | 64a15b97b7e89f164c70b4e47990e24e9cf3fd5a (patch) | |
tree | 9e028e0d84c4df8208eac4b4216af5e4f87b6dd9 | |
parent | 758af0ee075004e3f3492f1d269d9686517d8e46 (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.cpp | 7 | ||||
-rw-r--r-- | src/plugins/qtsupport/qtkitinformation.cpp | 7 |
2 files changed, 10 insertions, 4 deletions
diff --git a/src/plugins/qtsupport/baseqtversion.cpp b/src/plugins/qtsupport/baseqtversion.cpp index 454c0d7b01f..e9feec7f2a4 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 d6aca91001a..153f43ac0f1 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. |