From 61b48e70bc8d9add8b056030ebef97ffdb92512b Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Thu, 24 Sep 2015 09:34:53 +0200 Subject: Makefiles: Port to cmOutputConverter. --- Source/cmGlobalUnixMakefileGenerator3.cxx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Source/cmGlobalUnixMakefileGenerator3.cxx b/Source/cmGlobalUnixMakefileGenerator3.cxx index cf4fd69..1adc379 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.cxx +++ b/Source/cmGlobalUnixMakefileGenerator3.cxx @@ -603,7 +603,8 @@ void cmGlobalUnixMakefileGenerator3 { tname += "/fast"; } - tname = lg->Convert(tname,cmLocalGenerator::HOME_OUTPUT); + cmOutputConverter conv(mf->GetStateSnapshot()); + tname = conv.Convert(tname,cmOutputConverter::HOME_OUTPUT); cmSystemTools::ConvertToOutputSlashes(tname); makeCommand.push_back(tname); if (this->LocalGenerators.empty()) -- cgit v0.12 From 934aa454d0029c0cba26c7f971bdb76a1d789dc2 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Thu, 24 Sep 2015 09:35:55 +0200 Subject: Makefiles: Remove need to create local generator at configure time. This method is used during try_compile. --- Source/cmGlobalUnixMakefileGenerator3.cxx | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/Source/cmGlobalUnixMakefileGenerator3.cxx b/Source/cmGlobalUnixMakefileGenerator3.cxx index 1adc379..0064713 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.cxx +++ b/Source/cmGlobalUnixMakefileGenerator3.cxx @@ -578,23 +578,18 @@ void cmGlobalUnixMakefileGenerator3 if (!targetName.empty()) { cmMakefile* mf; - cmLocalUnixMakefileGenerator3 *lg; - if (!this->LocalGenerators.empty()) + if (!this->Makefiles.empty()) { - lg = static_cast - (this->LocalGenerators[0]); - mf = lg->GetMakefile(); + mf = this->Makefiles[0]; } else { cmState::Snapshot snapshot = this->CMakeInstance->GetCurrentSnapshot(); mf = new cmMakefile(this, snapshot); - lg = static_cast - (this->CreateLocalGenerator(mf)); // set the Start directories - lg->GetMakefile()->SetCurrentSourceDirectory + mf->SetCurrentSourceDirectory (this->CMakeInstance->GetHomeDirectory()); - lg->GetMakefile()->SetCurrentBinaryDirectory + mf->SetCurrentBinaryDirectory (this->CMakeInstance->GetHomeOutputDirectory()); } @@ -607,9 +602,8 @@ void cmGlobalUnixMakefileGenerator3 tname = conv.Convert(tname,cmOutputConverter::HOME_OUTPUT); cmSystemTools::ConvertToOutputSlashes(tname); makeCommand.push_back(tname); - if (this->LocalGenerators.empty()) + if (this->Makefiles.empty()) { - delete lg; delete mf; } } -- cgit v0.12 From 8a88089bbef4d72aa2c448877637c5ab34f6907c Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sun, 13 Sep 2015 20:31:17 +0200 Subject: cmMakefile: Create the local generator after configuring the makefile. The local generator is not used during configure time. --- Source/cmMakefile.cxx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 8a3d197..720a5e4 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1756,11 +1756,6 @@ void cmMakefile::AddSubDirectory(const std::string& srcPath, cmMakefile* subMf = new cmMakefile(this->GlobalGenerator, newSnapshot); this->GetGlobalGenerator()->AddMakefile(subMf); - // create a new local generator and set its parent - cmLocalGenerator *lg2 = this->GetGlobalGenerator() - ->CreateLocalGenerator(subMf); - this->GetGlobalGenerator()->AddLocalGenerator(lg2); - // set the subdirs start dirs subMf->SetCurrentSourceDirectory(srcPath); subMf->SetCurrentBinaryDirectory(binPath); @@ -1777,6 +1772,11 @@ void cmMakefile::AddSubDirectory(const std::string& srcPath, { this->UnConfiguredDirectories.push_back(subMf); } + + // create a new local generator and set its parent + cmLocalGenerator *lg2 = this->GetGlobalGenerator() + ->CreateLocalGenerator(subMf); + this->GetGlobalGenerator()->AddLocalGenerator(lg2); } void cmMakefile::SetCurrentSourceDirectory(const std::string& dir) -- cgit v0.12 From dd408de46b45926f7dfdd27cabb4dce95708d011 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sun, 13 Sep 2015 20:32:33 +0200 Subject: cmGlobalGenerator: Create local generator after configuring the makefile. --- Source/cmGlobalGenerator.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 7aa8bb6..7552c99 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1099,8 +1099,6 @@ void cmGlobalGenerator::Configure() cmMakefile* dirMf = new cmMakefile(this, this->GetCMakeInstance()->GetCurrentSnapshot()); this->Makefiles.push_back(dirMf); - cmLocalGenerator *lg = this->CreateLocalGenerator(dirMf); - this->LocalGenerators.push_back(lg); // set the Start directories dirMf->SetCurrentSourceDirectory @@ -1114,6 +1112,8 @@ void cmGlobalGenerator::Configure() // now do it this->ConfigureDoneCMP0026 = false; dirMf->Configure(); + this->LocalGenerators.insert(this->LocalGenerators.begin(), + this->CreateLocalGenerator(dirMf)); dirMf->EnforceDirectoryLevelRules(); this->ConfigureDoneCMP0026 = true; -- cgit v0.12 From c5f07e0537f2b671f271ad8ac4b6c0a529cd4beb Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sun, 13 Sep 2015 20:36:06 +0200 Subject: cmGlobalGenerator: Create local generators after all makefiles configured. --- Source/cmGlobalGenerator.cxx | 15 +++++++++++++-- Source/cmGlobalGenerator.h | 2 ++ Source/cmMakefile.cxx | 5 ----- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 7552c99..46ef2f3 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1091,6 +1091,18 @@ void cmGlobalGenerator::ClearEnabledLanguages() return this->CMakeInstance->GetState()->ClearEnabledLanguages(); } +void cmGlobalGenerator::CreateLocalGenerators() +{ + cmDeleteAll(this->LocalGenerators); + this->LocalGenerators.clear(); + this->LocalGenerators.reserve(this->Makefiles.size()); + for (std::vector::const_iterator it = this->Makefiles.begin(); + it != this->Makefiles.end(); ++it) + { + this->LocalGenerators.push_back(this->CreateLocalGenerator(*it)); + } +} + void cmGlobalGenerator::Configure() { this->FirstTimeProgress = 0.0f; @@ -1112,8 +1124,7 @@ void cmGlobalGenerator::Configure() // now do it this->ConfigureDoneCMP0026 = false; dirMf->Configure(); - this->LocalGenerators.insert(this->LocalGenerators.begin(), - this->CreateLocalGenerator(dirMf)); + this->CreateLocalGenerators(); dirMf->EnforceDirectoryLevelRules(); this->ConfigureDoneCMP0026 = true; diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index 40f98dc..b2dffcc 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -466,6 +466,8 @@ private: virtual void ForceLinkerLanguages(); + void CreateLocalGenerators(); + void CheckCompilerIdCompatibility(cmMakefile* mf, std::string const& lang) const; diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 720a5e4..6480667 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1772,11 +1772,6 @@ void cmMakefile::AddSubDirectory(const std::string& srcPath, { this->UnConfiguredDirectories.push_back(subMf); } - - // create a new local generator and set its parent - cmLocalGenerator *lg2 = this->GetGlobalGenerator() - ->CreateLocalGenerator(subMf); - this->GetGlobalGenerator()->AddLocalGenerator(lg2); } void cmMakefile::SetCurrentSourceDirectory(const std::string& dir) -- cgit v0.12 From 194bb06803c7dc005d9825de13bdb91fe6b7628f Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 19 Sep 2015 13:12:25 +0200 Subject: cmGlobalGenerator: Remove unused method. --- Source/cmGlobalGenerator.cxx | 6 ------ Source/cmGlobalGenerator.h | 1 - 2 files changed, 7 deletions(-) diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 46ef2f3..8e3a1ae 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1947,12 +1947,6 @@ void cmGlobalGenerator::AddMakefile(cmMakefile *mf) this->CMakeInstance->UpdateProgress("Configuring", prog); } -//---------------------------------------------------------------------------- -void cmGlobalGenerator::AddLocalGenerator(cmLocalGenerator *lg) -{ - this->LocalGenerators.push_back(lg); -} - void cmGlobalGenerator::AddInstallComponent(const char* component) { if(component && *component) diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index b2dffcc..83cbc3f 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -186,7 +186,6 @@ public: {this->CurrentMakefile = mf;} void AddMakefile(cmMakefile *mf); - void AddLocalGenerator(cmLocalGenerator *lg); ///! Set an generator for an "external makefile based project" void SetExternalMakefileProjectGenerator( -- cgit v0.12 From 2c2479fbed07457529156be637540ae5e0b0afe7 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sun, 2 Aug 2015 12:12:18 +0200 Subject: cmGlobalGenerator: Create all local generators after Configure(). --- Source/cmGlobalGenerator.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 8e3a1ae..9d9aaf4 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1124,7 +1124,6 @@ void cmGlobalGenerator::Configure() // now do it this->ConfigureDoneCMP0026 = false; dirMf->Configure(); - this->CreateLocalGenerators(); dirMf->EnforceDirectoryLevelRules(); this->ConfigureDoneCMP0026 = true; @@ -1186,6 +1185,7 @@ void cmGlobalGenerator::Configure() void cmGlobalGenerator::CreateGenerationObjects(TargetTypes targetTypes) { + this->CreateLocalGenerators(); cmDeleteAll(this->GeneratorTargets); this->GeneratorTargets.clear(); this->CreateGeneratorTargets(targetTypes); -- cgit v0.12 From 8bfff68642cfba9de42fa854d90a7cecbc507c83 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 19 Sep 2015 13:13:54 +0200 Subject: cmLocalGenerator: Compute object max path on construction. --- Source/cmGlobalGenerator.cxx | 5 ----- Source/cmLocalGenerator.cxx | 2 ++ Source/cmLocalGenerator.h | 3 ++- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 9d9aaf4..3589e82 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1257,11 +1257,6 @@ bool cmGlobalGenerator::Compute() unsigned int i; - for (i = 0; i < this->LocalGenerators.size(); ++i) - { - this->LocalGenerators[i]->ComputeObjectMaxPath(); - } - // Add generator specific helper commands for (i = 0; i < this->LocalGenerators.size(); ++i) { diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 6c7b194..f4de0f2 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -54,6 +54,8 @@ cmLocalGenerator::cmLocalGenerator(cmGlobalGenerator* gg, this->EmitUniversalBinaryFlags = true; this->BackwardsCompatibility = 0; this->BackwardsCompatibilityFinal = false; + + this->ComputeObjectMaxPath(); } cmLocalGenerator::~cmLocalGenerator() diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index 771131f..6ea414a 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -300,7 +300,6 @@ public: void CreateEvaluationFileOutputs(const std::string& config); void ProcessEvaluationFiles(std::vector& generatedFiles); - void ComputeObjectMaxPath(); protected: ///! put all the libraries for a target on into the given stream void OutputLinkLibraries(std::string& linkLibraries, @@ -360,6 +359,8 @@ private: bool GetShouldUseOldFlags(bool shared, const std::string &lang) const; void AddPositionIndependentFlags(std::string& flags, std::string const& l, int targetType); + + void ComputeObjectMaxPath(); }; #endif -- cgit v0.12