diff options
author | hjk <hjk@qt.io> | 2024-01-29 16:23:03 +0100 |
---|---|---|
committer | hjk <hjk@qt.io> | 2024-01-30 08:01:16 +0000 |
commit | 0ef72f3c6ce16833763fc989b72e39f74eb0d123 (patch) | |
tree | 225bc86cbcc63092a6f5bb7f526d7dd2651e822a /src/plugins/mesonprojectmanager | |
parent | 9a44a543a52a308f9c4223148642323b3fd26d81 (diff) |
Meson: Use setup functions for more plugin items
Change-Id: Ibbb2526d1db980389487e599ddf53e4785d97b5e
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
Diffstat (limited to 'src/plugins/mesonprojectmanager')
6 files changed, 58 insertions, 36 deletions
diff --git a/src/plugins/mesonprojectmanager/mesonbuildsystem.cpp b/src/plugins/mesonprojectmanager/mesonbuildsystem.cpp index 9527d1beb70..8e7864bcbee 100644 --- a/src/plugins/mesonprojectmanager/mesonbuildsystem.cpp +++ b/src/plugins/mesonprojectmanager/mesonbuildsystem.cpp @@ -92,7 +92,7 @@ static FilePath machineFilesDir() return Core::ICore::userResourcePath("Meson-machine-files"); } -FilePath MachineFileManager::machineFile(const Kit *kit) +static FilePath machineFile(const Kit *kit) { QTC_ASSERT(kit, return {}); auto baseName @@ -101,6 +101,20 @@ FilePath MachineFileManager::machineFile(const Kit *kit) return machineFilesDir().pathAppended(baseName); } +// MachineFileManager + +class MachineFileManager final : public QObject +{ +public: + MachineFileManager(); + +private: + void addMachineFile(const Kit *kit); + void removeMachineFile(const Kit *kit); + void updateMachineFile(const Kit *kit); + void cleanupMachineFiles(); +}; + MachineFileManager::MachineFileManager() { connect(KitManager::instance(), &KitManager::kitAdded, @@ -268,8 +282,7 @@ QStringList MesonBuildSystem::configArgs(bool isSetup) if (!isSetup || params.contains("--cross-file") || params.contains("--native-file")) return m_pendingConfigArgs + bc->mesonConfigArgs(); - return QStringList{ - QString("--native-file=%1").arg(MachineFileManager::machineFile(kit()).toString())} + return QStringList{QString("--native-file=%1").arg(machineFile(kit()).toString())} + m_pendingConfigArgs + bc->mesonConfigArgs(); } @@ -332,4 +345,9 @@ void MesonBuildSystem::updateKit(ProjectExplorer::Kit *kit) m_parser.setQtVersion(m_kitData.qtVersion); } +void setupMesonBuildSystem() +{ + static MachineFileManager theMachineFileManager; +} + } // MesonProjectManager::Internal diff --git a/src/plugins/mesonprojectmanager/mesonbuildsystem.h b/src/plugins/mesonprojectmanager/mesonbuildsystem.h index bae78142a74..e909b011d2a 100644 --- a/src/plugins/mesonprojectmanager/mesonbuildsystem.h +++ b/src/plugins/mesonprojectmanager/mesonbuildsystem.h @@ -17,20 +17,6 @@ namespace MesonProjectManager::Internal { class MesonBuildConfiguration; -class MachineFileManager final : public QObject -{ -public: - MachineFileManager(); - - static Utils::FilePath machineFile(const ProjectExplorer::Kit *kit); - -private: - void addMachineFile(const ProjectExplorer::Kit *kit); - void removeMachineFile(const ProjectExplorer::Kit *kit); - void updateMachineFile(const ProjectExplorer::Kit *kit); - void cleanupMachineFiles(); -}; - class MesonBuildSystem final : public ProjectExplorer::BuildSystem { Q_OBJECT @@ -68,4 +54,6 @@ private: KitData m_kitData; }; +void setupMesonBuildSystem(); + } // MesonProjectManager::Internal diff --git a/src/plugins/mesonprojectmanager/mesonpluginconstants.h b/src/plugins/mesonprojectmanager/mesonpluginconstants.h index 108c125f502..1cc421c722c 100644 --- a/src/plugins/mesonprojectmanager/mesonpluginconstants.h +++ b/src/plugins/mesonprojectmanager/mesonpluginconstants.h @@ -54,6 +54,8 @@ const char MESON_INFO[] = "meson-info.json"; const char MESON_TOOL_MANAGER[] = "MesonProjectManager.Tools"; const char MESON_BUILD_STEP_ID[] = "MesonProjectManager.BuildStep"; +const char MESON_RUNCONFIG_ID[] = "MesonProjectManager.MesonRunConfiguration"; + namespace Targets { const char all[] = "all"; const char clean[] = "clean"; diff --git a/src/plugins/mesonprojectmanager/mesonprojectplugin.cpp b/src/plugins/mesonprojectmanager/mesonprojectplugin.cpp index 975763182cc..423a38eddb3 100644 --- a/src/plugins/mesonprojectmanager/mesonprojectplugin.cpp +++ b/src/plugins/mesonprojectmanager/mesonprojectplugin.cpp @@ -10,17 +10,13 @@ #include "toolssettingsaccessor.h" #include "toolssettingspage.h" -#include <debugger/debuggerruncontrol.h> - #include <extensionsystem/iplugin.h> #include <projectexplorer/projectexplorerconstants.h> #include <projectexplorer/projectmanager.h> -#include <projectexplorer/runcontrol.h> #include <utils/fsengine/fileiconprovider.h> -using namespace Debugger; using namespace ProjectExplorer; using namespace Utils; @@ -29,11 +25,7 @@ namespace MesonProjectManager::Internal { class MesonProjectPluginPrivate { public: - MesonRunConfigurationFactory m_runConfigurationFactory; MesonActionsManager m_actions; - MachineFileManager m_machineFilesManager; - SimpleTargetRunnerFactory m_mesonRunWorkerFactory{{m_runConfigurationFactory.runConfigurationId()}}; - SimpleDebugRunnerFactory m_mesonDebugRunWorkerFactory{{m_runConfigurationFactory.runConfigurationId()}}; }; class MesonProjectPlugin final : public ExtensionSystem::IPlugin @@ -55,10 +47,15 @@ private: setupToolsSettingsPage(); setupToolsSettingsAccessor(); + setupMesonBuildSystem(); setupMesonBuildConfiguration(); setupNinjaBuildStep(); + setupMesonRunConfiguration(); + setupMesonRunAndDebugWorkers(); + ProjectManager::registerProjectType<MesonProject>(Constants::Project::MIMETYPE); + FileIconProvider::registerIconOverlayForFilename(Constants::Icons::MESON, "meson.build"); FileIconProvider::registerIconOverlayForFilename(Constants::Icons::MESON, "meson_options.txt"); } diff --git a/src/plugins/mesonprojectmanager/mesonrunconfiguration.cpp b/src/plugins/mesonprojectmanager/mesonrunconfiguration.cpp index 64d9cb3eeb0..2b5a285a604 100644 --- a/src/plugins/mesonprojectmanager/mesonrunconfiguration.cpp +++ b/src/plugins/mesonprojectmanager/mesonrunconfiguration.cpp @@ -7,11 +7,15 @@ #include <projectexplorer/buildsystem.h> #include <projectexplorer/projectexplorerconstants.h> +#include <projectexplorer/runconfiguration.h> #include <projectexplorer/runconfigurationaspects.h> +#include <projectexplorer/runcontrol.h> #include <projectexplorer/target.h> #include <utils/hostosinfo.h> +#include <debugger/debuggerruncontrol.h> + using namespace ProjectExplorer; using namespace Utils; @@ -75,11 +79,29 @@ public: UseDyldSuffixAspect useDyldSuffix{this}; }; -MesonRunConfigurationFactory::MesonRunConfigurationFactory() +// MesonRunConfigurationFactory + +class MesonRunConfigurationFactory final : public RunConfigurationFactory +{ +public: + MesonRunConfigurationFactory() + { + registerRunConfiguration<MesonRunConfiguration>(Constants::MESON_RUNCONFIG_ID); + addSupportedProjectType(Constants::Project::ID); + addSupportedTargetDeviceType(ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE); + } +}; + +void setupMesonRunConfiguration() +{ + static MesonRunConfigurationFactory theMesonRunConfigurationFactory; +} + +void setupMesonRunAndDebugWorkers() { - registerRunConfiguration<MesonRunConfiguration>("MesonProjectManager.MesonRunConfiguration"); - addSupportedProjectType(Constants::Project::ID); - addSupportedTargetDeviceType(ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE); + using namespace Debugger; + static SimpleTargetRunnerFactory theMesonRunWorkerFactory({Constants::MESON_RUNCONFIG_ID}); + static SimpleDebugRunnerFactory theMesonDebugRunWorkerFactory({Constants::MESON_RUNCONFIG_ID}); } } // MesonProjectManager::Internal diff --git a/src/plugins/mesonprojectmanager/mesonrunconfiguration.h b/src/plugins/mesonprojectmanager/mesonrunconfiguration.h index 8c1f7580975..d68fe6cd488 100644 --- a/src/plugins/mesonprojectmanager/mesonrunconfiguration.h +++ b/src/plugins/mesonprojectmanager/mesonrunconfiguration.h @@ -3,14 +3,9 @@ #pragma once -#include <projectexplorer/runconfiguration.h> - namespace MesonProjectManager::Internal { -class MesonRunConfigurationFactory final : public ProjectExplorer::RunConfigurationFactory -{ -public: - MesonRunConfigurationFactory(); -}; +void setupMesonRunConfiguration(); +void setupMesonRunAndDebugWorkers(); } // MesonProjectManager::Internal |