summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEl Mehdi Fekari <mfekari@blackberry.com>2013-12-10 11:19:55 +0100
committerMehdi Fekari <mfekari@blackberry.com>2013-12-12 18:48:31 +0100
commitbd309397ede43954d6ea00df1b95d462b65477ac (patch)
treeed939d690e5b7643125f27b58fe3a166904d346a
parente32f560a7fce6748118bc06beb0c890cf6ee7dd3 (diff)
downloadqt-creator-bd309397ede43954d6ea00df1b95d462b65477ac.tar.gz
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>
-rw-r--r--src/plugins/qnx/blackberryconfiguration.cpp59
-rw-r--r--src/plugins/qnx/blackberryconfiguration.h1
-rw-r--r--src/plugins/qnx/blackberryconfigurationmanager.cpp22
-rw-r--r--src/plugins/qnx/blackberryconfigurationmanager.h1
4 files changed, 43 insertions, 40 deletions
diff --git a/src/plugins/qnx/blackberryconfiguration.cpp b/src/plugins/qnx/blackberryconfiguration.cpp
index ec6f95587d..3404e6f7eb 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 9701e43485..8bc2c4ee1c 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 a7f265dcc9..10d4c9ffbd 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 97602e0633..7934a2adc6 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();
};