forked from qt-creator/qt-creator
ToolChainKitInformation: Fix abi-based toolchain selection
This broke when multiple toolchain support was added to kits. Change-Id: Ibdd4942a4fe314a5dee727a41a834676b894525d Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
@@ -184,18 +184,29 @@ void ToolChainKitInformation::fix(Kit *k)
|
|||||||
void ToolChainKitInformation::setup(Kit *k)
|
void ToolChainKitInformation::setup(Kit *k)
|
||||||
{
|
{
|
||||||
QTC_ASSERT(ToolChainManager::isLoaded(), return);
|
QTC_ASSERT(ToolChainManager::isLoaded(), return);
|
||||||
const QByteArray id = k->value(ToolChainKitInformation::id()).toByteArray();
|
const QVariantMap value = readValue(k);
|
||||||
if (id.isEmpty())
|
const QList<ToolChain *> knownTcs = ToolChainManager::toolChains();
|
||||||
return;
|
|
||||||
|
|
||||||
ToolChain *tc = ToolChainManager::findToolChain(id);
|
for (auto i = value.constBegin(); i != value.constEnd(); ++i) {
|
||||||
if (tc)
|
ToolChain::Language l
|
||||||
return;
|
= Utils::findOr(ToolChain::allLanguages(), ToolChain::Language::None,
|
||||||
|
[i](ToolChain::Language l) {
|
||||||
|
return ToolChain::languageId(l) == i.key();
|
||||||
|
});
|
||||||
|
if (l == ToolChain::Language::None)
|
||||||
|
continue;
|
||||||
|
|
||||||
// ID is not found: Might be an ABI string...
|
const QByteArray id = i.value().toByteArray();
|
||||||
foreach (ToolChain *current, ToolChainManager::toolChains()) {
|
ToolChain *tc = ToolChainManager::findToolChain(id);
|
||||||
if (current->targetAbi().toString() == QString::fromUtf8(id))
|
if (tc)
|
||||||
return setToolChain(k, current);
|
continue;
|
||||||
|
|
||||||
|
// ID is not found: Might be an ABI string...
|
||||||
|
const QString abi = QString::fromUtf8(id);
|
||||||
|
tc = Utils::findOrDefault(knownTcs, [abi, l](ToolChain *t) {
|
||||||
|
return t->targetAbi().toString() == abi && t->language() == l;
|
||||||
|
});
|
||||||
|
setToolChain(k, l, tc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user