From 64a15b97b7e89f164c70b4e47990e24e9cf3fd5a Mon Sep 17 00:00:00 2001 From: David Schulz Date: Mon, 26 Apr 2021 15:00:26 +0200 Subject: [PATCH] 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 Reviewed-by: Eike Ziller --- src/plugins/qtsupport/baseqtversion.cpp | 7 +++++-- 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 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.