From ad8b4f6997deac872535395df49677ed51911dd4 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Fri, 24 Jan 2025 16:48:30 +0100 Subject: Nim: Make BuildSystem classes "per build config" Change-Id: I626c4685660b447ddfee569d0a52f1dc53fad366 Reviewed-by: hjk --- src/plugins/nim/project/nimbleproject.cpp | 13 ++++++++----- src/plugins/nim/project/nimbleproject.h | 2 +- src/plugins/nim/project/nimproject.cpp | 12 ++++++------ src/plugins/nim/project/nimproject.h | 8 ++++++++ 4 files changed, 23 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/plugins/nim/project/nimbleproject.cpp b/src/plugins/nim/project/nimbleproject.cpp index 70bde36c72c..eac21c26a44 100644 --- a/src/plugins/nim/project/nimbleproject.cpp +++ b/src/plugins/nim/project/nimbleproject.cpp @@ -117,8 +117,8 @@ static NimbleMetadata parseMetadata(const FilePath &nimblePath, const FilePath & return result; } -NimbleBuildSystem::NimbleBuildSystem(Target *target) - : BuildSystem(target), m_projectScanner(target->project()) +NimbleBuildSystem::NimbleBuildSystem(BuildConfiguration *bc) + : BuildSystem(bc), m_projectScanner(bc->project()) { m_projectScanner.watchProjectFilePath(); @@ -140,9 +140,9 @@ NimbleBuildSystem::NimbleBuildSystem(Target *target) requestDelayedParse(); }); - connect(target->project(), &ProjectExplorer::Project::settingsLoaded, + connect(bc->project(), &ProjectExplorer::Project::settingsLoaded, this, &NimbleBuildSystem::loadSettings); - connect(target->project(), &ProjectExplorer::Project::aboutToSaveSettings, + connect(bc->project(), &ProjectExplorer::Project::aboutToSaveSettings, this, &NimbleBuildSystem::saveSettings); requestDelayedParse(); } @@ -286,7 +286,10 @@ class NimbleBuildConfiguration : public ProjectExplorer::BuildConfiguration }); } + ~NimbleBuildConfiguration() { delete m_buildSystem; } + BuildType buildType() const override { return m_buildType; } + BuildSystem *buildSystem() const override { return m_buildSystem; } void fromMap(const Utils::Store &map) override { @@ -310,6 +313,7 @@ private: emit buildTypeChanged(); } + NimbleBuildSystem * const m_buildSystem{new NimbleBuildSystem(this)}; BuildType m_buildType = ProjectExplorer::BuildConfiguration::Unknown; }; @@ -348,7 +352,6 @@ NimbleProject::NimbleProject(const FilePath &fileName) setDisplayName(fileName.completeBaseName()); // ensure debugging is enabled (Nim plugin translates nim code to C code) setProjectLanguages(Core::Context(ProjectExplorer::Constants::CXX_LANGUAGE_ID)); - setBuildSystemCreator(); } void NimbleProject::toMap(Store &map) const diff --git a/src/plugins/nim/project/nimbleproject.h b/src/plugins/nim/project/nimbleproject.h index beb9d82c654..4a61306235c 100644 --- a/src/plugins/nim/project/nimbleproject.h +++ b/src/plugins/nim/project/nimbleproject.h @@ -25,7 +25,7 @@ class NimbleBuildSystem final : public ProjectExplorer::BuildSystem Q_OBJECT public: - NimbleBuildSystem(ProjectExplorer::Target *target); + NimbleBuildSystem(ProjectExplorer::BuildConfiguration *bc); std::vector tasks() const; diff --git a/src/plugins/nim/project/nimproject.cpp b/src/plugins/nim/project/nimproject.cpp index d3eb6b2a6a7..fdd6f25c304 100644 --- a/src/plugins/nim/project/nimproject.cpp +++ b/src/plugins/nim/project/nimproject.cpp @@ -147,7 +147,7 @@ bool NimProjectScanner::renameFile(const QString &, const QString &to) class NimBuildSystem final : public BuildSystem { public: - explicit NimBuildSystem(Target *target); + explicit NimBuildSystem(BuildConfiguration *bc); bool supportsAction(Node *, ProjectAction action, const Node *node) const final; bool addFiles(Node *node, const FilePaths &filePaths, FilePaths *) final; @@ -168,8 +168,8 @@ protected: NimProjectScanner m_projectScanner; }; -NimBuildSystem::NimBuildSystem(Target *target) - : BuildSystem(target), m_projectScanner(target->project()) +NimBuildSystem::NimBuildSystem(BuildConfiguration *bc) + : BuildSystem(bc), m_projectScanner(bc->project()) { connect(&m_projectScanner, &NimProjectScanner::finished, this, [this] { m_guard.markAsSuccess(); @@ -267,7 +267,7 @@ static FilePath defaultBuildDirectory(const Kit *k, } NimBuildConfiguration::NimBuildConfiguration(Target *target, Utils::Id id) - : BuildConfiguration(target, id) + : BuildConfiguration(target, id), m_buildSystem(new NimBuildSystem(this)) { setConfigWidgetDisplayName(Tr::tr("General")); setConfigWidgetHasFrame(true); @@ -289,6 +289,8 @@ NimBuildConfiguration::NimBuildConfiguration(Target *target, Utils::Id id) }); } +NimBuildConfiguration::~NimBuildConfiguration() { delete m_buildSystem; } +BuildSystem *NimBuildConfiguration::buildSystem() const { return m_buildSystem; } FilePath NimBuildConfiguration::cacheDirectory() const { @@ -359,8 +361,6 @@ NimProject::NimProject(const FilePath &filePath) : Project(Constants::C_NIM_MIME setDisplayName(filePath.completeBaseName()); // ensure debugging is enabled (Nim plugin translates nim code to C code) setProjectLanguages(Core::Context(ProjectExplorer::Constants::CXX_LANGUAGE_ID)); - - setBuildSystemCreator(); } Tasks NimProject::projectIssues(const Kit *k) const diff --git a/src/plugins/nim/project/nimproject.h b/src/plugins/nim/project/nimproject.h index ae7c746edd9..a504f1ed512 100644 --- a/src/plugins/nim/project/nimproject.h +++ b/src/plugins/nim/project/nimproject.h @@ -10,6 +10,7 @@ #include namespace Nim { +class NimBuildSystem; class NimBuildConfiguration : public ProjectExplorer::BuildConfiguration { @@ -19,8 +20,15 @@ class NimBuildConfiguration : public ProjectExplorer::BuildConfiguration NimBuildConfiguration(ProjectExplorer::Target *target, Utils::Id id); public: + ~NimBuildConfiguration(); + Utils::FilePath cacheDirectory() const; Utils::FilePath outFilePath() const; + +private: + ProjectExplorer::BuildSystem *buildSystem() const; + + NimBuildSystem * const m_buildSystem; }; Utils::FilePath nimPathFromKit(ProjectExplorer::Kit *kit); -- cgit v1.2.3