diff --git a/src/plugins/baremetal/baremetalconstants.h b/src/plugins/baremetal/baremetalconstants.h index fb2eb792baa..1dba6eb96a9 100644 --- a/src/plugins/baremetal/baremetalconstants.h +++ b/src/plugins/baremetal/baremetalconstants.h @@ -14,6 +14,10 @@ const char MENU_ID[] = "BareMetal.Menu"; const char DEBUG_SERVER_PROVIDERS_SETTINGS_ID[] = "EE.BareMetal.DebugServerProvidersOptions"; +//FIXME: The values were wrong after c654677bf729369e, but we keep them for now. +const char BAREMETAL_CUSTOMRUNCONFIG_ID[] = "BareMetal"; // Sic! +const char BAREMETAL_RUNCONFIG_ID[] = "BareMetalCustom"; // Sic! + // GDB Debugger Server Provider Ids. const char GDBSERVER_OPENOCD_PROVIDER_ID[] = "BareMetal.GdbServerProvider.OpenOcd"; const char GDBSERVER_JLINK_PROVIDER_ID[] = "BareMetal.GdbServerProvider.JLink"; diff --git a/src/plugins/baremetal/baremetaldebugsupport.cpp b/src/plugins/baremetal/baremetaldebugsupport.cpp index 6a09a3c78c4..db0c376a5ad 100644 --- a/src/plugins/baremetal/baremetaldebugsupport.cpp +++ b/src/plugins/baremetal/baremetaldebugsupport.cpp @@ -3,6 +3,7 @@ #include "baremetaldebugsupport.h" +#include "baremetalconstants.h" #include "baremetaldevice.h" #include "baremetaltr.h" @@ -15,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -30,39 +32,53 @@ using namespace Utils; namespace BareMetal::Internal { -BareMetalDebugSupport::BareMetalDebugSupport(RunControl *runControl) - : Debugger::DebuggerRunTool(runControl) +class BareMetalDebugSupport final : public Debugger::DebuggerRunTool { - const auto dev = qSharedPointerCast(device()); - if (!dev) { - reportFailure(Tr::tr("Cannot debug: Kit has no device.")); - return; +public: + explicit BareMetalDebugSupport(ProjectExplorer::RunControl *runControl) + : Debugger::DebuggerRunTool(runControl) + { + const auto dev = qSharedPointerCast(device()); + if (!dev) { + reportFailure(Tr::tr("Cannot debug: Kit has no device.")); + return; + } + + const QString providerId = dev->debugServerProviderId(); + IDebugServerProvider *p = DebugServerProviderManager::findProvider(providerId); + if (!p) { + reportFailure(Tr::tr("No debug server provider found for %1").arg(providerId)); + return; + } + + if (RunWorker *runner = p->targetRunner(runControl)) + addStartDependency(runner); } - const QString providerId = dev->debugServerProviderId(); - IDebugServerProvider *p = DebugServerProviderManager::findProvider(providerId); - if (!p) { - reportFailure(Tr::tr("No debug server provider found for %1").arg(providerId)); - return; +private: + void start() final + { + const auto dev = qSharedPointerCast(device()); + QTC_ASSERT(dev, reportFailure(); return); + IDebugServerProvider *p = DebugServerProviderManager::findProvider( + dev->debugServerProviderId()); + QTC_ASSERT(p, reportFailure(); return); + + QString errorMessage; + if (!p->aboutToRun(this, errorMessage)) + reportFailure(errorMessage); + else + DebuggerRunTool::start(); } +}; - if (RunWorker *runner = p->targetRunner(runControl)) - addStartDependency(runner); -} - -void BareMetalDebugSupport::start() +BareMetalDebugSupportFactory::BareMetalDebugSupportFactory() { - const auto dev = qSharedPointerCast(device()); - QTC_ASSERT(dev, reportFailure(); return); - IDebugServerProvider *p = DebugServerProviderManager::findProvider( - dev->debugServerProviderId()); - QTC_ASSERT(p, reportFailure(); return); - - QString errorMessage; - if (!p->aboutToRun(this, errorMessage)) - reportFailure(errorMessage); - else - DebuggerRunTool::start(); + setProduct(); + addSupportedRunMode(ProjectExplorer::Constants::NORMAL_RUN_MODE); + addSupportedRunMode(ProjectExplorer::Constants::DEBUG_RUN_MODE); + addSupportedRunConfig(BareMetal::Constants::BAREMETAL_RUNCONFIG_ID); + addSupportedRunConfig(BareMetal::Constants::BAREMETAL_CUSTOMRUNCONFIG_ID); } } // BareMetal::Internal diff --git a/src/plugins/baremetal/baremetaldebugsupport.h b/src/plugins/baremetal/baremetaldebugsupport.h index c1869adc617..f0addb4729b 100644 --- a/src/plugins/baremetal/baremetaldebugsupport.h +++ b/src/plugins/baremetal/baremetaldebugsupport.h @@ -7,13 +7,11 @@ namespace BareMetal::Internal { -class BareMetalDebugSupport final : public Debugger::DebuggerRunTool +class BareMetalDebugSupportFactory final + : public ProjectExplorer::RunWorkerFactory { public: - explicit BareMetalDebugSupport(ProjectExplorer::RunControl *runControl); - -private: - void start() final; + BareMetalDebugSupportFactory(); }; } // BareMetal::Internal diff --git a/src/plugins/baremetal/baremetalplugin.cpp b/src/plugins/baremetal/baremetalplugin.cpp index d3f81b60fad..0a262e2467d 100644 --- a/src/plugins/baremetal/baremetalplugin.cpp +++ b/src/plugins/baremetal/baremetalplugin.cpp @@ -42,7 +42,6 @@ public: } }; - // BareMetalPluginPrivate class BareMetalPluginPrivate @@ -57,13 +56,7 @@ public: DebugServerProvidersSettingsPage debugServerProviderSettinsPage; DebugServerProviderManager debugServerProviderManager; BareMetalDeployConfigurationFactory deployConfigurationFactory; - - RunWorkerFactory runWorkerFactory{ - RunWorkerFactory::make(), - {ProjectExplorer::Constants::NORMAL_RUN_MODE, ProjectExplorer::Constants::DEBUG_RUN_MODE}, - {runConfigurationFactory.runConfigurationId(), - customRunConfigurationFactory.runConfigurationId()} - }; + BareMetalDebugSupportFactory runWorkerFactory; }; // BareMetalPlugin diff --git a/src/plugins/baremetal/baremetalrunconfiguration.cpp b/src/plugins/baremetal/baremetalrunconfiguration.cpp index 3613732b630..4fe6b090246 100644 --- a/src/plugins/baremetal/baremetalrunconfiguration.cpp +++ b/src/plugins/baremetal/baremetalrunconfiguration.cpp @@ -79,7 +79,7 @@ Tasks BareMetalCustomRunConfiguration::checkForIssues() const BareMetalRunConfigurationFactory::BareMetalRunConfigurationFactory() { - registerRunConfiguration("BareMetalCustom"); + registerRunConfiguration(Constants::BAREMETAL_RUNCONFIG_ID); setDecorateDisplayNames(true); addSupportedTargetDeviceType(BareMetal::Constants::BareMetalOsType); } @@ -89,7 +89,7 @@ BareMetalRunConfigurationFactory::BareMetalRunConfigurationFactory() BareMetalCustomRunConfigurationFactory::BareMetalCustomRunConfigurationFactory() : FixedRunConfigurationFactory(Tr::tr("Custom Executable"), true) { - registerRunConfiguration("BareMetal"); + registerRunConfiguration(Constants::BAREMETAL_CUSTOMRUNCONFIG_ID); addSupportedTargetDeviceType(BareMetal::Constants::BareMetalOsType); }