forked from qt-creator/qt-creator
ToolChainKitInformation: Choose a better c compiler when upgrading kits
Leave the C compiler empty for non-desktop kits. This stops kits targeting embedded devices from getting flagged with an error due to ABI mismatch between its compilers. Change-Id: I3906a3315fc8c4e7a9ed0831fe69cc7de9e39bf7 Reviewed-by: Rainer Keller <Rainer.Keller@qt.io> Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
@@ -145,7 +145,7 @@ ToolChainKitInformation::ToolChainKitInformation()
|
|||||||
static QMap<ToolChain::Language, QByteArray> defaultToolChainIds()
|
static QMap<ToolChain::Language, QByteArray> defaultToolChainIds()
|
||||||
{
|
{
|
||||||
QMap<ToolChain::Language, QByteArray> toolChains;
|
QMap<ToolChain::Language, QByteArray> toolChains;
|
||||||
Abi abi = Abi::hostAbi();
|
const Abi abi = Abi::hostAbi();
|
||||||
QList<ToolChain *> tcList = Utils::filtered(ToolChainManager::toolChains(),
|
QList<ToolChain *> tcList = Utils::filtered(ToolChainManager::toolChains(),
|
||||||
Utils::equal(&ToolChain::targetAbi, abi));
|
Utils::equal(&ToolChain::targetAbi, abi));
|
||||||
foreach (ToolChain::Language l, ToolChain::allLanguages()) {
|
foreach (ToolChain::Language l, ToolChain::allLanguages()) {
|
||||||
@@ -207,9 +207,13 @@ void ToolChainKitInformation::upgrade(Kit *k)
|
|||||||
} else {
|
} else {
|
||||||
// Used up to 4.1:
|
// Used up to 4.1:
|
||||||
newValue.insert(ToolChain::languageId(ToolChain::Language::Cxx), oldValue.toString());
|
newValue.insert(ToolChain::languageId(ToolChain::Language::Cxx), oldValue.toString());
|
||||||
// insert default C compiler which did not exist before
|
|
||||||
newValue.insert(ToolChain::languageId(ToolChain::Language::C),
|
const Core::Id typeId = DeviceTypeKitInformation::deviceTypeId(k);
|
||||||
defaultToolChainIds().value(ToolChain::Language::C));
|
if (typeId == Constants::DESKTOP_DEVICE_TYPE) {
|
||||||
|
// insert default C compiler which did not exist before
|
||||||
|
newValue.insert(ToolChain::languageId(ToolChain::Language::C),
|
||||||
|
defaultToolChainIds().value(ToolChain::Language::C));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
k->setValue(ToolChainKitInformation::id(), newValue);
|
k->setValue(ToolChainKitInformation::id(), newValue);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user