From 0ef72f3c6ce16833763fc989b72e39f74eb0d123 Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 29 Jan 2024 16:23:03 +0100 Subject: [PATCH] Meson: Use setup functions for more plugin items Change-Id: Ibbb2526d1db980389487e599ddf53e4785d97b5e Reviewed-by: Jarek Kobus --- .../mesonprojectmanager/mesonbuildsystem.cpp | 24 +++++++++++++-- .../mesonprojectmanager/mesonbuildsystem.h | 16 ++-------- .../mesonpluginconstants.h | 2 ++ .../mesonprojectplugin.cpp | 13 ++++---- .../mesonrunconfiguration.cpp | 30 ++++++++++++++++--- .../mesonrunconfiguration.h | 9 ++---- 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 - #include #include #include -#include #include -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(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 #include +#include #include +#include #include #include +#include + using namespace ProjectExplorer; using namespace Utils; @@ -75,11 +79,29 @@ public: UseDyldSuffixAspect useDyldSuffix{this}; }; -MesonRunConfigurationFactory::MesonRunConfigurationFactory() +// MesonRunConfigurationFactory + +class MesonRunConfigurationFactory final : public RunConfigurationFactory { - registerRunConfiguration("MesonProjectManager.MesonRunConfiguration"); - addSupportedProjectType(Constants::Project::ID); - addSupportedTargetDeviceType(ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE); +public: + MesonRunConfigurationFactory() + { + registerRunConfiguration(Constants::MESON_RUNCONFIG_ID); + addSupportedProjectType(Constants::Project::ID); + addSupportedTargetDeviceType(ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE); + } +}; + +void setupMesonRunConfiguration() +{ + static MesonRunConfigurationFactory theMesonRunConfigurationFactory; +} + +void setupMesonRunAndDebugWorkers() +{ + 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 - namespace MesonProjectManager::Internal { -class MesonRunConfigurationFactory final : public ProjectExplorer::RunConfigurationFactory -{ -public: - MesonRunConfigurationFactory(); -}; +void setupMesonRunConfiguration(); +void setupMesonRunAndDebugWorkers(); } // MesonProjectManager::Internal