aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/mesonprojectmanager
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2024-01-29 16:23:03 +0100
committerhjk <hjk@qt.io>2024-01-30 08:01:16 +0000
commit0ef72f3c6ce16833763fc989b72e39f74eb0d123 (patch)
tree225bc86cbcc63092a6f5bb7f526d7dd2651e822a /src/plugins/mesonprojectmanager
parent9a44a543a52a308f9c4223148642323b3fd26d81 (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')
-rw-r--r--src/plugins/mesonprojectmanager/mesonbuildsystem.cpp24
-rw-r--r--src/plugins/mesonprojectmanager/mesonbuildsystem.h16
-rw-r--r--src/plugins/mesonprojectmanager/mesonpluginconstants.h2
-rw-r--r--src/plugins/mesonprojectmanager/mesonprojectplugin.cpp13
-rw-r--r--src/plugins/mesonprojectmanager/mesonrunconfiguration.cpp30
-rw-r--r--src/plugins/mesonprojectmanager/mesonrunconfiguration.h9
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