aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/mesonprojectmanager
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2024-01-29 15:47:20 +0100
committerhjk <hjk@qt.io>2024-01-30 08:00:30 +0000
commit9a44a543a52a308f9c4223148642323b3fd26d81 (patch)
tree8dd5bbeb19af16f7418fdcf7e57673470685c420 /src/plugins/mesonprojectmanager
parenta9a5972a9f393addba4b175a329f925d6338a31c (diff)
Meson: Use setup functions for a few plugin items
Change-Id: I849698315cd8c03ab44317d90dd3754dcfe46146 Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
Diffstat (limited to 'src/plugins/mesonprojectmanager')
-rw-r--r--src/plugins/mesonprojectmanager/mesonbuildconfiguration.cpp57
-rw-r--r--src/plugins/mesonprojectmanager/mesonbuildconfiguration.h6
-rw-r--r--src/plugins/mesonprojectmanager/mesonprojectplugin.cpp10
-rw-r--r--src/plugins/mesonprojectmanager/ninjabuildstep.cpp32
-rw-r--r--src/plugins/mesonprojectmanager/ninjabuildstep.h12
-rw-r--r--src/plugins/mesonprojectmanager/toolssettingsaccessor.cpp24
-rw-r--r--src/plugins/mesonprojectmanager/toolssettingsaccessor.h19
-rw-r--r--src/plugins/mesonprojectmanager/toolssettingspage.cpp20
-rw-r--r--src/plugins/mesonprojectmanager/toolssettingspage.h8
9 files changed, 99 insertions, 89 deletions
diff --git a/src/plugins/mesonprojectmanager/mesonbuildconfiguration.cpp b/src/plugins/mesonprojectmanager/mesonbuildconfiguration.cpp
index 45543a5f261..93ce63ad564 100644
--- a/src/plugins/mesonprojectmanager/mesonbuildconfiguration.cpp
+++ b/src/plugins/mesonprojectmanager/mesonbuildconfiguration.cpp
@@ -351,32 +351,39 @@ BuildInfo createBuildInfo(MesonBuildType type)
return bInfo;
}
-MesonBuildConfigurationFactory::MesonBuildConfigurationFactory()
+// MesonBuildConfigurationFactory
+
+class MesonBuildConfigurationFactory final : public BuildConfigurationFactory
{
- registerBuildConfiguration<MesonBuildConfiguration>(Constants::MESON_BUILD_CONFIG_ID);
- setSupportedProjectType(Constants::Project::ID);
- setSupportedProjectMimeTypeName(Constants::Project::MIMETYPE);
- setBuildGenerator(
- [](const ProjectExplorer::Kit *k, const Utils::FilePath &projectPath, bool forSetup) {
- QList<ProjectExplorer::BuildInfo> result;
-
- Utils::FilePath path = forSetup
- ? Project::projectDirectory(projectPath)
- : projectPath;
- for (const auto &bType : {MesonBuildType::debug,
- MesonBuildType::release,
- MesonBuildType::debugoptimized,
- MesonBuildType::minsize}) {
- auto bInfo = createBuildInfo(bType);
- if (forSetup)
- bInfo.buildDirectory = shadowBuildDirectory(projectPath,
- k,
- bInfo.typeName,
- bInfo.buildType);
- result << bInfo;
- }
- return result;
- });
+public:
+ MesonBuildConfigurationFactory()
+ {
+ registerBuildConfiguration<MesonBuildConfiguration>(Constants::MESON_BUILD_CONFIG_ID);
+ setSupportedProjectType(Constants::Project::ID);
+ setSupportedProjectMimeTypeName(Constants::Project::MIMETYPE);
+ setBuildGenerator(
+ [](const Kit *k, const FilePath &projectPath, bool forSetup) {
+ QList<BuildInfo> result;
+ for (const MesonBuildType bType : {MesonBuildType::debug,
+ MesonBuildType::release,
+ MesonBuildType::debugoptimized,
+ MesonBuildType::minsize}) {
+ BuildInfo bInfo = createBuildInfo(bType);
+ if (forSetup)
+ bInfo.buildDirectory = shadowBuildDirectory(projectPath,
+ k,
+ bInfo.typeName,
+ bInfo.buildType);
+ result << bInfo;
+ }
+ return result;
+ });
+ }
+};
+
+void setupMesonBuildConfiguration()
+{
+ static MesonBuildConfigurationFactory theMesonBuildConfigurationFactory;
}
} // MesonProjectManager::Internal
diff --git a/src/plugins/mesonprojectmanager/mesonbuildconfiguration.h b/src/plugins/mesonprojectmanager/mesonbuildconfiguration.h
index 278722fea73..2ec2f9e00f4 100644
--- a/src/plugins/mesonprojectmanager/mesonbuildconfiguration.h
+++ b/src/plugins/mesonprojectmanager/mesonbuildconfiguration.h
@@ -39,10 +39,6 @@ private:
QString m_parameters;
};
-class MesonBuildConfigurationFactory final : public ProjectExplorer::BuildConfigurationFactory
-{
-public:
- MesonBuildConfigurationFactory();
-};
+void setupMesonBuildConfiguration();
} // MesonProjectManager::Internal
diff --git a/src/plugins/mesonprojectmanager/mesonprojectplugin.cpp b/src/plugins/mesonprojectmanager/mesonprojectplugin.cpp
index a9a233fa9ee..975763182cc 100644
--- a/src/plugins/mesonprojectmanager/mesonprojectplugin.cpp
+++ b/src/plugins/mesonprojectmanager/mesonprojectplugin.cpp
@@ -29,10 +29,6 @@ namespace MesonProjectManager::Internal {
class MesonProjectPluginPrivate
{
public:
- ToolsSettingsPage m_toolslSettingsPage;
- ToolsSettingsAccessor m_toolsSettings;
- MesonBuildStepFactory m_buildStepFactory;
- MesonBuildConfigurationFactory m_buildConfigurationFactory;
MesonRunConfigurationFactory m_runConfigurationFactory;
MesonActionsManager m_actions;
MachineFileManager m_machineFilesManager;
@@ -56,6 +52,12 @@ private:
{
d = new MesonProjectPluginPrivate;
+ setupToolsSettingsPage();
+ setupToolsSettingsAccessor();
+
+ setupMesonBuildConfiguration();
+ setupNinjaBuildStep();
+
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/ninjabuildstep.cpp b/src/plugins/mesonprojectmanager/ninjabuildstep.cpp
index 59d10acd2ba..ab8b2d396e6 100644
--- a/src/plugins/mesonprojectmanager/ninjabuildstep.cpp
+++ b/src/plugins/mesonprojectmanager/ninjabuildstep.cpp
@@ -3,7 +3,6 @@
#include "ninjabuildstep.h"
-#include "mesonbuildconfiguration.h"
#include "mesonbuildsystem.h"
#include "mesonpluginconstants.h"
#include "mesonprojectmanagertr.h"
@@ -27,8 +26,7 @@
using namespace ProjectExplorer;
using namespace Utils;
-namespace MesonProjectManager {
-namespace Internal {
+namespace MesonProjectManager::Internal {
const char TARGETS_KEY[] = "MesonProjectManager.BuildStep.BuildTargets";
const char TOOL_ARGUMENTS_KEY[] = "MesonProjectManager.BuildStep.AdditionalArguments";
@@ -182,13 +180,6 @@ void NinjaBuildStep::setupOutputFormatter(Utils::OutputFormatter *formatter)
});
}
-MesonBuildStepFactory::MesonBuildStepFactory()
-{
- registerStep<NinjaBuildStep>(Constants::MESON_BUILD_STEP_ID);
- setSupportedProjectType(Constants::Project::ID);
- setDisplayName(Tr::tr("Meson Build"));
-}
-
void NinjaBuildStep::setBuildTarget(const QString &targetName)
{
m_targetName = targetName;
@@ -213,5 +204,22 @@ void NinjaBuildStep::fromMap(const Store &map)
return AbstractProcessStep::fromMap(map);
}
-} // namespace Internal
-} // namespace MesonProjectManager
+// NinjaBuildStepFactory
+
+class NinjaBuildStepFactory final : public BuildStepFactory
+{
+public:
+ NinjaBuildStepFactory()
+ {
+ registerStep<NinjaBuildStep>(Constants::MESON_BUILD_STEP_ID);
+ setSupportedProjectType(Constants::Project::ID);
+ setDisplayName(Tr::tr("Meson Build"));
+ }
+};
+
+void setupNinjaBuildStep()
+{
+ static NinjaBuildStepFactory theNinjaBuildStepFactory;
+}
+
+} // MesonProjectManager::Internal
diff --git a/src/plugins/mesonprojectmanager/ninjabuildstep.h b/src/plugins/mesonprojectmanager/ninjabuildstep.h
index fd8b21334ae..052afc6b9b3 100644
--- a/src/plugins/mesonprojectmanager/ninjabuildstep.h
+++ b/src/plugins/mesonprojectmanager/ninjabuildstep.h
@@ -8,8 +8,7 @@
#include <projectexplorer/abstractprocessstep.h>
#include <projectexplorer/buildstep.h>
-namespace MesonProjectManager {
-namespace Internal {
+namespace MesonProjectManager::Internal {
class NinjaBuildStep final : public ProjectExplorer::AbstractProcessStep
{
@@ -39,11 +38,6 @@ private:
NinjaParser *m_ninjaParser = nullptr;
};
-class MesonBuildStepFactory final : public ProjectExplorer::BuildStepFactory
-{
-public:
- MesonBuildStepFactory();
-};
+void setupNinjaBuildStep();
-} // namespace Internal
-} // namespace MesonProjectManager
+} // MesonProjectManager::Internal
diff --git a/src/plugins/mesonprojectmanager/toolssettingsaccessor.cpp b/src/plugins/mesonprojectmanager/toolssettingsaccessor.cpp
index 80e5274c481..1fe381d0255 100644
--- a/src/plugins/mesonprojectmanager/toolssettingsaccessor.cpp
+++ b/src/plugins/mesonprojectmanager/toolssettingsaccessor.cpp
@@ -4,12 +4,12 @@
#include "toolssettingsaccessor.h"
#include "mesonpluginconstants.h"
-#include "mesonprojectmanagertr.h"
+#include "mesontools.h"
#include <coreplugin/icore.h>
-#include <coreplugin/icore.h>
#include <utils/filepath.h>
+#include <utils/settingsaccessor.h>
#include <utils/store.h>
#include <QGuiApplication>
@@ -20,14 +20,22 @@
using namespace Core;
using namespace Utils;
-namespace MesonProjectManager {
-namespace Internal {
+namespace MesonProjectManager::Internal {
static Key entryName(int index)
{
return numberedKey(Constants::ToolsSettings::ENTRY_KEY, index);
}
+class ToolsSettingsAccessor final : public UpgradingSettingsAccessor
+{
+public:
+ ToolsSettingsAccessor();
+
+ void saveMesonTools(const std::vector<MesonTools::Tool_t> &tools);
+ std::vector<MesonTools::Tool_t> loadMesonTools();
+};
+
ToolsSettingsAccessor::ToolsSettingsAccessor()
{
setDocType("QtCreatorMesonTools");
@@ -81,5 +89,9 @@ std::vector<MesonTools::Tool_t> ToolsSettingsAccessor::loadMesonTools()
return result;
}
-} // namespace Internal
-} // namespace MesonProjectManager
+void setupToolsSettingsAccessor()
+{
+ static ToolsSettingsAccessor theToolSettingsAccessor;
+}
+
+} // MesonProjectManager::Internal
diff --git a/src/plugins/mesonprojectmanager/toolssettingsaccessor.h b/src/plugins/mesonprojectmanager/toolssettingsaccessor.h
index 10fce88099d..2681094a5b6 100644
--- a/src/plugins/mesonprojectmanager/toolssettingsaccessor.h
+++ b/src/plugins/mesonprojectmanager/toolssettingsaccessor.h
@@ -3,21 +3,8 @@
#pragma once
-#include "mesontools.h"
+namespace MesonProjectManager::Internal {
-#include <utils/settingsaccessor.h>
+void setupToolsSettingsAccessor();
-namespace MesonProjectManager {
-namespace Internal {
-
-class ToolsSettingsAccessor final : public Utils::UpgradingSettingsAccessor
-{
-public:
- ToolsSettingsAccessor();
-
- void saveMesonTools(const std::vector<MesonTools::Tool_t> &tools);
- std::vector<MesonTools::Tool_t> loadMesonTools();
-};
-
-} // namespace Internal
-} // namespace MesonProjectManager
+} // MesonProjectManager::Internal
diff --git a/src/plugins/mesonprojectmanager/toolssettingspage.cpp b/src/plugins/mesonprojectmanager/toolssettingspage.cpp
index 67ecd99aacc..629513f8b5e 100644
--- a/src/plugins/mesonprojectmanager/toolssettingspage.cpp
+++ b/src/plugins/mesonprojectmanager/toolssettingspage.cpp
@@ -9,6 +9,8 @@
#include "toolsmodel.h"
#include "tooltreeitem.h"
+#include <coreplugin/dialogs/ioptionspage.h>
+
#include <utils/detailswidget.h>
#include <utils/layoutbuilder.h>
@@ -119,13 +121,21 @@ void ToolsSettingsWidget::currentMesonToolChanged(const QModelIndex &newCurrent)
m_removeButton->setEnabled(m_currentItem && !m_currentItem->isAutoDetected());
}
+class ToolsSettingsPage final : public Core::IOptionsPage
+{
+public:
+ ToolsSettingsPage()
+ {
+ setId(Constants::SettingsPage::TOOLS_ID);
+ setDisplayName(Tr::tr("Tools"));
+ setCategory(Constants::SettingsPage::CATEGORY);
+ setWidgetCreator([]() { return new ToolsSettingsWidget; });
+ }
+};
-ToolsSettingsPage::ToolsSettingsPage()
+void setupToolsSettingsPage()
{
- setId(Constants::SettingsPage::TOOLS_ID);
- setDisplayName(Tr::tr("Tools"));
- setCategory(Constants::SettingsPage::CATEGORY);
- setWidgetCreator([]() { return new ToolsSettingsWidget; });
+ static ToolsSettingsPage theToolsSettingsPage;
}
} // namespace MesonProjectManager
diff --git a/src/plugins/mesonprojectmanager/toolssettingspage.h b/src/plugins/mesonprojectmanager/toolssettingspage.h
index 815120c30f0..bd500cd0173 100644
--- a/src/plugins/mesonprojectmanager/toolssettingspage.h
+++ b/src/plugins/mesonprojectmanager/toolssettingspage.h
@@ -3,14 +3,8 @@
#pragma once
-#include <coreplugin/dialogs/ioptionspage.h>
-
namespace MesonProjectManager::Internal {
-class ToolsSettingsPage final : public Core::IOptionsPage
-{
-public:
- ToolsSettingsPage();
-};
+void setupToolsSettingsPage();
} // MesonProjectManager::Internal