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>
This commit is contained in:
El Mehdi Fekari
2013-12-10 11:19:55 +01:00
committed by Mehdi Fekari
parent e32f560a7f
commit bd309397ed
4 changed files with 43 additions and 40 deletions

View File

@@ -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);
const DebuggerItem *debugger = DebuggerKitInformation::debugger(kit);
if (version)
QtVersionManager::removeVersion(version);
if (toolChain)
toolChains << 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

View File

@@ -108,7 +108,6 @@ private:
ProjectExplorer::Kit* createKit(
QnxAbstractQtVersion* version, QnxToolChain* toolChain,
const QVariant &debuggerItemId);
QList<QtSupport::BaseQtVersion *> findRegisteredQtVersions() const;
};
} // namespace Internal

View File

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

View File

@@ -84,6 +84,7 @@ private:
void saveManualConfigurations();
void saveActiveConfigurationNdkEnvPath();
void clearInvalidConfigurations();
void setKitsAutoDetectionSource();
QStringList activeConfigurationNdkEnvPaths();
};