diff options
author | Stephen Kelly <steveire@gmail.com> | 2015-05-03 14:51:51 (GMT) |
---|---|---|
committer | Stephen Kelly <steveire@gmail.com> | 2015-05-14 18:36:28 (GMT) |
commit | 76b598319ffe507870f918cdafe7ba7d43d9e195 (patch) | |
tree | c59ad1f359fadad5386de7521470966d4ea3b18c | |
parent | 34c9ee2ed75e12c713bb49c699ac1dd882d1b8fa (diff) | |
download | CMake-76b598319ffe507870f918cdafe7ba7d43d9e195.zip CMake-76b598319ffe507870f918cdafe7ba7d43d9e195.tar.gz CMake-76b598319ffe507870f918cdafe7ba7d43d9e195.tar.bz2 |
cmLocalGenerator: Initialize state before creating cmMakefile.
Access the state from the local generator in the cmMakefile.
-rw-r--r-- | Source/cmLocalGenerator.cxx | 17 | ||||
-rw-r--r-- | Source/cmLocalGenerator.h | 5 | ||||
-rw-r--r-- | Source/cmMakefile.cxx | 16 |
3 files changed, 23 insertions, 15 deletions
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 2f2da20..c099a4d 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -51,6 +51,13 @@ cmLocalGenerator::cmLocalGenerator(cmGlobalGenerator* gg, if (parent) { parent->AddChild(this); + this->StateSnapshot = + this->GetState()->CreateSnapshot(parent->StateSnapshot); + } + else + { + this->StateSnapshot = + this->GetState()->CreateSnapshot(cmState::Snapshot(this->GetState())); } this->Makefile = new cmMakefile(this); @@ -573,6 +580,16 @@ void cmLocalGenerator::GenerateTargetManifest() } } +cmState* cmLocalGenerator::GetState() const +{ + return this->GlobalGenerator->GetCMakeInstance()->GetState(); +} + +cmState::Snapshot cmLocalGenerator::GetStateSnapshot() const +{ + return this->StateSnapshot; +} + void cmLocalGenerator::AddCustomCommandToCreateObject(const char* ofname, const std::string& lang, cmSourceFile& source, diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index 44a2d99..100d27b 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -13,6 +13,7 @@ #define cmLocalGenerator_h #include "cmStandardIncludes.h" +#include "cmState.h" class cmMakefile; class cmGlobalGenerator; @@ -88,6 +89,9 @@ public: const cmGlobalGenerator *GetGlobalGenerator() const { return this->GlobalGenerator; } + cmState* GetState() const; + cmState::Snapshot GetStateSnapshot() const; + /** * Convert something to something else. This is a centralized conversion * routine used by the generators to handle relative paths and the like. @@ -442,6 +446,7 @@ protected: void ReadInputFile(); cmMakefile *Makefile; + cmState::Snapshot StateSnapshot; cmGlobalGenerator *GlobalGenerator; std::vector<std::string> HomeDirectoryComponents; std::vector<std::string> StartDirectoryComponents; diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 4ded936..1a6d123 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -153,27 +153,13 @@ public: cmMakefile::cmMakefile(cmLocalGenerator* localGenerator) : Internal(new Internals), LocalGenerator(localGenerator), - StateSnapshot(localGenerator->GetGlobalGenerator() - ->GetCMakeInstance()->GetState()) + StateSnapshot(localGenerator->GetStateSnapshot()) { this->Internal->PushDefinitions(); this->Internal->VarInitStack.push(std::set<std::string>()); this->Internal->VarUsageStack.push(std::set<std::string>()); this->Internal->IsSourceFileTryCompile = false; - if (this->LocalGenerator->GetParent()) - { - cmMakefile* parentMf = this->LocalGenerator->GetParent()->GetMakefile(); - this->StateSnapshot = - this->GetState()->CreateSnapshot(parentMf->StateSnapshot); - } - else - { - this->StateSnapshot = - this->GetState()->CreateSnapshot(this->StateSnapshot); - } - - // Initialize these first since AddDefaultDefinitions calls AddDefinition this->WarnUnused = false; this->CheckSystemVars = false; |