From bd309397ede43954d6ea00df1b95d462b65477ac Mon Sep 17 00:00:00 2001 From: El Mehdi Fekari <mfekari@blackberry.com> Date: Tue, 10 Dec 2013 11:19:55 +0100 Subject: [PATCH] Qnx: Set auto detection source for generated kits Set the auto detection source for generated kits to the target's ndk env file path. This ease the way to deactivate configurations and handles targets sharing the same QNX_HOST. Task-number: QTCREATORBUG-10818 Change-Id: I823fb498f54e52c704a806234e7b4a0a6c8da4e7 Reviewed-by: David Kaspar <dkaspar@blackberry.com> Reviewed-by: Nicolas Arnaud-Cormos <nicolas@kdab.com> --- src/plugins/qnx/blackberryconfiguration.cpp | 59 +++++++------------ src/plugins/qnx/blackberryconfiguration.h | 1 - .../qnx/blackberryconfigurationmanager.cpp | 22 +++++++ .../qnx/blackberryconfigurationmanager.h | 1 + 4 files changed, 43 insertions(+), 40 deletions(-) diff --git a/src/plugins/qnx/blackberryconfiguration.cpp b/src/plugins/qnx/blackberryconfiguration.cpp index ec6f95587dc..3404e6f7eb6 100644 --- a/src/plugins/qnx/blackberryconfiguration.cpp +++ b/src/plugins/qnx/blackberryconfiguration.cpp @@ -169,7 +169,13 @@ bool BlackBerryConfiguration::isAutoDetected() const bool BlackBerryConfiguration::isActive() const { - return !findRegisteredQtVersions().isEmpty(); + foreach (Kit *kit, KitManager::kits()) { + if (kit->isAutoDetected() && + kit->autoDetectionSource() == m_ndkEnvFile.toString()) + return true; + } + + return false; } bool BlackBerryConfiguration::isValid() const @@ -277,6 +283,7 @@ Kit *BlackBerryConfiguration::createKit( kit->setIconPath(FileName::fromString(QLatin1String(Constants::QNX_BB_CATEGORY_ICON))); kit->setAutoDetected(true); + kit->setAutoDetectionSource(m_ndkEnvFile.toString()); kit->setMutable(DeviceKitInformation::id(), true); kit->setSticky(QtKitInformation::id(), true); @@ -370,50 +377,24 @@ bool BlackBerryConfiguration::activate() return true; } -QList<BaseQtVersion *> BlackBerryConfiguration::findRegisteredQtVersions() const -{ - QList<BaseQtVersion *> versions; - foreach (BaseQtVersion *version, QtVersionManager::versions()) { - if (version->type() == QLatin1String(Constants::QNX_BB_QT)) { - QnxAbstractQtVersion *qnxVersion = dynamic_cast<QnxAbstractQtVersion *>(version); - if (qnxVersion && qnxVersion->isAutodetected() - && (qnxVersion->qmakeCommand() == qmake4BinaryFile() - || qnxVersion->qmakeCommand() == qmake5BinaryFile())) - versions << qnxVersion; - } - } - return versions; -} - void BlackBerryConfiguration::deactivate() { - QList<BaseQtVersion *> versions = findRegisteredQtVersions(); - QList<ToolChain *> toolChains; foreach (Kit *kit, KitManager::kits()) { - if (kit->isAutoDetected()) { + if (kit->isAutoDetected() && + kit->autoDetectionSource() == ndkEnvFile().toString()) { BaseQtVersion *version = QtKitInformation::qtVersion(kit); - if (versions.contains(version)) { - ToolChain *toolChain = ToolChainKitInformation::toolChain(kit); - if (toolChain) - toolChains << toolChain; - KitManager::deregisterKit(kit); - } + ToolChain *toolChain = ToolChainKitInformation::toolChain(kit); + const DebuggerItem *debugger = DebuggerKitInformation::debugger(kit); + if (version) + QtVersionManager::removeVersion(version); + if (toolChain) + ToolChainManager::deregisterToolChain(toolChain); + if (debugger) + DebuggerItemManager::deregisterDebugger(debugger->id()); + + KitManager::deregisterKit(kit); } } - - foreach (const DebuggerItem &item, DebuggerItemManager::debuggers()) - if (item.isAutoDetected() && - (item.command() == m_simulatorDebugger || item.command() == m_deviceDebugger)) - DebuggerItemManager::deregisterDebugger(item.id()); - - foreach (ToolChain *toolChain, ToolChainManager::toolChains()) - if (toolChain->isAutoDetected() - && (toolChains.contains(toolChain) || toolChain->compilerCommand() == m_gccCompiler)) - ToolChainManager::deregisterToolChain(toolChain); - - foreach (BaseQtVersion *version, versions) - QtVersionManager::removeVersion(version); - } } // namespace Internal diff --git a/src/plugins/qnx/blackberryconfiguration.h b/src/plugins/qnx/blackberryconfiguration.h index 9701e43485b..8bc2c4ee1c3 100644 --- a/src/plugins/qnx/blackberryconfiguration.h +++ b/src/plugins/qnx/blackberryconfiguration.h @@ -108,7 +108,6 @@ private: ProjectExplorer::Kit* createKit( QnxAbstractQtVersion* version, QnxToolChain* toolChain, const QVariant &debuggerItemId); - QList<QtSupport::BaseQtVersion *> findRegisteredQtVersions() const; }; } // namespace Internal diff --git a/src/plugins/qnx/blackberryconfigurationmanager.cpp b/src/plugins/qnx/blackberryconfigurationmanager.cpp index a7f265dcc93..10d4c9ffbd3 100644 --- a/src/plugins/qnx/blackberryconfigurationmanager.cpp +++ b/src/plugins/qnx/blackberryconfigurationmanager.cpp @@ -49,6 +49,8 @@ #include <qtsupport/qtversionmanager.h> #include <qtsupport/qtkitinformation.h> +#include <debugger/debuggerkitinformation.h> + #include <QMessageBox> #include <QFileInfo> @@ -212,6 +214,23 @@ void BlackBerryConfigurationManager::clearInvalidConfigurations() } } +void BlackBerryConfigurationManager::setKitsAutoDetectionSource() +{ + foreach (Kit *kit, KitManager::kits()) { + if (kit->isAutoDetected() && + (DeviceTypeKitInformation::deviceTypeId(kit) == Constants::QNX_BB_CATEGORY_ICON) && + kit->autoDetectionSource().isEmpty()) { + QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(kit); + foreach (BlackBerryConfiguration *config, m_configs) { + if ((version && + (version->qmakeCommand() == config->qmake4BinaryFile() || version->qmakeCommand() == config->qmake5BinaryFile())) + && (SysRootKitInformation::sysRoot(kit) == config->sysRoot())) + kit->setAutoDetectionSource(config->ndkEnvFile().toString()); + } + } + } +} + // Switch to QnxToolchain for exisintg configuration using GccToolChain void BlackBerryConfigurationManager::checkToolChainConfiguration() { @@ -320,6 +339,9 @@ QList<Utils::EnvironmentItem> BlackBerryConfigurationManager::defaultQnxEnv() void BlackBerryConfigurationManager::loadSettings() { + // Backward compatibility: Set kit's auto detection source + // for existing BlackBerry kits that do not have it set yet. + setKitsAutoDetectionSource(); clearInvalidConfigurations(); loadAutoDetectedConfigurations(); loadManualConfigurations(); diff --git a/src/plugins/qnx/blackberryconfigurationmanager.h b/src/plugins/qnx/blackberryconfigurationmanager.h index 97602e0633c..7934a2adc61 100644 --- a/src/plugins/qnx/blackberryconfigurationmanager.h +++ b/src/plugins/qnx/blackberryconfigurationmanager.h @@ -84,6 +84,7 @@ private: void saveManualConfigurations(); void saveActiveConfigurationNdkEnvPath(); void clearInvalidConfigurations(); + void setKitsAutoDetectionSource(); QStringList activeConfigurationNdkEnvPaths(); }; -- GitLab