diff options
author | Christian Kandeler <[email protected]> | 2025-01-24 16:48:30 +0100 |
---|---|---|
committer | Christian Kandeler <[email protected]> | 2025-01-29 12:05:30 +0000 |
commit | ad8b4f6997deac872535395df49677ed51911dd4 (patch) | |
tree | 910f7758a9cc19cd6a82b42a79429e6976114f85 /src/plugins/nim | |
parent | 601648a5ca2637597b0aa3784dc4277d998b1608 (diff) |
Nim: Make BuildSystem classes "per build config"
Change-Id: I626c4685660b447ddfee569d0a52f1dc53fad366
Reviewed-by: hjk <[email protected]>
Diffstat (limited to 'src/plugins/nim')
-rw-r--r-- | src/plugins/nim/project/nimbleproject.cpp | 13 | ||||
-rw-r--r-- | src/plugins/nim/project/nimbleproject.h | 2 | ||||
-rw-r--r-- | src/plugins/nim/project/nimproject.cpp | 12 | ||||
-rw-r--r-- | src/plugins/nim/project/nimproject.h | 8 |
4 files changed, 23 insertions, 12 deletions
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<NimbleBuildSystem>(); } 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<NimbleTask> 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<NimBuildSystem>(); } 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 <utils/filesystemwatcher.h> 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); |