aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qnx
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/qnx')
-rw-r--r--src/plugins/qnx/CMakeLists.txt29
-rw-r--r--src/plugins/qnx/qnx.pro4
-rw-r--r--src/plugins/qnx/qnx.qbs4
-rw-r--r--src/plugins/qnx/qnxconfiguration.cpp105
-rw-r--r--src/plugins/qnx/qnxconfiguration.h36
-rw-r--r--src/plugins/qnx/qnxconfigurationmanager.cpp6
-rw-r--r--src/plugins/qnx/qnxconfigurationmanager.h2
-rw-r--r--src/plugins/qnx/qnxconstants.h2
-rw-r--r--src/plugins/qnx/qnxdebugsupport.cpp22
-rw-r--r--src/plugins/qnx/qnxdeployqtlibrariesdialog.cpp19
-rw-r--r--src/plugins/qnx/qnxdevice.cpp33
-rw-r--r--src/plugins/qnx/qnxdevice.h15
-rw-r--r--src/plugins/qnx/qnxdevicefactory.cpp61
-rw-r--r--src/plugins/qnx/qnxdevicefactory.h46
-rw-r--r--src/plugins/qnx/qnxdeviceprocess.cpp1
-rw-r--r--src/plugins/qnx/qnxdeviceprocesssignaloperation.h4
-rw-r--r--src/plugins/qnx/qnxdevicetester.cpp5
-rw-r--r--src/plugins/qnx/qnxplugin.cpp43
-rw-r--r--src/plugins/qnx/qnxqtversion.cpp38
-rw-r--r--src/plugins/qnx/qnxqtversion.h17
-rw-r--r--src/plugins/qnx/qnxqtversionfactory.cpp79
-rw-r--r--src/plugins/qnx/qnxqtversionfactory.h51
-rw-r--r--src/plugins/qnx/qnxrunconfiguration.cpp2
-rw-r--r--src/plugins/qnx/qnxsettingswidget.cpp4
-rw-r--r--src/plugins/qnx/qnxtoolchain.cpp80
-rw-r--r--src/plugins/qnx/qnxtoolchain.h13
-rw-r--r--src/plugins/qnx/qnxutils.cpp8
-rw-r--r--src/plugins/qnx/qnxutils.h8
-rw-r--r--src/plugins/qnx/slog2inforunner.cpp2
-rw-r--r--src/plugins/qnx/slog2inforunner.h2
30 files changed, 242 insertions, 499 deletions
diff --git a/src/plugins/qnx/CMakeLists.txt b/src/plugins/qnx/CMakeLists.txt
new file mode 100644
index 0000000000..75a060d264
--- /dev/null
+++ b/src/plugins/qnx/CMakeLists.txt
@@ -0,0 +1,29 @@
+add_qtc_plugin(Qnx
+ DEPENDS QtcSsh QmlDebug Qt5::Xml
+ PLUGIN_DEPENDS Core Debugger ProjectExplorer QtSupport RemoteLinux
+ SOURCES
+ qnx.qrc
+ qnx_export.h
+ qnxanalyzesupport.cpp qnxanalyzesupport.h
+ qnxbaseqtconfigwidget.cpp qnxbaseqtconfigwidget.h
+ qnxconfiguration.cpp qnxconfiguration.h
+ qnxconfigurationmanager.cpp qnxconfigurationmanager.h
+ qnxconstants.h
+ qnxdebugsupport.cpp qnxdebugsupport.h
+ qnxdeployqtlibrariesdialog.cpp qnxdeployqtlibrariesdialog.h qnxdeployqtlibrariesdialog.ui
+ qnxdevice.cpp qnxdevice.h
+ qnxdeviceprocess.cpp qnxdeviceprocess.h
+ qnxdeviceprocesslist.cpp qnxdeviceprocesslist.h
+ qnxdeviceprocesssignaloperation.cpp qnxdeviceprocesssignaloperation.h
+ qnxdevicetester.cpp qnxdevicetester.h
+ qnxdevicewizard.cpp qnxdevicewizard.h
+ qnxplugin.cpp qnxplugin.h
+ qnxqtversion.cpp qnxqtversion.h
+ qnxrunconfiguration.cpp qnxrunconfiguration.h
+ qnxsettingspage.cpp qnxsettingspage.h
+ qnxsettingswidget.cpp qnxsettingswidget.h qnxsettingswidget.ui
+ qnxtoolchain.cpp qnxtoolchain.h
+ qnxutils.cpp qnxutils.h
+ qnxversionnumber.cpp qnxversionnumber.h
+ slog2inforunner.cpp slog2inforunner.h
+)
diff --git a/src/plugins/qnx/qnx.pro b/src/plugins/qnx/qnx.pro
index eee23e08ca..fd9fffccf4 100644
--- a/src/plugins/qnx/qnx.pro
+++ b/src/plugins/qnx/qnx.pro
@@ -5,12 +5,10 @@ include(../../qtcreatorplugin.pri)
SOURCES += qnxplugin.cpp \
qnxbaseqtconfigwidget.cpp \
qnxutils.cpp \
- qnxdevicefactory.cpp \
qnxdevicewizard.cpp \
qnxrunconfiguration.cpp \
qnxanalyzesupport.cpp \
qnxdebugsupport.cpp \
- qnxqtversionfactory.cpp \
qnxqtversion.cpp \
qnxdevice.cpp \
qnxdevicetester.cpp \
@@ -30,12 +28,10 @@ HEADERS += qnxplugin.h\
qnxconstants.h \
qnxbaseqtconfigwidget.h \
qnxutils.h \
- qnxdevicefactory.h \
qnxdevicewizard.h \
qnxrunconfiguration.h \
qnxanalyzesupport.h \
qnxdebugsupport.h \
- qnxqtversionfactory.h \
qnxqtversion.h \
qnxdevice.h \
qnxdevicetester.h \
diff --git a/src/plugins/qnx/qnx.qbs b/src/plugins/qnx/qnx.qbs
index 2f29172038..3865766004 100644
--- a/src/plugins/qnx/qnx.qbs
+++ b/src/plugins/qnx/qnx.qbs
@@ -32,8 +32,6 @@ QtcPlugin {
"qnxdebugsupport.h",
"qnxdevice.cpp",
"qnxdevice.h",
- "qnxdevicefactory.cpp",
- "qnxdevicefactory.h",
"qnxdevicewizard.cpp",
"qnxdevicewizard.h",
"qnxdeviceprocesslist.cpp",
@@ -57,8 +55,6 @@ QtcPlugin {
"qnxplugin.h",
"qnxqtversion.cpp",
"qnxqtversion.h",
- "qnxqtversionfactory.cpp",
- "qnxqtversionfactory.h",
"qnxrunconfiguration.cpp",
"qnxrunconfiguration.h",
"qnxutils.cpp",
diff --git a/src/plugins/qnx/qnxconfiguration.cpp b/src/plugins/qnx/qnxconfiguration.cpp
index 0619b439b7..d05ae172ff 100644
--- a/src/plugins/qnx/qnxconfiguration.cpp
+++ b/src/plugins/qnx/qnxconfiguration.cpp
@@ -69,7 +69,7 @@ const QLatin1String SdpEnvFileKey("NDKEnvFile");
QnxConfiguration::QnxConfiguration() = default;
-QnxConfiguration::QnxConfiguration(const FileName &sdpEnvFile)
+QnxConfiguration::QnxConfiguration(const FilePath &sdpEnvFile)
{
setDefaultConfiguration(sdpEnvFile);
readInformation();
@@ -83,26 +83,26 @@ QnxConfiguration::QnxConfiguration(const QVariantMap &data)
m_version = QnxVersionNumber(data.value(QNXVersionKey).toString());
- setDefaultConfiguration(FileName::fromString(envFilePath));
+ setDefaultConfiguration(FilePath::fromString(envFilePath));
readInformation();
}
-FileName QnxConfiguration::envFile() const
+FilePath QnxConfiguration::envFile() const
{
return m_envFile;
}
-FileName QnxConfiguration::qnxTarget() const
+FilePath QnxConfiguration::qnxTarget() const
{
return m_qnxTarget;
}
-FileName QnxConfiguration::qnxHost() const
+FilePath QnxConfiguration::qnxHost() const
{
return m_qnxHost;
}
-FileName QnxConfiguration::qccCompilerPath() const
+FilePath QnxConfiguration::qccCompilerPath() const
{
return m_qccCompiler;
}
@@ -177,8 +177,8 @@ void QnxConfiguration::deactivate()
foreach (Kit *kit, KitManager::kits()) {
if (kit->isAutoDetected()
- && DeviceTypeKitInformation::deviceTypeId(kit) == Constants::QNX_QNX_OS_TYPE
- && toolChainsToRemove.contains(ToolChainKitInformation::toolChain(kit, ProjectExplorer::Constants::CXX_LANGUAGE_ID)))
+ && DeviceTypeKitAspect::deviceTypeId(kit) == Constants::QNX_QNX_OS_TYPE
+ && toolChainsToRemove.contains(ToolChainKitAspect::toolChain(kit, ProjectExplorer::Constants::CXX_LANGUAGE_ID)))
KitManager::deregisterKit(kit);
}
@@ -209,7 +209,7 @@ bool QnxConfiguration::canCreateKits() const
[this](const Target &target) -> bool { return qnxQtVersion(target); });
}
-FileName QnxConfiguration::sdpPath() const
+FilePath QnxConfiguration::sdpPath() const
{
return envFile().parentDir();
}
@@ -220,7 +220,7 @@ QnxQtVersion *QnxConfiguration::qnxQtVersion(const Target &target) const
QtVersionManager::instance()->versions(Utils::equal(&BaseQtVersion::type,
QString::fromLatin1(Constants::QNX_QNX_QT)))) {
auto qnxQt = dynamic_cast<QnxQtVersion *>(version);
- if (qnxQt && FileName::fromString(qnxQt->sdpPath()) == sdpPath()) {
+ if (qnxQt && FilePath::fromString(qnxQt->sdpPath()) == sdpPath()) {
foreach (const Abi &qtAbi, version->qtAbis()) {
if ((qtAbi == target.m_abi) && (qnxQt->cpuDir() == target.cpuDir()))
return qnxQt;
@@ -265,7 +265,8 @@ QVariant QnxConfiguration::createDebugger(const Target &target)
QnxToolChain *QnxConfiguration::createToolChain(const Target &target)
{
- auto toolChain = new QnxToolChain(ToolChain::AutoDetection);
+ auto toolChain = new QnxToolChain;
+ toolChain->setDetection(ToolChain::AutoDetection);
toolChain->setLanguage(ProjectExplorer::Constants::CXX_LANGUAGE_ID);
toolChain->setTargetAbi(target.m_abi);
toolChain->setDisplayName(
@@ -291,49 +292,45 @@ QList<ToolChain *> QnxConfiguration::findToolChain(const QList<ToolChain *> &alr
});
}
-ProjectExplorer::Kit *QnxConfiguration::createKit(
- const Target &target,
- QnxToolChain *toolChain,
- const QVariant &debugger)
+void QnxConfiguration::createKit(const Target &target, QnxToolChain *toolChain,
+ const QVariant &debugger)
{
QnxQtVersion *qnxQt = qnxQtVersion(target);
// Do not create incomplete kits if no qt qnx version found
if (!qnxQt)
- return nullptr;
-
- auto kit = std::make_unique<Kit>();
- Kit *kptr = kit.get();
+ return;
- QtKitInformation::setQtVersion(kptr, qnxQt);
- ToolChainKitInformation::setToolChain(kptr, toolChain);
- ToolChainKitInformation::clearToolChain(kptr, ProjectExplorer::Constants::C_LANGUAGE_ID);
+ const auto init = [&](Kit *k) {
+ QtKitAspect::setQtVersion(k, qnxQt);
+ ToolChainKitAspect::setToolChain(k, toolChain);
+ ToolChainKitAspect::clearToolChain(k, ProjectExplorer::Constants::C_LANGUAGE_ID);
- if (debugger.isValid())
- DebuggerKitInformation::setDebugger(kptr, debugger);
+ if (debugger.isValid())
+ DebuggerKitAspect::setDebugger(k, debugger);
- DeviceTypeKitInformation::setDeviceTypeId(kptr, Constants::QNX_QNX_OS_TYPE);
- // TODO: Add sysroot?
+ DeviceTypeKitAspect::setDeviceTypeId(k, Constants::QNX_QNX_OS_TYPE);
+ // TODO: Add sysroot?
- kit->setUnexpandedDisplayName(
- QCoreApplication::translate(
- "Qnx::Internal::QnxConfiguration",
- "Kit for %1 (%2)")
- .arg(displayName())
- .arg(target.shortDescription()));
+ k->setUnexpandedDisplayName(
+ QCoreApplication::translate(
+ "Qnx::Internal::QnxConfiguration",
+ "Kit for %1 (%2)")
+ .arg(displayName())
+ .arg(target.shortDescription()));
- kit->setAutoDetected(true);
- kit->setAutoDetectionSource(envFile().toString());
- kit->setMutable(DeviceKitInformation::id(), true);
+ k->setAutoDetected(true);
+ k->setAutoDetectionSource(envFile().toString());
+ k->setMutable(DeviceKitAspect::id(), true);
- kit->setSticky(ToolChainKitInformation::id(), true);
- kit->setSticky(DeviceTypeKitInformation::id(), true);
- kit->setSticky(SysRootKitInformation::id(), true);
- kit->setSticky(DebuggerKitInformation::id(), true);
- kit->setSticky(QmakeProjectManager::Constants::KIT_INFORMATION_ID, true);
+ k->setSticky(ToolChainKitAspect::id(), true);
+ k->setSticky(DeviceTypeKitAspect::id(), true);
+ k->setSticky(SysRootKitAspect::id(), true);
+ k->setSticky(DebuggerKitAspect::id(), true);
+ k->setSticky(QmakeProjectManager::Constants::KIT_INFORMATION_ID, true);
+ };
// add kit with device and qt version not sticky
- KitManager::registerKit(std::move(kit));
- return kptr;
+ KitManager::registerKit(init);
}
QStringList QnxConfiguration::validationErrors() const
@@ -357,14 +354,14 @@ void QnxConfiguration::setVersion(const QnxVersionNumber &version)
void QnxConfiguration::readInformation()
{
- QString qConfigPath = FileName(m_qnxConfiguration).appendPath("qconfig").toString();
+ const QString qConfigPath = m_qnxConfiguration.pathAppended("qconfig").toString();
QList <ConfigInstallInformation> installInfoList = QnxUtils::installedConfigs(qConfigPath);
if (installInfoList.isEmpty())
return;
foreach (const ConfigInstallInformation &info, installInfoList) {
- if (m_qnxHost == FileName::fromString(info.host)
- && m_qnxTarget == FileName::fromString(info.target)) {
+ if (m_qnxHost == FilePath::fromString(info.host)
+ && m_qnxTarget == FilePath::fromString(info.target)) {
m_configName = info.name;
setVersion(QnxVersionNumber(info.version));
break;
@@ -372,21 +369,21 @@ void QnxConfiguration::readInformation()
}
}
-void QnxConfiguration::setDefaultConfiguration(const Utils::FileName &envScript)
+void QnxConfiguration::setDefaultConfiguration(const Utils::FilePath &envScript)
{
QTC_ASSERT(!envScript.isEmpty(), return);
m_envFile = envScript;
m_qnxEnv = QnxUtils::qnxEnvironmentFromEnvFile(m_envFile.toString());
foreach (const EnvironmentItem &item, m_qnxEnv) {
if (item.name == QLatin1String("QNX_CONFIGURATION"))
- m_qnxConfiguration = FileName::fromString(item.value);
+ m_qnxConfiguration = FilePath::fromString(item.value);
else if (item.name == QLatin1String("QNX_TARGET"))
- m_qnxTarget = FileName::fromString(item.value);
+ m_qnxTarget = FilePath::fromString(item.value);
else if (item.name == QLatin1String("QNX_HOST"))
- m_qnxHost = FileName::fromString(item.value);
+ m_qnxHost = FilePath::fromString(item.value);
}
- FileName qccPath = FileName::fromString(HostOsInfo::withExecutableSuffix(
+ FilePath qccPath = FilePath::fromString(HostOsInfo::withExecutableSuffix(
m_qnxHost.toString() + QLatin1String("/usr/bin/qcc")));
if (qccPath.exists())
@@ -404,7 +401,7 @@ void QnxConfiguration::setDefaultConfiguration(const Utils::FileName &envScript)
}
const QnxConfiguration::Target *QnxConfiguration::findTargetByDebuggerPath(
- const FileName &path) const
+ const FilePath &path) const
{
auto it = std::find_if(m_targets.begin(), m_targets.end(),
[path](const Target &target) { return target.m_debuggerPath == path; });
@@ -421,13 +418,13 @@ void QnxConfiguration::updateTargets()
void QnxConfiguration::assignDebuggersToTargets()
{
- QDir hostUsrBinDir(FileName(m_qnxHost).appendPath("usr/bin").toString());
+ const QDir hostUsrBinDir(m_qnxHost.pathAppended("usr/bin").toString());
QStringList debuggerNames = hostUsrBinDir.entryList(
QStringList(HostOsInfo::withExecutableSuffix(QLatin1String("nto*-gdb"))),
QDir::Files);
foreach (const QString &debuggerName, debuggerNames) {
- FileName debuggerPath = FileName::fromString(hostUsrBinDir.path())
- .appendPath(debuggerName);
+ const FilePath debuggerPath = FilePath::fromString(hostUsrBinDir.path())
+ .pathAppended(debuggerName);
DebuggerItem item;
item.setCommand(debuggerPath);
item.reinitializeFromFile();
diff --git a/src/plugins/qnx/qnxconfiguration.h b/src/plugins/qnx/qnxconfiguration.h
index 613167a68c..ebb77c825f 100644
--- a/src/plugins/qnx/qnxconfiguration.h
+++ b/src/plugins/qnx/qnxconfiguration.h
@@ -54,13 +54,13 @@ class QnxConfiguration
{
public:
QnxConfiguration();
- QnxConfiguration(const Utils::FileName &sdpEnvFile);
+ QnxConfiguration(const Utils::FilePath &sdpEnvFile);
QnxConfiguration(const QVariantMap &data);
- Utils::FileName envFile() const;
- Utils::FileName qnxTarget() const;
- Utils::FileName qnxHost() const;
- Utils::FileName qccCompilerPath() const;
+ Utils::FilePath envFile() const;
+ Utils::FilePath qnxTarget() const;
+ Utils::FilePath qnxHost() const;
+ Utils::FilePath qccCompilerPath() const;
QList<Utils::EnvironmentItem> qnxEnv() const;
QnxVersionNumber version() const;
QVariantMap toMap() const;
@@ -72,7 +72,7 @@ public:
void deactivate();
bool isActive() const;
bool canCreateKits() const;
- Utils::FileName sdpPath() const;
+ Utils::FilePath sdpPath() const;
QList<ProjectExplorer::ToolChain *> autoDetect(
const QList<ProjectExplorer::ToolChain *> &alreadyKnown);
@@ -88,22 +88,22 @@ private:
void readInformation();
- void setDefaultConfiguration(const Utils::FileName &envScript);
+ void setDefaultConfiguration(const Utils::FilePath &envScript);
QString m_configName;
- Utils::FileName m_envFile;
- Utils::FileName m_qnxConfiguration;
- Utils::FileName m_qnxTarget;
- Utils::FileName m_qnxHost;
- Utils::FileName m_qccCompiler;
+ Utils::FilePath m_envFile;
+ Utils::FilePath m_qnxConfiguration;
+ Utils::FilePath m_qnxTarget;
+ Utils::FilePath m_qnxHost;
+ Utils::FilePath m_qccCompiler;
QList<Utils::EnvironmentItem> m_qnxEnv;
QnxVersionNumber m_version;
class Target
{
public:
- Target(const ProjectExplorer::Abi &abi, const Utils::FileName &path)
+ Target(const ProjectExplorer::Abi &abi, const Utils::FilePath &path)
: m_abi(abi), m_path(path)
{
}
@@ -112,8 +112,8 @@ private:
QString cpuDir() const;
ProjectExplorer::Abi m_abi;
- Utils::FileName m_path;
- Utils::FileName m_debuggerPath;
+ Utils::FilePath m_path;
+ Utils::FilePath m_debuggerPath;
};
QList<Target> m_targets;
@@ -123,11 +123,9 @@ private:
void createTools(const Target &target);
QVariant createDebugger(const Target &target);
QnxToolChain *createToolChain(const Target &target);
- ProjectExplorer::Kit *createKit(const Target &target,
- QnxToolChain *toolChain,
- const QVariant &debugger);
+ void createKit(const Target &target, QnxToolChain *toolChain, const QVariant &debugger);
- const Target *findTargetByDebuggerPath(const Utils::FileName &path) const;
+ const Target *findTargetByDebuggerPath(const Utils::FilePath &path) const;
void updateTargets();
void assignDebuggersToTargets();
diff --git a/src/plugins/qnx/qnxconfigurationmanager.cpp b/src/plugins/qnx/qnxconfigurationmanager.cpp
index 2f026bbcb5..f44313d233 100644
--- a/src/plugins/qnx/qnxconfigurationmanager.cpp
+++ b/src/plugins/qnx/qnxconfigurationmanager.cpp
@@ -36,9 +36,9 @@ const QLatin1String QNXConfigDataKey("QNXConfiguration.");
const QLatin1String QNXConfigCountKey("QNXConfiguration.Count");
const QLatin1String QNXConfigsFileVersionKey("Version");
-static Utils::FileName qnxConfigSettingsFileName()
+static Utils::FilePath qnxConfigSettingsFileName()
{
- return Utils::FileName::fromString(Core::ICore::userResourcePath() + QLatin1String("/qnx/")
+ return Utils::FilePath::fromString(Core::ICore::userResourcePath() + QLatin1String("/qnx/")
+ QLatin1String(Constants::QNX_CONFIGS_FILENAME));
}
@@ -94,7 +94,7 @@ bool QnxConfigurationManager::addConfiguration(QnxConfiguration *config)
return true;
}
-QnxConfiguration *QnxConfigurationManager::configurationFromEnvFile(const Utils::FileName &envFile) const
+QnxConfiguration *QnxConfigurationManager::configurationFromEnvFile(const Utils::FilePath &envFile) const
{
foreach (QnxConfiguration *c, m_configurations) {
if (c->envFile() == envFile)
diff --git a/src/plugins/qnx/qnxconfigurationmanager.h b/src/plugins/qnx/qnxconfigurationmanager.h
index 938a098250..83e148afa9 100644
--- a/src/plugins/qnx/qnxconfigurationmanager.h
+++ b/src/plugins/qnx/qnxconfigurationmanager.h
@@ -45,7 +45,7 @@ public:
QList<QnxConfiguration*> configurations() const;
void removeConfiguration(QnxConfiguration *config);
bool addConfiguration(QnxConfiguration *config);
- QnxConfiguration* configurationFromEnvFile(const Utils::FileName &envFile) const;
+ QnxConfiguration* configurationFromEnvFile(const Utils::FilePath &envFile) const;
protected slots:
void saveConfigs();
diff --git a/src/plugins/qnx/qnxconstants.h b/src/plugins/qnx/qnxconstants.h
index ecd31d6b3d..05c5a17618 100644
--- a/src/plugins/qnx/qnxconstants.h
+++ b/src/plugins/qnx/qnxconstants.h
@@ -41,7 +41,7 @@ const char QNX_QNX_RUNCONFIGURATION_PREFIX[] = "Qt4ProjectManager.QNX.QNXRunConf
const char QNX_QNX_DEPLOYCONFIGURATION_ID[] = "Qt4ProjectManager.QNX.QNXDeployConfiguration";
-const char QNX_QNX_OS_TYPE[] = "QnxOsType";
+const char QNX_QNX_OS_TYPE[] = "QnxOsType"; // Also used for device type.
const char QNX_DEBUG_EXECUTABLE[] = "pdebug";
diff --git a/src/plugins/qnx/qnxdebugsupport.cpp b/src/plugins/qnx/qnxdebugsupport.cpp
index f53b27df36..0ea96961dc 100644
--- a/src/plugins/qnx/qnxdebugsupport.cpp
+++ b/src/plugins/qnx/qnxdebugsupport.cpp
@@ -72,7 +72,7 @@ namespace Internal {
static QStringList searchPaths(Kit *kit)
{
- auto qtVersion = dynamic_cast<QnxQtVersion *>(QtSupport::QtKitInformation::qtVersion(kit));
+ auto qtVersion = dynamic_cast<QnxQtVersion *>(QtSupport::QtKitAspect::qtVersion(kit));
if (!qtVersion)
return {};
@@ -85,10 +85,8 @@ static QStringList searchPaths(Kit *kit)
searchPaths << qtVersion->qmakeProperty("QT_INSTALL_PLUGINS") + '/' + dir;
searchPaths << qtVersion->qmakeProperty("QT_INSTALL_LIBS");
- searchPaths << qtVersion->qnxTarget().appendPath(qtVersion->cpuDir()).appendPath("lib")
- .toString();
- searchPaths << qtVersion->qnxTarget().appendPath(qtVersion->cpuDir()).appendPath("usr/lib")
- .toString();
+ searchPaths << qtVersion->qnxTarget().pathAppended(qtVersion->cpuDir() + "/lib").toString();
+ searchPaths << qtVersion->qnxTarget().pathAppended(qtVersion->cpuDir() + "/usr/lib").toString();
return searchPaths;
}
@@ -148,16 +146,13 @@ QnxDebugSupport::QnxDebugSupport(RunControl *runControl)
addStartDependency(debuggeeRunner);
- auto runConfig = qobject_cast<QnxRunConfiguration *>(runControl->runConfiguration());
- QTC_ASSERT(runConfig, return);
- Target *target = runConfig->target();
- Kit *k = target->kit();
+ Kit *k = runControl->kit();
setStartMode(AttachToRemoteServer);
setCloseMode(KillAtClose);
setUseCtrlCStub(true);
setSolibSearchPath(searchPaths(k));
- if (auto qtVersion = dynamic_cast<QnxQtVersion *>(QtSupport::QtKitInformation::qtVersion(k)))
+ if (auto qtVersion = dynamic_cast<QnxQtVersion *>(QtSupport::QtKitAspect::qtVersion(k)))
setSysRoot(qtVersion->qnxTarget());
}
@@ -241,7 +236,7 @@ void QnxAttachDebugSupport::showProcessesDialog()
{
auto kitChooser = new KitChooser;
kitChooser->setKitPredicate([](const Kit *k) {
- return k->isValid() && DeviceTypeKitInformation::deviceTypeId(k) == Constants::QNX_QNX_OS_TYPE;
+ return k->isValid() && DeviceTypeKitAspect::deviceTypeId(k) == Constants::QNX_QNX_OS_TYPE;
});
QnxAttachDebugDialog dlg(kitChooser);
@@ -269,7 +264,8 @@ void QnxAttachDebugSupport::showProcessesDialog()
localExecutable = aspect->fileName().toString();
}
- auto runControl = new RunControl(runConfig, ProjectExplorer::Constants::DEBUG_RUN_MODE);
+ auto runControl = new RunControl(ProjectExplorer::Constants::DEBUG_RUN_MODE);
+ runControl->setRunConfiguration(runConfig);
auto debugger = new QnxAttachDebugSupport(runControl);
debugger->setStartMode(AttachToRemoteServer);
debugger->setCloseMode(DetachAtClose);
@@ -279,7 +275,7 @@ void QnxAttachDebugSupport::showProcessesDialog()
// setRunControlName(tr("Remote: \"%1\" - Process %2").arg(remoteChannel).arg(m_process.pid));
debugger->setRunControlName(tr("Remote QNX process %1").arg(pid));
debugger->setSolibSearchPath(searchPaths(kit));
- if (auto qtVersion = dynamic_cast<QnxQtVersion *>(QtSupport::QtKitInformation::qtVersion(kit)))
+ if (auto qtVersion = dynamic_cast<QnxQtVersion *>(QtSupport::QtKitAspect::qtVersion(kit)))
debugger->setSysRoot(qtVersion->qnxTarget());
debugger->setUseContinueInsteadOfRun(true);
diff --git a/src/plugins/qnx/qnxdeployqtlibrariesdialog.cpp b/src/plugins/qnx/qnxdeployqtlibrariesdialog.cpp
index 0e4a0b6ff5..aec85826a2 100644
--- a/src/plugins/qnx/qnxdeployqtlibrariesdialog.cpp
+++ b/src/plugins/qnx/qnxdeployqtlibrariesdialog.cpp
@@ -256,6 +256,11 @@ QList<DeployableFile> QnxDeployQtLibrariesDialog::gatherFiles(
if (dirPath.isEmpty())
return result;
+ static const QStringList unusedDirs = {"include", "mkspecs", "cmake", "pkgconfig"};
+ const QString dp = dirPath.endsWith('/') ? dirPath.left(dirPath.size() - 1) : dirPath;
+ if (unusedDirs.contains(dp))
+ return result;
+
QDir dir(dirPath);
QFileInfoList list = dir.entryInfoList(nameFilters,
QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot);
@@ -265,6 +270,10 @@ QList<DeployableFile> QnxDeployQtLibrariesDialog::gatherFiles(
result.append(gatherFiles(fileInfo.absoluteFilePath(), baseDirPath.isEmpty() ?
dirPath : baseDirPath));
} else {
+ static const QStringList unusedSuffixes = {"cmake", "la", "prl", "a", "pc"};
+ if (unusedSuffixes.contains(fileInfo.suffix()))
+ continue;
+
QString remoteDir;
if (baseDirPath.isEmpty()) {
remoteDir = fullRemoteDirectory() + QLatin1Char('/') +
@@ -292,12 +301,9 @@ void QnxDeployQtLibrariesDialog::checkRemoteDirectoryExistance()
QTC_CHECK(m_state == Inactive);
m_state = CheckingRemoteDirectory;
-
m_ui->deployLogWindow->appendPlainText(tr("Checking existence of \"%1\"")
.arg(fullRemoteDirectory()));
-
- const QByteArray cmd = "test -d " + fullRemoteDirectory().toLatin1();
- m_processRunner->run(cmd, m_device->sshParameters());
+ m_processRunner->run("test -d " + fullRemoteDirectory(), m_device->sshParameters());
}
void QnxDeployQtLibrariesDialog::removeRemoteDirectory()
@@ -305,11 +311,8 @@ void QnxDeployQtLibrariesDialog::removeRemoteDirectory()
QTC_CHECK(m_state == CheckingRemoteDirectory);
m_state = RemovingRemoteDirectory;
-
m_ui->deployLogWindow->appendPlainText(tr("Removing \"%1\"").arg(fullRemoteDirectory()));
-
- const QByteArray cmd = "rm -rf " + fullRemoteDirectory().toLatin1();
- m_processRunner->run(cmd, m_device->sshParameters());
+ m_processRunner->run("rm -rf " + fullRemoteDirectory(), m_device->sshParameters());
}
} // namespace Internal
diff --git a/src/plugins/qnx/qnxdevice.cpp b/src/plugins/qnx/qnxdevice.cpp
index 49cd195ccd..7794dbde1b 100644
--- a/src/plugins/qnx/qnxdevice.cpp
+++ b/src/plugins/qnx/qnxdevice.cpp
@@ -24,13 +24,17 @@
****************************************************************************/
#include "qnxdevice.h"
+
+#include "qnxconstants.h"
#include "qnxdevicetester.h"
#include "qnxdeviceprocesslist.h"
#include "qnxdeviceprocesssignaloperation.h"
#include "qnxdeployqtlibrariesdialog.h"
#include "qnxdeviceprocess.h"
+#include "qnxdevicewizard.h"
#include <projectexplorer/devicesupport/sshdeviceprocess.h>
+#include <projectexplorer/runcontrol.h>
#include <ssh/sshconnection.h>
#include <utils/port.h>
@@ -46,8 +50,7 @@ using namespace ProjectExplorer;
using namespace Utils;
namespace Qnx {
-
-using namespace Internal;
+namespace Internal {
const char QnxVersionKey[] = "QnxVersion";
@@ -148,11 +151,6 @@ QVariantMap QnxDevice::toMap() const
return map;
}
-IDevice::Ptr QnxDevice::clone() const
-{
- return Ptr(new QnxDevice(*this));
-}
-
PortsGatheringMethod::Ptr QnxDevice::portsGatheringMethod() const
{
return PortsGatheringMethod::Ptr(new QnxPortsGatheringMethod);
@@ -179,4 +177,25 @@ DeviceProcessSignalOperation::Ptr QnxDevice::signalOperation() const
new QnxDeviceProcessSignalOperation(sshParameters()));
}
+// Factory
+
+QnxDeviceFactory::QnxDeviceFactory()
+ : ProjectExplorer::IDeviceFactory(Constants::QNX_QNX_OS_TYPE)
+{
+ setDisplayName(tr("QNX Device"));
+ setCombinedIcon(":/qnx/images/qnxdevicesmall.png",
+ ":/qnx/images/qnxdevice.png");
+ setCanCreate(true);
+ setConstructionFunction(&QnxDevice::create);
+}
+
+ProjectExplorer::IDevice::Ptr QnxDeviceFactory::create() const
+{
+ QnxDeviceWizard wizard;
+ if (wizard.exec() != QDialog::Accepted)
+ return ProjectExplorer::IDevice::Ptr();
+ return wizard.device();
+}
+
+} // namespace Internal
} // namespace Qnx
diff --git a/src/plugins/qnx/qnxdevice.h b/src/plugins/qnx/qnxdevice.h
index 5a120d92b1..ae6a268143 100644
--- a/src/plugins/qnx/qnxdevice.h
+++ b/src/plugins/qnx/qnxdevice.h
@@ -30,8 +30,9 @@
#include <remotelinux/linuxdevice.h>
namespace Qnx {
+namespace Internal {
-class QNX_EXPORT QnxDevice : public RemoteLinux::LinuxDevice
+class QnxDevice : public RemoteLinux::LinuxDevice
{
Q_DECLARE_TR_FUNCTIONS(Qnx::Internal::QnxDevice)
@@ -40,7 +41,6 @@ public:
using ConstPtr = QSharedPointer<const QnxDevice>;
static Ptr create() { return Ptr(new QnxDevice); }
- ProjectExplorer::IDevice::Ptr clone() const override;
ProjectExplorer::PortsGatheringMethod::Ptr portsGatheringMethod() const override;
ProjectExplorer::DeviceProcessList *createProcessListModel(QObject *parent) const override;
@@ -69,4 +69,15 @@ private:
mutable int m_versionNumber = 0;
};
+class QnxDeviceFactory : public ProjectExplorer::IDeviceFactory
+{
+ Q_OBJECT
+
+public:
+ QnxDeviceFactory();
+
+ ProjectExplorer::IDevice::Ptr create() const override;
+};
+
+} // namespace Internal
} // namespace Qnx
diff --git a/src/plugins/qnx/qnxdevicefactory.cpp b/src/plugins/qnx/qnxdevicefactory.cpp
deleted file mode 100644
index 02e2e45465..0000000000
--- a/src/plugins/qnx/qnxdevicefactory.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 BlackBerry Limited. All rights reserved.
-** Contact: KDAB (info@kdab.com)
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-****************************************************************************/
-
-#include "qnxdevicefactory.h"
-
-#include "qnxconstants.h"
-#include "qnxdevicewizard.h"
-#include "qnxdevice.h"
-
-#include <utils/qtcassert.h>
-
-namespace Qnx {
-namespace Internal {
-
-QnxDeviceFactory::QnxDeviceFactory()
- : ProjectExplorer::IDeviceFactory(Constants::QNX_QNX_OS_TYPE)
-{
- setDisplayName(tr("QNX Device"));
- setCombinedIcon(":/qnx/images/qnxdevicesmall.png",
- ":/qnx/images/qnxdevice.png");
- setCanCreate(true);
- setConstructionFunction(&QnxDevice::create);
-}
-
-ProjectExplorer::IDevice::Ptr QnxDeviceFactory::create() const
-{
- QnxDeviceWizard wizard;
- if (wizard.exec() != QDialog::Accepted)
- return ProjectExplorer::IDevice::Ptr();
- return wizard.device();
-}
-
-Core::Id QnxDeviceFactory::deviceType()
-{
- return Core::Id(Constants::QNX_QNX_OS_TYPE);
-}
-
-} // namespace Internal
-} // namespace Qnx
diff --git a/src/plugins/qnx/qnxdevicefactory.h b/src/plugins/qnx/qnxdevicefactory.h
deleted file mode 100644
index 9b08ec5efe..0000000000
--- a/src/plugins/qnx/qnxdevicefactory.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 BlackBerry Limited. All rights reserved.
-** Contact: KDAB (info@kdab.com)
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-****************************************************************************/
-
-#pragma once
-
-#include <projectexplorer/devicesupport/idevicefactory.h>
-
-namespace Qnx {
-namespace Internal {
-
-class QnxDeviceFactory : public ProjectExplorer::IDeviceFactory
-{
- Q_OBJECT
-
-public:
- QnxDeviceFactory();
-
- ProjectExplorer::IDevice::Ptr create() const override;
-
- static Core::Id deviceType();
-};
-
-} // namespace Internal
-} // namespace Qnx
diff --git a/src/plugins/qnx/qnxdeviceprocess.cpp b/src/plugins/qnx/qnxdeviceprocess.cpp
index 5a2b5ecfd3..46067672dc 100644
--- a/src/plugins/qnx/qnxdeviceprocess.cpp
+++ b/src/plugins/qnx/qnxdeviceprocess.cpp
@@ -26,6 +26,7 @@
#include "qnxdeviceprocess.h"
#include <projectexplorer/devicesupport/sshdeviceprocess.h>
+#include <projectexplorer/runcontrol.h>
#include <utils/qtcprocess.h>
diff --git a/src/plugins/qnx/qnxdeviceprocesssignaloperation.h b/src/plugins/qnx/qnxdeviceprocesssignaloperation.h
index b51eb9c847..be3795bba0 100644
--- a/src/plugins/qnx/qnxdeviceprocesssignaloperation.h
+++ b/src/plugins/qnx/qnxdeviceprocesssignaloperation.h
@@ -28,8 +28,6 @@
#include <remotelinux/remotelinuxsignaloperation.h>
namespace Qnx {
-class QnxDevice;
-
namespace Internal {
class QnxDeviceProcessSignalOperation : public RemoteLinux::RemoteLinuxSignalOperation
@@ -42,7 +40,7 @@ private:
QString killProcessByNameCommandLine(const QString &filePath) const override;
QString interruptProcessByNameCommandLine(const QString &filePath) const override;
- friend class Qnx::QnxDevice;
+ friend class QnxDevice;
};
} // namespace Internal
diff --git a/src/plugins/qnx/qnxdevicetester.cpp b/src/plugins/qnx/qnxdevicetester.cpp
index b1374519d8..5196043ad2 100644
--- a/src/plugins/qnx/qnxdevicetester.cpp
+++ b/src/plugins/qnx/qnxdevicetester.cpp
@@ -113,8 +113,7 @@ void QnxDeviceTester::handleGenericTestFinished(TestResult result)
m_state = VarRunTest;
emit progressMessage(tr("Checking that files can be created in /var/run..."));
m_processRunner->run(QStringLiteral("rm %1 > /dev/null 2>&1; echo ABC > %1 && rm %1")
- .arg("/var/run/qtc_xxxx.pid")
- .toLatin1(),
+ .arg("/var/run/qtc_xxxx.pid"),
m_deviceConfiguration->sshParameters());
}
@@ -189,7 +188,7 @@ void QnxDeviceTester::testNextCommand()
QString command = m_commandsToTest[m_currentCommandIndex];
emit progressMessage(tr("Checking for %1...").arg(command));
- m_processRunner->run("command -v " + command.toLatin1(), m_deviceConfiguration->sshParameters());
+ m_processRunner->run("command -v " + command, m_deviceConfiguration->sshParameters());
}
void QnxDeviceTester::setFinished()
diff --git a/src/plugins/qnx/qnxplugin.cpp b/src/plugins/qnx/qnxplugin.cpp
index e316742f2c..06f2701715 100644
--- a/src/plugins/qnx/qnxplugin.cpp
+++ b/src/plugins/qnx/qnxplugin.cpp
@@ -30,9 +30,7 @@
#include "qnxconstants.h"
#include "qnxdebugsupport.h"
#include "qnxdevice.h"
-#include "qnxdevicefactory.h"
#include "qnxqtversion.h"
-#include "qnxqtversionfactory.h"
#include "qnxrunconfiguration.h"
#include "qnxsettingspage.h"
#include "qnxtoolchain.h"
@@ -89,7 +87,7 @@ public:
setConfigBaseId(Constants::QNX_QNX_DEPLOYCONFIGURATION_ID);
setDefaultDisplayName(QCoreApplication::translate("Qnx::Internal::QnxDeployConfiguration",
"Deploy to QNX Device"));
- addSupportedTargetDeviceType(QnxDeviceFactory::deviceType());
+ addSupportedTargetDeviceType(Constants::QNX_QNX_OS_TYPE);
setUseDeploymentDataView();
addInitialStep(DeviceCheckBuildStep::stepId());
@@ -116,6 +114,13 @@ public:
QnxRunConfigurationFactory runConfigFactory;
QnxSettingsPage settingsPage;
QnxToolChainFactory toolChainFactory;
+
+ SimpleRunWorkerFactory<SimpleTargetRunner, QnxRunConfiguration>
+ runWorkerFactory{ProjectExplorer::Constants::NORMAL_RUN_MODE};
+ SimpleRunWorkerFactory<QnxDebugSupport, QnxRunConfiguration>
+ debugWorkerFactory{ProjectExplorer::Constants::DEBUG_RUN_MODE};
+ SimpleRunWorkerFactory<QnxQmlProfilerSupport, QnxRunConfiguration>
+ qmlProfilerWorkerFactory;
};
static QnxPluginPrivate *dd = nullptr;
@@ -132,24 +137,6 @@ bool QnxPlugin::initialize(const QStringList &arguments, QString *errorString)
dd = new QnxPluginPrivate;
- auto constraint = [](RunConfiguration *runConfig) {
- if (!runConfig->isEnabled()
- || !runConfig->id().name().startsWith(Constants::QNX_QNX_RUNCONFIGURATION_PREFIX)) {
- return false;
- }
-
- auto dev = DeviceKitInformation::device(runConfig->target()->kit())
- .dynamicCast<const QnxDevice>();
- return !dev.isNull();
- };
-
- RunControl::registerWorker<SimpleTargetRunner>
- (ProjectExplorer::Constants::NORMAL_RUN_MODE, constraint);
- RunControl::registerWorker<QnxDebugSupport>
- (ProjectExplorer::Constants::DEBUG_RUN_MODE, constraint);
- RunControl::registerWorker<QnxQmlProfilerSupport>
- (ProjectExplorer::Constants::QML_PROFILER_RUN_MODE, constraint);
-
return true;
}
@@ -174,15 +161,11 @@ void QnxPlugin::extensionsInitialized()
void QnxPluginPrivate::updateDebuggerActions()
{
- bool hasValidQnxKit = false;
-
- auto matcher = DeviceTypeKitInformation::deviceTypePredicate(Constants::QNX_QNX_OS_TYPE);
- foreach (Kit *qnxKit, KitManager::kits(matcher)) {
- if (qnxKit->isValid() && !DeviceKitInformation::device(qnxKit).isNull()) {
- hasValidQnxKit = true;
- break;
- }
- }
+ const bool hasValidQnxKit = KitManager::kit([](const Kit *kit) {
+ return kit->isValid()
+ && DeviceTypeKitAspect::deviceTypeId(kit) == Constants::QNX_QNX_OS_TYPE
+ && !DeviceKitAspect::device(kit).isNull();
+ }) != nullptr;
m_attachToQnxApplication.setVisible(hasValidQnxKit);
m_debugSeparator->setVisible(hasValidQnxKit);
diff --git a/src/plugins/qnx/qnxqtversion.cpp b/src/plugins/qnx/qnxqtversion.cpp
index 7e8540139b..ffddcf7811 100644
--- a/src/plugins/qnx/qnxqtversion.cpp
+++ b/src/plugins/qnx/qnxqtversion.cpp
@@ -46,23 +46,6 @@ static char SDP_PATH_KEY[] = "SDKPath";
QnxQtVersion::QnxQtVersion() = default;
-QnxQtVersion::QnxQtVersion(const Utils::FileName &path, bool isAutoDetected,
- const QString &autoDetectionSource) :
- QtSupport::BaseQtVersion(path, isAutoDetected, autoDetectionSource)
-{
- setUnexpandedDisplayName(defaultUnexpandedDisplayName(path, false));
-}
-
-QnxQtVersion *QnxQtVersion::clone() const
-{
- return new QnxQtVersion(*this);
-}
-
-QString QnxQtVersion::type() const
-{
- return QLatin1String(Constants::QNX_QNX_QT);
-}
-
QString QnxQtVersion::description() const
{
//: Qt Version is meant for QNX
@@ -97,17 +80,17 @@ QString QnxQtVersion::qnxHost() const
return QString();
}
-Utils::FileName QnxQtVersion::qnxTarget() const
+Utils::FilePath QnxQtVersion::qnxTarget() const
{
if (!m_environmentUpToDate)
updateEnvironment();
foreach (const Utils::EnvironmentItem &item, m_qnxEnv) {
if (item.name == QLatin1String(Constants::QNX_TARGET_KEY))
- return Utils::FileName::fromUserInput(item.value);
+ return Utils::FilePath::fromUserInput(item.value);
}
- return Utils::FileName();
+ return Utils::FilePath();
}
QString QnxQtVersion::cpuDir() const
@@ -135,10 +118,10 @@ void QnxQtVersion::fromMap(const QVariantMap &map)
setSdpPath(QDir::fromNativeSeparators(map.value(QLatin1String(SDP_PATH_KEY)).toString()));
}
-QList<ProjectExplorer::Abi> QnxQtVersion::detectQtAbis() const
+ProjectExplorer::Abis QnxQtVersion::detectQtAbis() const
{
ensureMkSpecParsed();
- return QnxUtils::convertAbis(qtAbisFromLibrary(qtCorePaths()));
+ return QnxUtils::convertAbis(BaseQtVersion::detectQtAbis());
}
void QnxQtVersion::addToEnvironment(const ProjectExplorer::Kit *k, Utils::Environment &env) const
@@ -206,5 +189,16 @@ QList<Utils::EnvironmentItem> QnxQtVersion::environment() const
return QnxUtils::qnxEnvironment(sdpPath());
}
+
+// Factory
+
+QnxQtVersionFactory::QnxQtVersionFactory()
+{
+ setQtVersionCreator([] { return new QnxQtVersion; });
+ setSupportedType(Constants::QNX_QNX_QT);
+ setPriority(50);
+ setRestrictionChecker([](const SetupData &setup) { return setup.isQnx; });
+}
+
} // namespace Internal
} // namespace Qnx
diff --git a/src/plugins/qnx/qnxqtversion.h b/src/plugins/qnx/qnxqtversion.h
index 6bea0ed4b1..6479954bf8 100644
--- a/src/plugins/qnx/qnxqtversion.h
+++ b/src/plugins/qnx/qnxqtversion.h
@@ -29,6 +29,7 @@
#include "qnxqtversion.h"
#include <qtsupport/baseqtversion.h>
+#include <qtsupport/qtversionfactory.h>
#include <utils/environment.h>
@@ -39,12 +40,6 @@ class QnxQtVersion : public QtSupport::BaseQtVersion
{
public:
QnxQtVersion();
- QnxQtVersion(const Utils::FileName &path,
- bool isAutoDetected = false,
- const QString &autoDetectionSource = QString());
- QnxQtVersion *clone() const override;
-
- QString type() const override;
QString description() const override;
@@ -52,14 +47,14 @@ public:
QSet<Core::Id> targetDeviceTypes() const override;
QString qnxHost() const;
- Utils::FileName qnxTarget() const;
+ Utils::FilePath qnxTarget() const;
QString cpuDir() const;
QVariantMap toMap() const override;
void fromMap(const QVariantMap &map) override;
- QList<ProjectExplorer::Abi> detectQtAbis() const override;
+ ProjectExplorer::Abis detectQtAbis() const override;
void addToEnvironment(const ProjectExplorer::Kit *k, Utils::Environment &env) const override;
Utils::Environment qmakeRunEnvironment() const override;
@@ -87,5 +82,11 @@ private:
mutable QList<Utils::EnvironmentItem> m_qnxEnv;
};
+class QnxQtVersionFactory : public QtSupport::QtVersionFactory
+{
+public:
+ QnxQtVersionFactory();
+};
+
} // namespace Internal
} // namespace Qnx
diff --git a/src/plugins/qnx/qnxqtversionfactory.cpp b/src/plugins/qnx/qnxqtversionfactory.cpp
deleted file mode 100644
index abf2743cc8..0000000000
--- a/src/plugins/qnx/qnxqtversionfactory.cpp
+++ /dev/null
@@ -1,79 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 BlackBerry Limited. All rights reserved.
-** Contact: KDAB (info@kdab.com)
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-****************************************************************************/
-
-#include "qnxqtversionfactory.h"
-
-#include "qnxconstants.h"
-#include "qnxutils.h"
-#include "qnxqtversion.h"
-
-#include <qtsupport/profilereader.h>
-
-#include <QFileInfo>
-
-using namespace Qnx;
-using namespace Qnx::Internal;
-
-QnxQtVersionFactory::QnxQtVersionFactory(QObject *parent) :
- QtSupport::QtVersionFactory(parent)
-{
-}
-
-QnxQtVersionFactory::~QnxQtVersionFactory() = default;
-
-bool QnxQtVersionFactory::canRestore(const QString &type)
-{
- return type == QLatin1String(Constants::QNX_QNX_QT);
-}
-
-QtSupport::BaseQtVersion *QnxQtVersionFactory::restore(const QString &type, const QVariantMap &data)
-{
- if (!canRestore(type))
- return nullptr;
- auto v = new QnxQtVersion;
- v->fromMap(data);
- return v;
-}
-
-int QnxQtVersionFactory::priority() const
-{
- return 50;
-}
-
-QtSupport::BaseQtVersion *QnxQtVersionFactory::create(const Utils::FileName &qmakePath,
- ProFileEvaluator *evaluator,
- bool isAutoDetected,
- const QString &autoDetectionSource)
-{
- QFileInfo fi = qmakePath.toFileInfo();
- if (!fi.exists() || !fi.isExecutable() || !fi.isFile())
- return nullptr;
-
- if (evaluator->contains(QLatin1String("QNX_CPUDIR"))) {
- return new QnxQtVersion(qmakePath, isAutoDetected, autoDetectionSource);
- }
-
- return nullptr;
-}
diff --git a/src/plugins/qnx/qnxqtversionfactory.h b/src/plugins/qnx/qnxqtversionfactory.h
deleted file mode 100644
index e15165be42..0000000000
--- a/src/plugins/qnx/qnxqtversionfactory.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 BlackBerry Limited. All rights reserved.
-** Contact: KDAB (info@kdab.com)
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-****************************************************************************/
-
-#pragma once
-
-#include <qtsupport/qtversionfactory.h>
-
-namespace Qnx {
-namespace Internal {
-
-class QnxQtVersionFactory : public QtSupport::QtVersionFactory
-{
- Q_OBJECT
-public:
- explicit QnxQtVersionFactory(QObject *parent = nullptr);
- ~QnxQtVersionFactory() override;
-
- bool canRestore(const QString &type) override;
- QtSupport::BaseQtVersion *restore(const QString &type, const QVariantMap &data) override;
-
- int priority() const override;
- QtSupport::BaseQtVersion *create(const Utils::FileName &qmakePath,
- ProFileEvaluator *evaluator,
- bool isAutoDetected = false,
- const QString &autoDetectionSource = QString()) override;
-};
-
-} // namespace Internal
-} // namespace Qnx
diff --git a/src/plugins/qnx/qnxrunconfiguration.cpp b/src/plugins/qnx/qnxrunconfiguration.cpp
index f9aa3b93fc..d098daabb8 100644
--- a/src/plugins/qnx/qnxrunconfiguration.cpp
+++ b/src/plugins/qnx/qnxrunconfiguration.cpp
@@ -27,6 +27,8 @@
#include "qnxconstants.h"
+#include <projectexplorer/runcontrol.h>
+
using namespace ProjectExplorer;
using namespace RemoteLinux;
diff --git a/src/plugins/qnx/qnxsettingswidget.cpp b/src/plugins/qnx/qnxsettingswidget.cpp
index 6ca598db6a..cafc639ce7 100644
--- a/src/plugins/qnx/qnxsettingswidget.cpp
+++ b/src/plugins/qnx/qnxsettingswidget.cpp
@@ -49,7 +49,7 @@ QnxSettingsWidget::QnxSettingsWidget(QWidget *parent) :
this, &QnxSettingsWidget::addConfiguration);
connect(m_ui->removeButton, &QAbstractButton::clicked,
this, &QnxSettingsWidget::removeConfiguration);
- connect(m_ui->configsCombo, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
+ connect(m_ui->configsCombo, QOverload<int>::of(&QComboBox::currentIndexChanged),
this, &QnxSettingsWidget::updateInformation);
connect(m_ui->generateKitsCheckBox, &QAbstractButton::toggled,
this, &QnxSettingsWidget::generateKits);
@@ -83,7 +83,7 @@ void QnxSettingsWidget::addConfiguration()
if (envFile.isEmpty())
return;
- QnxConfiguration *config = new QnxConfiguration(Utils::FileName::fromString(envFile));
+ QnxConfiguration *config = new QnxConfiguration(Utils::FilePath::fromString(envFile));
if (m_qnxConfigManager->configurations().contains(config)
|| !config->isValid()) {
QMessageBox::warning(Core::ICore::mainWindow(), tr("Warning"),
diff --git a/src/plugins/qnx/qnxtoolchain.cpp b/src/plugins/qnx/qnxtoolchain.cpp
index 8dc621442c..0a515287ea 100644
--- a/src/plugins/qnx/qnxtoolchain.cpp
+++ b/src/plugins/qnx/qnxtoolchain.cpp
@@ -44,16 +44,16 @@ namespace Internal {
static const char CompilerSdpPath[] = "Qnx.QnxToolChain.NDKPath";
static const char CpuDirKey[] = "Qnx.QnxToolChain.CpuDir";
-static QList<Abi> detectTargetAbis(const FileName &sdpPath)
+static Abis detectTargetAbis(const FilePath &sdpPath)
{
- QList<Abi> result;
- FileName qnxTarget;
+ Abis result;
+ FilePath qnxTarget;
if (!sdpPath.fileName().isEmpty()) {
QList<Utils::EnvironmentItem> environment = QnxUtils::qnxEnvironment(sdpPath.toString());
foreach (const Utils::EnvironmentItem &item, environment) {
- if (item.name == QLatin1Literal("QNX_TARGET"))
- qnxTarget = FileName::fromString(item.value);
+ if (item.name == QLatin1String("QNX_TARGET"))
+ qnxTarget = FilePath::fromString(item.value);
}
}
@@ -100,19 +100,12 @@ static QStringList reinterpretOptions(const QStringList &args)
return arguments;
}
-QnxToolChain::QnxToolChain(ToolChain::Detection d)
- : GccToolChain(Constants::QNX_TOOLCHAIN_ID, d)
+QnxToolChain::QnxToolChain()
+ : GccToolChain(Constants::QNX_TOOLCHAIN_ID)
{
setOptionsReinterpreter(&reinterpretOptions);
}
-QnxToolChain::QnxToolChain(Core::Id l, ToolChain::Detection d)
- : QnxToolChain(d)
-{
- setLanguage(l);
-}
-
-
QString QnxToolChain::typeDisplayName() const
{
return QnxToolChainFactory::tr("QCC");
@@ -131,15 +124,14 @@ void QnxToolChain::addToEnvironment(Environment &env) const
GccToolChain::addToEnvironment(env);
}
-FileNameList QnxToolChain::suggestedMkspecList() const
+QStringList QnxToolChain::suggestedMkspecList() const
{
- FileNameList mkspecList;
- mkspecList << FileName::fromLatin1("qnx-armle-v7-qcc");
- mkspecList << FileName::fromLatin1("qnx-x86-qcc");
- mkspecList << FileName::fromLatin1("qnx-aarch64le-qcc");
- mkspecList << FileName::fromLatin1("qnx-x86-64-qcc");
-
- return mkspecList;
+ return {
+ "qnx-armle-v7-qcc",
+ "qnx-x86-qcc",
+ "qnx-aarch64le-qcc",
+ "qnx-x86-64-qcc"
+ };
}
QVariantMap QnxToolChain::toMap() const
@@ -193,7 +185,7 @@ void QnxToolChain::setCpuDir(const QString &cpuDir)
GccToolChain::DetectedAbisResult QnxToolChain::detectSupportedAbis() const
{
- return detectTargetAbis(FileName::fromString(m_sdpPath));
+ return detectTargetAbis(FilePath::fromString(m_sdpPath));
}
bool QnxToolChain::operator ==(const ToolChain &other) const
@@ -213,6 +205,10 @@ bool QnxToolChain::operator ==(const ToolChain &other) const
QnxToolChainFactory::QnxToolChainFactory()
{
setDisplayName(tr("QCC"));
+ setSupportedToolChainType(Constants::QNX_TOOLCHAIN_ID);
+ setSupportedLanguages({ProjectExplorer::Constants::CXX_LANGUAGE_ID});
+ setToolchainConstructor([] { return new QnxToolChain; });
+ setUserCreatable(true);
}
QList<ProjectExplorer::ToolChain *> QnxToolChainFactory::autoDetect(
@@ -226,36 +222,6 @@ QList<ProjectExplorer::ToolChain *> QnxToolChainFactory::autoDetect(
return tcs;
}
-QSet<Core::Id> QnxToolChainFactory::supportedLanguages() const
-{
- return {ProjectExplorer::Constants::CXX_LANGUAGE_ID};
-}
-
-bool QnxToolChainFactory::canRestore(const QVariantMap &data)
-{
- return typeIdFromMap(data) == Constants::QNX_TOOLCHAIN_ID;
-}
-
-ToolChain *QnxToolChainFactory::restore(const QVariantMap &data)
-{
- auto tc = new QnxToolChain(ToolChain::ManualDetection);
- if (tc->fromMap(data))
- return tc;
-
- delete tc;
- return nullptr;
-}
-
-bool QnxToolChainFactory::canCreate()
-{
- return true;
-}
-
-ToolChain *QnxToolChainFactory::create(Core::Id l)
-{
- return new QnxToolChain(l, ToolChain::ManualDetection);
-}
-
//---------------------------------------------------------------------------------
// QnxToolChainConfigWidget
//---------------------------------------------------------------------------------
@@ -276,7 +242,7 @@ QnxToolChainConfigWidget::QnxToolChainConfigWidget(QnxToolChain *tc)
m_sdpPath->setPath(tc->sdpPath());
m_sdpPath->setEnabled(!tc->isAutoDetected());
- QList<Abi> abiList = detectTargetAbis(m_sdpPath->fileName());
+ const Abis abiList = detectTargetAbis(m_sdpPath->fileName());
m_abiWidget->setAbis(abiList, tc->targetAbi());
m_abiWidget->setEnabled(!tc->isAutoDetected() && !abiList.isEmpty());
@@ -328,9 +294,9 @@ bool QnxToolChainConfigWidget::isDirtyImpl() const
void QnxToolChainConfigWidget::handleSdpPathChange()
{
- Abi currentAbi = m_abiWidget->currentAbi();
- bool customAbi = m_abiWidget->isCustomAbi();
- QList<Abi> abiList = detectTargetAbis(m_sdpPath->fileName());
+ const Abi currentAbi = m_abiWidget->currentAbi();
+ const bool customAbi = m_abiWidget->isCustomAbi();
+ const Abis abiList = detectTargetAbis(m_sdpPath->fileName());
m_abiWidget->setEnabled(!abiList.isEmpty());
diff --git a/src/plugins/qnx/qnxtoolchain.h b/src/plugins/qnx/qnxtoolchain.h
index 8474714b78..b514ac15f3 100644
--- a/src/plugins/qnx/qnxtoolchain.h
+++ b/src/plugins/qnx/qnxtoolchain.h
@@ -34,15 +34,14 @@ namespace Internal {
class QnxToolChain : public ProjectExplorer::GccToolChain
{
public:
- explicit QnxToolChain(Detection d);
- explicit QnxToolChain(Core::Id l, Detection d);
+ QnxToolChain();
QString typeDisplayName() const override;
std::unique_ptr<ProjectExplorer::ToolChainConfigWidget> createConfigurationWidget() override;
void addToEnvironment(Utils::Environment &env) const override;
- Utils::FileNameList suggestedMkspecList() const override;
+ QStringList suggestedMkspecList() const override;
QVariantMap toMap() const override;
bool fromMap(const QVariantMap &data) override;
@@ -75,14 +74,6 @@ public:
QList<ProjectExplorer::ToolChain *> autoDetect(
const QList<ProjectExplorer::ToolChain *> &alreadyKnown) override;
-
- QSet<Core::Id> supportedLanguages() const override;
-
- bool canRestore(const QVariantMap &data) override;
- ProjectExplorer::ToolChain *restore(const QVariantMap &data) override;
-
- bool canCreate() override;
- ProjectExplorer::ToolChain *create(Core::Id l) override;
};
//----------------------------------------------------------------------------
diff --git a/src/plugins/qnx/qnxutils.cpp b/src/plugins/qnx/qnxutils.cpp
index 8178c33f09..9d61864558 100644
--- a/src/plugins/qnx/qnxutils.cpp
+++ b/src/plugins/qnx/qnxutils.cpp
@@ -211,7 +211,7 @@ QList<Utils::EnvironmentItem> QnxUtils::qnxEnvironment(const QString &sdpPath)
return qnxEnvironmentFromEnvFile(envFilePath(sdpPath));
}
-QList<QnxTarget> QnxUtils::findTargets(const Utils::FileName &basePath)
+QList<QnxTarget> QnxUtils::findTargets(const Utils::FilePath &basePath)
{
using namespace Utils;
QList<QnxTarget> result;
@@ -219,7 +219,7 @@ QList<QnxTarget> QnxUtils::findTargets(const Utils::FileName &basePath)
QDirIterator iterator(basePath.toString());
while (iterator.hasNext()) {
iterator.next();
- FileName libc = FileName::fromString(iterator.filePath()).appendPath("lib/libc.so");
+ const FilePath libc = FilePath::fromString(iterator.filePath()).pathAppended("lib/libc.so");
if (libc.exists()) {
auto abis = Abi::abisOfBinary(libc);
if (abis.isEmpty()) {
@@ -230,7 +230,7 @@ QList<QnxTarget> QnxUtils::findTargets(const Utils::FileName &basePath)
if (abis.count() > 1)
qWarning() << libc << "has more than one ABI ... processing all";
- FileName path = FileName::fromString(iterator.filePath());
+ FilePath path = FilePath::fromString(iterator.filePath());
for (Abi abi : abis)
result.append(QnxTarget(path, QnxUtils::convertAbi(abi)));
}
@@ -251,7 +251,7 @@ Abi QnxUtils::convertAbi(const Abi &abi)
return abi;
}
-QList<Abi> QnxUtils::convertAbis(const QList<Abi> &abis)
+Abis QnxUtils::convertAbis(const Abis &abis)
{
return Utils::transform(abis, &QnxUtils::convertAbi);
}
diff --git a/src/plugins/qnx/qnxutils.h b/src/plugins/qnx/qnxutils.h
index 505a1a5bff..ae8367e43b 100644
--- a/src/plugins/qnx/qnxutils.h
+++ b/src/plugins/qnx/qnxutils.h
@@ -57,11 +57,11 @@ public:
class QnxTarget
{
public:
- QnxTarget(const Utils::FileName &path, const ProjectExplorer::Abi &abi) :
+ QnxTarget(const Utils::FilePath &path, const ProjectExplorer::Abi &abi) :
m_path(path), m_abi(abi)
{
}
- Utils::FileName m_path;
+ Utils::FilePath m_path;
ProjectExplorer::Abi m_abi;
};
@@ -75,9 +75,9 @@ public:
static QString defaultTargetVersion(const QString &sdpPath);
static QList<ConfigInstallInformation> installedConfigs(const QString &configPath = QString());
static QList<Utils::EnvironmentItem> qnxEnvironment(const QString &sdpPath);
- static QList<QnxTarget> findTargets(const Utils::FileName &basePath);
+ static QList<QnxTarget> findTargets(const Utils::FilePath &basePath);
static ProjectExplorer::Abi convertAbi(const ProjectExplorer::Abi &abi);
- static QList<ProjectExplorer::Abi> convertAbis(const QList<ProjectExplorer::Abi> &abis);
+ static ProjectExplorer::Abis convertAbis(const ProjectExplorer::Abis &abis);
};
} // namespace Internal
diff --git a/src/plugins/qnx/slog2inforunner.cpp b/src/plugins/qnx/slog2inforunner.cpp
index 113d589a3c..aec6d74a6f 100644
--- a/src/plugins/qnx/slog2inforunner.cpp
+++ b/src/plugins/qnx/slog2inforunner.cpp
@@ -45,7 +45,7 @@ Slog2InfoRunner::Slog2InfoRunner(RunControl *runControl)
: RunWorker(runControl)
{
setId("Slog2InfoRunner");
- m_applicationId = runControl->runConfiguration()->aspect<ExecutableAspect>()->executable().fileName();
+ m_applicationId = runControl->aspect<ExecutableAspect>()->executable().fileName();
// See QTCREATORBUG-10712 for details.
// We need to limit length of ApplicationId to 63 otherwise it would not match one in slog2info.
diff --git a/src/plugins/qnx/slog2inforunner.h b/src/plugins/qnx/slog2inforunner.h
index 048915baac..3aa94a9878 100644
--- a/src/plugins/qnx/slog2inforunner.h
+++ b/src/plugins/qnx/slog2inforunner.h
@@ -27,7 +27,7 @@
#include <QObject>
-#include <projectexplorer/runconfiguration.h>
+#include <projectexplorer/runcontrol.h>
#include <remotelinux/linuxdevice.h>
#include <utils/outputformat.h>