diff options
Diffstat (limited to 'src/plugins/qnx')
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> |