diff options
-rw-r--r-- | src/plugins/projectexplorer/kit.cpp | 13 | ||||
-rw-r--r-- | src/plugins/projectexplorer/kit.h | 3 | ||||
-rw-r--r-- | src/plugins/projectexplorer/kitmanager.cpp | 7 | ||||
-rw-r--r-- | src/plugins/projectexplorer/project.cpp | 1 |
4 files changed, 24 insertions, 0 deletions
diff --git a/src/plugins/projectexplorer/kit.cpp b/src/plugins/projectexplorer/kit.cpp index e38c78fbc8..949b3c480e 100644 --- a/src/plugins/projectexplorer/kit.cpp +++ b/src/plugins/projectexplorer/kit.cpp @@ -736,4 +736,17 @@ void Kit::kitUpdated() d->m_mustNotify = false; } + +static Id replacementKey() { return "IsReplacementKit"; } + +void ProjectExplorer::Kit::makeReplacementKit() +{ + setValueSilently(replacementKey(), true); +} + +bool Kit::isReplacementKit() const +{ + return value(replacementKey()).toBool(); +} + } // namespace ProjectExplorer diff --git a/src/plugins/projectexplorer/kit.h b/src/plugins/projectexplorer/kit.h index 24d16b3ed9..f7c75c5029 100644 --- a/src/plugins/projectexplorer/kit.h +++ b/src/plugins/projectexplorer/kit.h @@ -132,6 +132,9 @@ public: void setMutable(Utils::Id id, bool b); bool isMutable(Utils::Id id) const; + void makeReplacementKit(); + bool isReplacementKit() const; + void setIrrelevantAspects(const QSet<Utils::Id> &irrelevant); QSet<Utils::Id> irrelevantAspects() const; diff --git a/src/plugins/projectexplorer/kitmanager.cpp b/src/plugins/projectexplorer/kitmanager.cpp index 14288d7bb2..70151b5800 100644 --- a/src/plugins/projectexplorer/kitmanager.cpp +++ b/src/plugins/projectexplorer/kitmanager.cpp @@ -235,6 +235,13 @@ void KitManager::restoreKits() // Delete all loaded autodetected kits that were not rediscovered: kitsToCheck.clear(); + // Remove replacement kits for which the original kit has turned up again. + erase(resultList, [&resultList](const std::unique_ptr<Kit> &k) { + return k->isReplacementKit() && contains(resultList, [&k](const std::unique_ptr<Kit> &other) { + return other->id() == k->id() && other != k; + }); + }); + static const auto kitMatchesAbiList = [](const Kit *kit, const Abis &abis) { const QList<ToolChain *> toolchains = ToolChainKitAspect::toolChains(kit); for (const ToolChain * const tc : toolchains) { diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp index 7f32733e1a..1ae6d33470 100644 --- a/src/plugins/projectexplorer/project.cpp +++ b/src/plugins/projectexplorer/project.cpp @@ -776,6 +776,7 @@ void Project::createTargetFromMap(const QVariantMap &map, int index) Utils::transform(KitManager::kits(), &Kit::unexpandedDisplayName)); kit->setUnexpandedDisplayName(tempKitName); DeviceTypeKitAspect::setDeviceTypeId(kit, deviceTypeId); + kit->makeReplacementKit(); kit->setup(); }, id); TaskHub::addTask(BuildSystemTask(Task::Warning, tr("Project \"%1\" was configured for " |