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:
Tobias Hunger
2016-09-14 11:48:46 +02:00
parent 9dda516b08
commit 19d4d7014d

View File

@@ -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);
} }