From 8bb5c96bf8bc363afa5da09ce1979614565d31ba Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 3 Sep 2020 15:38:25 -0400 Subject: cmLocalVisualStudio7Generator: Adopt SourcesVisited lookup table Move it up the hierarchy from `cmLocalVisualStudio10Generator`. Propagate contents from a target's dependencies as part of the main target iteration logic instead of as part of the generator-specific target generation. --- Source/cmLocalVisualStudio10Generator.cxx | 7 ------- Source/cmLocalVisualStudio10Generator.h | 9 --------- Source/cmLocalVisualStudio7Generator.cxx | 9 +++++++++ Source/cmLocalVisualStudio7Generator.h | 9 +++++++++ 4 files changed, 18 insertions(+), 16 deletions(-) diff --git a/Source/cmLocalVisualStudio10Generator.cxx b/Source/cmLocalVisualStudio10Generator.cxx index 98e9db9..3ed49a0 100644 --- a/Source/cmLocalVisualStudio10Generator.cxx +++ b/Source/cmLocalVisualStudio10Generator.cxx @@ -68,13 +68,6 @@ cmLocalVisualStudio10Generator::~cmLocalVisualStudio10Generator() void cmLocalVisualStudio10Generator::GenerateTarget(cmGeneratorTarget* target) { - auto& targetVisited = this->GetSourcesVisited(target); - auto& deps = this->GlobalGenerator->GetTargetDirectDepends(target); - for (auto& d : deps) { - // Take the union of visited source files of custom commands - auto depVisited = this->GetSourcesVisited(d); - targetVisited.insert(depVisited.begin(), depVisited.end()); - } if (static_cast(this->GlobalGenerator) ->TargetIsFortranOnly(target)) { this->cmLocalVisualStudio7Generator::GenerateTarget(target); diff --git a/Source/cmLocalVisualStudio10Generator.h b/Source/cmLocalVisualStudio10Generator.h index 631132e..45ee082 100644 --- a/Source/cmLocalVisualStudio10Generator.h +++ b/Source/cmLocalVisualStudio10Generator.h @@ -28,19 +28,10 @@ public: void ReadAndStoreExternalGUID(const std::string& name, const char* path) override; - std::set& GetSourcesVisited( - cmGeneratorTarget const* target) - { - return SourcesVisited[target]; - }; - protected: const char* ReportErrorLabel() const override; bool CustomCommandUseLocal() const override { return true; } private: void GenerateTarget(cmGeneratorTarget* target) override; - - std::map> - SourcesVisited; }; diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index 1ebd5da..362c3e7 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -86,6 +86,15 @@ void cmLocalVisualStudio7Generator::Generate() if (!gt->IsInBuildSystem() || gt->GetProperty("EXTERNAL_MSPROJECT")) { continue; } + + auto& gtVisited = this->GetSourcesVisited(gt); + auto& deps = this->GlobalGenerator->GetTargetDirectDepends(gt); + for (auto& d : deps) { + // Take the union of visited source files of custom commands + auto depVisited = this->GetSourcesVisited(d); + gtVisited.insert(depVisited.begin(), depVisited.end()); + } + this->GenerateTarget(gt); } diff --git a/Source/cmLocalVisualStudio7Generator.h b/Source/cmLocalVisualStudio7Generator.h index 9ccd1a1..6e06c09 100644 --- a/Source/cmLocalVisualStudio7Generator.h +++ b/Source/cmLocalVisualStudio7Generator.h @@ -83,6 +83,12 @@ public: virtual void ReadAndStoreExternalGUID(const std::string& name, const char* path); + std::set& GetSourcesVisited( + cmGeneratorTarget const* target) + { + return this->SourcesVisited[target]; + }; + protected: virtual void GenerateTarget(cmGeneratorTarget* target); @@ -148,4 +154,7 @@ private: bool FortranProject; bool WindowsCEProject; std::unique_ptr Internal; + + std::map> + SourcesVisited; }; -- cgit v0.12