This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake".
The branch, next has been updated via d70c4bfbee1754595bde4ee0cc2f0e4efb35cebb (commit) via 46f6a5f458d7d9ef074820d3e90960af2793bd33 (commit) via 3a041c59495df26c2b7b0ee58069d27a03bd18ff (commit) via ae6c8a9d68120229a2960a83b51241fdb926700a (commit) via 86f3cd0f7e0e0a0db210b5ed3f01766624dbc67f (commit) via a48aebcb67a66bd2fee1318bb971cc5e3b016410 (commit) via e4c78b37cec74c505e8a4951276c17f7e64e5f67 (commit) via 410f39a43ef3ad900bcaed15e6838f97f034f0e7 (commit) via 397b6298602f1496d1b946f5db827f5807d6ed23 (commit) from 69b8d8e4f6f6c3ad1520050ecd6bf355c8e8d3da (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d70c4bfbee1754595bde4ee0cc2f0e4efb35cebb commit d70c4bfbee1754595bde4ee0cc2f0e4efb35cebb Merge: 69b8d8e 46f6a5f Author: Stephen Kelly <steve...@gmail.com> AuthorDate: Tue Apr 28 02:04:03 2015 -0400 Commit: CMake Topic Stage <kwro...@kitware.com> CommitDate: Tue Apr 28 02:04:03 2015 -0400 Merge topic 'cmState-CurrentDirs' into next 46f6a5f4 cmState: Store the Current directories. 3a041c59 Introduce cmState::Snapshot. ae6c8a9d cmState: Store the Source and Binary directories. 86f3cd0f cmMakefile: Require the localGenerator in the constructor. a48aebcb cmLocalGenerator: Require a parent in the constructor. e4c78b37 cmMakefile: Inline SetHome* methods into last remaining caller. 410f39a4 cmMakefile: Delegate storage of Home dirs to the cmake class. 397b6298 CMake Nightly Date Stamp diff --cc Source/cmMakefile.cxx index b46c99f,0935383..1853754 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@@ -171,13 -53,32 +171,30 @@@ public }; // default is not to be building executables - cmMakefile::cmMakefile(): Internal(new Internals) + cmMakefile::cmMakefile(cmLocalGenerator* localGenerator) + : Internal(new Internals), + LocalGenerator(localGenerator), + StateSnapshot(localGenerator->GetGlobalGenerator() + ->GetCMakeInstance()->GetState()) { - const cmDefinitions& defs = cmDefinitions(); - const std::set<std::string> globalKeys = defs.LocalKeys(); - this->Internal->VarStack.push(defs); - this->Internal->VarInitStack.push(globalKeys); - this->Internal->VarUsageStack.push(globalKeys); + 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; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=46f6a5f458d7d9ef074820d3e90960af2793bd33 commit 46f6a5f458d7d9ef074820d3e90960af2793bd33 Author: Stephen Kelly <steve...@gmail.com> AuthorDate: Tue Apr 28 07:50:31 2015 +0200 Commit: Stephen Kelly <steve...@gmail.com> CommitDate: Tue Apr 28 07:57:21 2015 +0200 cmState: Store the Current directories. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 5d48f58..0935383 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1647,33 +1647,27 @@ void cmMakefile::AddSubDirectory(const std::string& srcPath, void cmMakefile::SetCurrentSourceDirectory(const std::string& dir) { - this->cmStartDirectory = dir; - cmSystemTools::ConvertToUnixSlashes(this->cmStartDirectory); - this->cmStartDirectory = - cmSystemTools::CollapseFullPath(this->cmStartDirectory); + this->StateSnapshot.SetCurrentSourceDirectory(dir); this->AddDefinition("CMAKE_CURRENT_SOURCE_DIR", - this->cmStartDirectory.c_str()); + this->StateSnapshot.GetCurrentSourceDirectory()); } const char* cmMakefile::GetCurrentSourceDirectory() const { - return this->cmStartDirectory.c_str(); + return this->StateSnapshot.GetCurrentSourceDirectory(); } void cmMakefile::SetCurrentBinaryDirectory(const std::string& dir) { - this->StartOutputDirectory = dir; - cmSystemTools::ConvertToUnixSlashes(this->StartOutputDirectory); - this->StartOutputDirectory = - cmSystemTools::CollapseFullPath(this->StartOutputDirectory); - cmSystemTools::MakeDirectory(this->StartOutputDirectory.c_str()); - this->AddDefinition("CMAKE_CURRENT_BINARY_DIR", - this->StartOutputDirectory.c_str()); + this->StateSnapshot.SetCurrentBinaryDirectory(dir); + const char* binDir = this->StateSnapshot.GetCurrentBinaryDirectory(); + cmSystemTools::MakeDirectory(binDir); + this->AddDefinition("CMAKE_CURRENT_BINARY_DIR", binDir); } const char* cmMakefile::GetCurrentBinaryDirectory() const { - return this->StartOutputDirectory.c_str(); + return this->StateSnapshot.GetCurrentBinaryDirectory(); } //---------------------------------------------------------------------------- diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 447dadc..8968e81 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -858,8 +858,6 @@ protected: // Check for a an unused variable void CheckForUnused(const char* reason, const std::string& name) const; - std::string cmStartDirectory; - std::string StartOutputDirectory; std::string cmCurrentListFile; std::string ProjectName; // project name diff --git a/Source/cmState.cxx b/Source/cmState.cxx index 610257e..d6899a4 100644 --- a/Source/cmState.cxx +++ b/Source/cmState.cxx @@ -472,6 +472,8 @@ cmState::Snapshot cmState::CreateSnapshot(Snapshot originSnapshot) { PositionType pos = this->ParentPositions.size(); this->ParentPositions.push_back(originSnapshot.Position); + this->Locations.resize(this->Locations.size() + 1); + this->OutputLocations.resize(this->OutputLocations.size() + 1); return cmState::Snapshot(this, pos); } @@ -481,3 +483,34 @@ cmState::Snapshot::Snapshot(cmState* state, PositionType position) { } + +const char* cmState::Snapshot::GetCurrentSourceDirectory() const +{ + return this->State->Locations[this->Position].c_str(); +} + +void cmState::Snapshot::SetCurrentSourceDirectory(std::string const& dir) +{ + assert(this->State->Locations.size() > this->Position); + this->State->Locations[this->Position] = dir; + cmSystemTools::ConvertToUnixSlashes( + this->State->Locations[this->Position]); + this->State->Locations[this->Position] = + cmSystemTools::CollapseFullPath(this->State->Locations[this->Position]); +} + +const char* cmState::Snapshot::GetCurrentBinaryDirectory() const +{ + return this->State->OutputLocations[this->Position].c_str(); +} + +void cmState::Snapshot::SetCurrentBinaryDirectory(std::string const& dir) +{ + assert(this->State->OutputLocations.size() > this->Position); + this->State->OutputLocations[this->Position] = dir; + cmSystemTools::ConvertToUnixSlashes( + this->State->OutputLocations[this->Position]); + this->State->OutputLocations[this->Position] = + cmSystemTools::CollapseFullPath( + this->State->OutputLocations[this->Position]); +} diff --git a/Source/cmState.h b/Source/cmState.h index f35cbd6..9902db9 100644 --- a/Source/cmState.h +++ b/Source/cmState.h @@ -31,6 +31,11 @@ public: public: Snapshot(cmState* state = 0, PositionType position = 0); + const char* GetCurrentSourceDirectory() const; + void SetCurrentSourceDirectory(std::string const& dir); + const char* GetCurrentBinaryDirectory() const; + void SetCurrentBinaryDirectory(std::string const& dir); + private: friend class cmState; cmState* State; @@ -120,6 +125,8 @@ private: std::map<std::string, cmCommand*> Commands; cmPropertyMap GlobalProperties; cmake* CMakeInstance; + std::vector<std::string> Locations; + std::vector<std::string> OutputLocations; std::vector<PositionType> ParentPositions; std::string SourceDirectory; std::string BinaryDirectory; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3a041c59495df26c2b7b0ee58069d27a03bd18ff commit 3a041c59495df26c2b7b0ee58069d27a03bd18ff Author: Stephen Kelly <steve...@gmail.com> AuthorDate: Sat Apr 11 18:38:16 2015 +0200 Commit: Stephen Kelly <steve...@gmail.com> CommitDate: Tue Apr 28 07:57:01 2015 +0200 Introduce cmState::Snapshot. Create snapshots for buildsystem directories during configure time. This class will be extended in follow up commits to snapshot all values in the cmState. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 8c6b195..5d48f58 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -54,7 +54,10 @@ public: // default is not to be building executables cmMakefile::cmMakefile(cmLocalGenerator* localGenerator) - : Internal(new Internals) + : Internal(new Internals), + LocalGenerator(localGenerator), + StateSnapshot(localGenerator->GetGlobalGenerator() + ->GetCMakeInstance()->GetState()) { const cmDefinitions& defs = cmDefinitions(); const std::set<std::string> globalKeys = defs.LocalKeys(); @@ -63,6 +66,19 @@ cmMakefile::cmMakefile(cmLocalGenerator* localGenerator) this->Internal->VarUsageStack.push(globalKeys); 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; diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index d120fb3..447dadc 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -922,7 +922,7 @@ private: cmMakefile& operator=(const cmMakefile& mf); void Initialize(); - + cmState::Snapshot StateSnapshot; bool ReadListFileInternal(const char* filenametoread, bool noPolicyScope, diff --git a/Source/cmState.cxx b/Source/cmState.cxx index 6fbbc4b..610257e 100644 --- a/Source/cmState.cxx +++ b/Source/cmState.cxx @@ -22,6 +22,7 @@ cmState::cmState(cmake* cm) : CMakeInstance(cm), IsInTryCompile(false) { + this->CreateSnapshot(Snapshot()); this->Initialize(); } @@ -466,3 +467,17 @@ const char* cmState::GetBinaryDirectory() const { return this->BinaryDirectory.c_str(); } + +cmState::Snapshot cmState::CreateSnapshot(Snapshot originSnapshot) +{ + PositionType pos = this->ParentPositions.size(); + this->ParentPositions.push_back(originSnapshot.Position); + return cmState::Snapshot(this, pos); +} + +cmState::Snapshot::Snapshot(cmState* state, PositionType position) + : State(state), + Position(position) +{ + +} diff --git a/Source/cmState.h b/Source/cmState.h index afacc36..f35cbd6 100644 --- a/Source/cmState.h +++ b/Source/cmState.h @@ -21,10 +21,24 @@ class cmCommand; class cmState { + typedef std::vector<std::string>::size_type PositionType; + friend class Snapshot; public: cmState(cmake* cm); ~cmState(); + class Snapshot { + public: + Snapshot(cmState* state = 0, PositionType position = 0); + + private: + friend class cmState; + cmState* State; + cmState::PositionType Position; + }; + + Snapshot CreateSnapshot(Snapshot originSnapshot); + enum CacheEntryType{ BOOL=0, PATH, FILEPATH, STRING, INTERNAL,STATIC, UNINITIALIZED }; static CacheEntryType StringToCacheEntryType(const char*); @@ -106,6 +120,7 @@ private: std::map<std::string, cmCommand*> Commands; cmPropertyMap GlobalProperties; cmake* CMakeInstance; + std::vector<PositionType> ParentPositions; std::string SourceDirectory; std::string BinaryDirectory; bool IsInTryCompile; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ae6c8a9d68120229a2960a83b51241fdb926700a commit ae6c8a9d68120229a2960a83b51241fdb926700a Author: Stephen Kelly <steve...@gmail.com> AuthorDate: Sun Apr 12 15:26:54 2015 +0200 Commit: Stephen Kelly <steve...@gmail.com> CommitDate: Tue Apr 28 07:50:57 2015 +0200 cmState: Store the Source and Binary directories. diff --git a/Source/cmState.cxx b/Source/cmState.cxx index 96f8a51..6fbbc4b 100644 --- a/Source/cmState.cxx +++ b/Source/cmState.cxx @@ -444,3 +444,25 @@ bool cmState::GetGlobalPropertyAsBool(const std::string& prop) { return cmSystemTools::IsOn(this->GetGlobalProperty(prop)); } + +void cmState::SetSourceDirectory(std::string const& sourceDirectory) +{ + this->SourceDirectory = sourceDirectory; + cmSystemTools::ConvertToUnixSlashes(this->SourceDirectory); +} + +const char* cmState::GetSourceDirectory() const +{ + return this->SourceDirectory.c_str(); +} + +void cmState::SetBinaryDirectory(std::string const& binaryDirectory) +{ + this->BinaryDirectory = binaryDirectory; + cmSystemTools::ConvertToUnixSlashes(this->BinaryDirectory); +} + +const char* cmState::GetBinaryDirectory() const +{ + return this->BinaryDirectory.c_str(); +} diff --git a/Source/cmState.h b/Source/cmState.h index 34b2ccf..afacc36 100644 --- a/Source/cmState.h +++ b/Source/cmState.h @@ -95,12 +95,19 @@ public: const char *GetGlobalProperty(const std::string& prop); bool GetGlobalPropertyAsBool(const std::string& prop); + const char* GetSourceDirectory() const; + void SetSourceDirectory(std::string const& sourceDirectory); + const char* GetBinaryDirectory() const; + void SetBinaryDirectory(std::string const& binaryDirectory); + private: std::map<cmProperty::ScopeType, cmPropertyDefinitionMap> PropertyDefinitions; std::vector<std::string> EnabledLanguages; std::map<std::string, cmCommand*> Commands; cmPropertyMap GlobalProperties; cmake* CMakeInstance; + std::string SourceDirectory; + std::string BinaryDirectory; bool IsInTryCompile; }; diff --git a/Source/cmake.cxx b/Source/cmake.cxx index f72b088..5c5c428 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -978,24 +978,22 @@ cmGlobalGenerator* cmake::CreateGlobalGenerator(const std::string& gname) void cmake::SetHomeDirectory(const std::string& dir) { - this->cmHomeDirectory = dir; - cmSystemTools::ConvertToUnixSlashes(this->cmHomeDirectory); + this->State->SetSourceDirectory(dir); } const char* cmake::GetHomeDirectory() const { - return this->cmHomeDirectory.c_str(); + return this->State->GetSourceDirectory(); } void cmake::SetHomeOutputDirectory(const std::string& dir) { - this->HomeOutputDirectory = dir; - cmSystemTools::ConvertToUnixSlashes(this->HomeOutputDirectory); + this->State->SetBinaryDirectory(dir); } const char* cmake::GetHomeOutputDirectory() const { - return this->HomeOutputDirectory.c_str(); + return this->State->GetBinaryDirectory(); } void cmake::SetGlobalGenerator(cmGlobalGenerator *gg) diff --git a/Source/cmake.h b/Source/cmake.h index 9dd7c31..0d1977e 100644 --- a/Source/cmake.h +++ b/Source/cmake.h @@ -336,8 +336,6 @@ protected: cmPolicies *Policies; cmGlobalGenerator *GlobalGenerator; cmCacheManager *CacheManager; - std::string cmHomeDirectory; - std::string HomeOutputDirectory; bool SuppressDevWarnings; bool DoSuppressDevWarnings; std::string GeneratorPlatform; http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=86f3cd0f7e0e0a0db210b5ed3f01766624dbc67f commit 86f3cd0f7e0e0a0db210b5ed3f01766624dbc67f Author: Stephen Kelly <steve...@gmail.com> AuthorDate: Mon Apr 27 22:38:45 2015 +0200 Commit: Stephen Kelly <steve...@gmail.com> CommitDate: Tue Apr 28 07:50:57 2015 +0200 cmMakefile: Require the localGenerator in the constructor. Move the contents of cmMakeile::SetLocalGenerator to the Initialize method. diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 6d17171..6b705e8 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -253,8 +253,7 @@ void cmLocalGenerator::SetupPathConversions() void cmLocalGenerator::SetGlobalGenerator(cmGlobalGenerator *gg) { this->GlobalGenerator = gg; - this->Makefile = new cmMakefile; - this->Makefile->SetLocalGenerator(this); + this->Makefile = new cmMakefile(this); } void cmLocalGenerator::ConfigureFinalPass() diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index a00b8eb..8c6b195 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -53,7 +53,8 @@ public: }; // default is not to be building executables -cmMakefile::cmMakefile(): Internal(new Internals) +cmMakefile::cmMakefile(cmLocalGenerator* localGenerator) + : Internal(new Internals) { const cmDefinitions& defs = cmDefinitions(); const std::set<std::string> globalKeys = defs.LocalKeys(); @@ -97,7 +98,7 @@ cmMakefile::cmMakefile(): Internal(new Internals) this->HeaderFileExtensions.push_back( "txx" ); this->DefineFlags = " "; - this->LocalGenerator = 0; + this->LocalGenerator = localGenerator; this->AddDefaultDefinitions(); this->Initialize(); @@ -126,6 +127,39 @@ void cmMakefile::Initialize() // By default the check is not done. It is enabled by // cmListFileCache in the top level if necessary. this->CheckCMP0000 = false; + +#if defined(CMAKE_BUILD_WITH_CMAKE) + this->AddSourceGroup("", "^.*$"); + this->AddSourceGroup + ("Source Files", + "\\.(C|M|c|c\\+\\+|cc|cpp|cxx|f|f90|for|fpp" + "|ftn|m|mm|rc|def|r|odl|idl|hpj|bat)$"); + this->AddSourceGroup("Header Files", CM_HEADER_REGEX); + this->AddSourceGroup("CMake Rules", "\\.rule$"); + this->AddSourceGroup("Resources", "\\.plist$"); + this->AddSourceGroup("Object Files", "\\.(lo|o|obj)$"); +#endif + + this->Properties.SetCMakeInstance(this->GetCMakeInstance()); + this->WarnUnused = this->GetCMakeInstance()->GetWarnUnused(); + this->CheckSystemVars = this->GetCMakeInstance()->GetCheckSystemVars(); + + { + const char* dir = this->GetCMakeInstance()->GetHomeDirectory(); + this->AddDefinition("CMAKE_SOURCE_DIR", dir); + if ( !this->GetDefinition("CMAKE_CURRENT_SOURCE_DIR") ) + { + this->AddDefinition("CMAKE_CURRENT_SOURCE_DIR", dir); + } + } + { + const char* dir = this->GetCMakeInstance()->GetHomeOutputDirectory(); + this->AddDefinition("CMAKE_BINARY_DIR", dir); + if ( !this->GetDefinition("CMAKE_CURRENT_BINARY_DIR") ) + { + this->AddDefinition("CMAKE_CURRENT_BINARY_DIR", dir); + } + } } cmMakefile::~cmMakefile() @@ -630,46 +664,6 @@ void cmMakefile::EnforceDirectoryLevelRules() const } } -// Set the make file -void cmMakefile::SetLocalGenerator(cmLocalGenerator* lg) -{ - this->LocalGenerator = lg; - // the source groups need to access the global generator - // so don't create them until the lg is set -#if defined(CMAKE_BUILD_WITH_CMAKE) - this->AddSourceGroup("", "^.*$"); - this->AddSourceGroup - ("Source Files", - "\\.(C|M|c|c\\+\\+|cc|cpp|cxx|f|f90|for|fpp" - "|ftn|m|mm|rc|def|r|odl|idl|hpj|bat)$"); - this->AddSourceGroup("Header Files", CM_HEADER_REGEX); - this->AddSourceGroup("CMake Rules", "\\.rule$"); - this->AddSourceGroup("Resources", "\\.plist$"); - this->AddSourceGroup("Object Files", "\\.(lo|o|obj)$"); -#endif - - this->Properties.SetCMakeInstance(this->GetCMakeInstance()); - this->WarnUnused = this->GetCMakeInstance()->GetWarnUnused(); - this->CheckSystemVars = this->GetCMakeInstance()->GetCheckSystemVars(); - - { - const char* dir = this->GetCMakeInstance()->GetHomeDirectory(); - this->AddDefinition("CMAKE_SOURCE_DIR", dir); - if ( !this->GetDefinition("CMAKE_CURRENT_SOURCE_DIR") ) - { - this->AddDefinition("CMAKE_CURRENT_SOURCE_DIR", dir); - } - } - { - const char* dir = this->GetCMakeInstance()->GetHomeOutputDirectory(); - this->AddDefinition("CMAKE_BINARY_DIR", dir); - if ( !this->GetDefinition("CMAKE_CURRENT_BINARY_DIR") ) - { - this->AddDefinition("CMAKE_CURRENT_BINARY_DIR", dir); - } - } -} - namespace { struct file_not_persistent diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index dcf56e1..d120fb3 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -74,7 +74,7 @@ public: /** * Construct an empty makefile. */ - cmMakefile(); + cmMakefile(cmLocalGenerator* localGenerator); /** * Destructor. @@ -138,13 +138,6 @@ public: bool GetIsSourceFileTryCompile() const; - /** - * Specify the makefile generator. This is platform/compiler - * dependent, although the interface is through a generic - * superclass. - */ - void SetLocalGenerator(cmLocalGenerator*); - ///! Get the current makefile generator. cmLocalGenerator* GetLocalGenerator() const { return this->LocalGenerator;} http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a48aebcb67a66bd2fee1318bb971cc5e3b016410 commit a48aebcb67a66bd2fee1318bb971cc5e3b016410 Author: Stephen Kelly <steve...@gmail.com> AuthorDate: Tue Apr 28 07:50:52 2015 +0200 Commit: Stephen Kelly <steve...@gmail.com> CommitDate: Tue Apr 28 07:50:52 2015 +0200 cmLocalGenerator: Require a parent in the constructor. Pass the parent though cmGlobalGenerator::CreateLocalGenerator. This will make it easy to initialize state scopes independent of cmMakefile. diff --git a/Source/cmGlobalBorlandMakefileGenerator.cxx b/Source/cmGlobalBorlandMakefileGenerator.cxx index e557619..597e08e 100644 --- a/Source/cmGlobalBorlandMakefileGenerator.cxx +++ b/Source/cmGlobalBorlandMakefileGenerator.cxx @@ -37,9 +37,11 @@ void cmGlobalBorlandMakefileGenerator } ///! Create a local generator appropriate to this Global Generator -cmLocalGenerator *cmGlobalBorlandMakefileGenerator::CreateLocalGenerator() +cmLocalGenerator *cmGlobalBorlandMakefileGenerator::CreateLocalGenerator( + cmLocalGenerator* parent) { - cmLocalUnixMakefileGenerator3* lg = new cmLocalUnixMakefileGenerator3; + cmLocalUnixMakefileGenerator3* lg = + new cmLocalUnixMakefileGenerator3(parent); lg->SetIncludeDirective("!include"); lg->SetWindowsShell(true); lg->SetDefineWindowsNULL(true); diff --git a/Source/cmGlobalBorlandMakefileGenerator.h b/Source/cmGlobalBorlandMakefileGenerator.h index 005f0d6..3f79414 100644 --- a/Source/cmGlobalBorlandMakefileGenerator.h +++ b/Source/cmGlobalBorlandMakefileGenerator.h @@ -36,7 +36,7 @@ public: static void GetDocumentation(cmDocumentationEntry& entry); ///! Create a local generator appropriate to this Global Generator - virtual cmLocalGenerator *CreateLocalGenerator(); + virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0); /** * Try to determine system information such as shared library diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 774b172..384f023 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1878,9 +1878,10 @@ void cmGlobalGenerator::EnableInstallTarget() this->InstallTargetEnabled = true; } -cmLocalGenerator *cmGlobalGenerator::CreateLocalGenerator() +cmLocalGenerator * +cmGlobalGenerator::CreateLocalGenerator(cmLocalGenerator *parent) { - cmLocalGenerator *lg = new cmLocalGenerator; + cmLocalGenerator *lg = new cmLocalGenerator(parent); lg->SetGlobalGenerator(this); return lg; } diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index ce3f037..b51bd47 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -53,7 +53,7 @@ public: virtual ~cmGlobalGenerator(); ///! Create a local generator appropriate to this Global Generator - virtual cmLocalGenerator *CreateLocalGenerator(); + virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0); ///! Get the name for this generator virtual std::string GetName() const { return "Generic"; } diff --git a/Source/cmGlobalGhsMultiGenerator.cxx b/Source/cmGlobalGhsMultiGenerator.cxx index bba29b1..181a517 100644 --- a/Source/cmGlobalGhsMultiGenerator.cxx +++ b/Source/cmGlobalGhsMultiGenerator.cxx @@ -32,9 +32,10 @@ cmGlobalGhsMultiGenerator::~cmGlobalGhsMultiGenerator() cmDeleteAll(TargetFolderBuildStreams); } -cmLocalGenerator *cmGlobalGhsMultiGenerator::CreateLocalGenerator() +cmLocalGenerator * +cmGlobalGhsMultiGenerator::CreateLocalGenerator(cmLocalGenerator* parent) { - cmLocalGenerator *lg = new cmLocalGhsMultiGenerator; + cmLocalGenerator *lg = new cmLocalGhsMultiGenerator(parent); lg->SetGlobalGenerator(this); this->SetCurrentLocalGenerator(lg); return lg; diff --git a/Source/cmGlobalGhsMultiGenerator.h b/Source/cmGlobalGhsMultiGenerator.h index b934c3a..6464f5c 100644 --- a/Source/cmGlobalGhsMultiGenerator.h +++ b/Source/cmGlobalGhsMultiGenerator.h @@ -31,7 +31,7 @@ public: { return new cmGlobalGeneratorSimpleFactory<cmGlobalGhsMultiGenerator>(); } ///! create the correct local generator - virtual cmLocalGenerator *CreateLocalGenerator(); + virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0); /// @return the name of this generator. static std::string GetActualName() { return "Green Hills MULTI"; } diff --git a/Source/cmGlobalJOMMakefileGenerator.cxx b/Source/cmGlobalJOMMakefileGenerator.cxx index bc15ef2..cfa5072 100644 --- a/Source/cmGlobalJOMMakefileGenerator.cxx +++ b/Source/cmGlobalJOMMakefileGenerator.cxx @@ -45,9 +45,11 @@ void cmGlobalJOMMakefileGenerator } ///! Create a local generator appropriate to this Global Generator -cmLocalGenerator *cmGlobalJOMMakefileGenerator::CreateLocalGenerator() +cmLocalGenerator * +cmGlobalJOMMakefileGenerator::CreateLocalGenerator(cmLocalGenerator* parent) { - cmLocalUnixMakefileGenerator3* lg = new cmLocalUnixMakefileGenerator3; + cmLocalUnixMakefileGenerator3* lg + = new cmLocalUnixMakefileGenerator3(parent); lg->SetDefineWindowsNULL(true); lg->SetWindowsShell(true); lg->SetMakeSilentFlag("/nologo"); diff --git a/Source/cmGlobalJOMMakefileGenerator.h b/Source/cmGlobalJOMMakefileGenerator.h index fbb35f3..4831309 100644 --- a/Source/cmGlobalJOMMakefileGenerator.h +++ b/Source/cmGlobalJOMMakefileGenerator.h @@ -37,7 +37,7 @@ public: static void GetDocumentation(cmDocumentationEntry& entry); ///! Create a local generator appropriate to this Global Generator - virtual cmLocalGenerator *CreateLocalGenerator(); + virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0); /** * Try to determine system information such as shared library diff --git a/Source/cmGlobalMSYSMakefileGenerator.cxx b/Source/cmGlobalMSYSMakefileGenerator.cxx index 16f05e5..fa23491 100644 --- a/Source/cmGlobalMSYSMakefileGenerator.cxx +++ b/Source/cmGlobalMSYSMakefileGenerator.cxx @@ -93,9 +93,11 @@ void cmGlobalMSYSMakefileGenerator } ///! Create a local generator appropriate to this Global Generator -cmLocalGenerator *cmGlobalMSYSMakefileGenerator::CreateLocalGenerator() +cmLocalGenerator * +cmGlobalMSYSMakefileGenerator::CreateLocalGenerator(cmLocalGenerator* parent) { - cmLocalUnixMakefileGenerator3* lg = new cmLocalUnixMakefileGenerator3; + cmLocalUnixMakefileGenerator3* lg = + new cmLocalUnixMakefileGenerator3(parent); lg->SetWindowsShell(false); lg->SetMSYSShell(true); lg->SetGlobalGenerator(this); diff --git a/Source/cmGlobalMSYSMakefileGenerator.h b/Source/cmGlobalMSYSMakefileGenerator.h index baecde7..1795d86 100644 --- a/Source/cmGlobalMSYSMakefileGenerator.h +++ b/Source/cmGlobalMSYSMakefileGenerator.h @@ -36,7 +36,7 @@ public: static void GetDocumentation(cmDocumentationEntry& entry); ///! Create a local generator appropriate to this Global Generator - virtual cmLocalGenerator *CreateLocalGenerator(); + virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0); /** * Try to determine system information such as shared library diff --git a/Source/cmGlobalMinGWMakefileGenerator.cxx b/Source/cmGlobalMinGWMakefileGenerator.cxx index e00c7dd..c9389aa 100644 --- a/Source/cmGlobalMinGWMakefileGenerator.cxx +++ b/Source/cmGlobalMinGWMakefileGenerator.cxx @@ -31,9 +31,11 @@ void cmGlobalMinGWMakefileGenerator } ///! Create a local generator appropriate to this Global Generator -cmLocalGenerator *cmGlobalMinGWMakefileGenerator::CreateLocalGenerator() +cmLocalGenerator * +cmGlobalMinGWMakefileGenerator::CreateLocalGenerator(cmLocalGenerator* parent) { - cmLocalUnixMakefileGenerator3* lg = new cmLocalUnixMakefileGenerator3; + cmLocalUnixMakefileGenerator3* lg = + new cmLocalUnixMakefileGenerator3(parent); lg->SetWindowsShell(true); lg->SetGlobalGenerator(this); lg->SetIgnoreLibPrefix(true); diff --git a/Source/cmGlobalMinGWMakefileGenerator.h b/Source/cmGlobalMinGWMakefileGenerator.h index fa8d9f2..93f67be 100644 --- a/Source/cmGlobalMinGWMakefileGenerator.h +++ b/Source/cmGlobalMinGWMakefileGenerator.h @@ -35,7 +35,7 @@ public: static void GetDocumentation(cmDocumentationEntry& entry); ///! Create a local generator appropriate to this Global Generator - virtual cmLocalGenerator *CreateLocalGenerator(); + virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0); /** * Try to determine system information such as shared library diff --git a/Source/cmGlobalNMakeMakefileGenerator.cxx b/Source/cmGlobalNMakeMakefileGenerator.cxx index 4fbabe4..a3b3dd7 100644 --- a/Source/cmGlobalNMakeMakefileGenerator.cxx +++ b/Source/cmGlobalNMakeMakefileGenerator.cxx @@ -45,9 +45,11 @@ void cmGlobalNMakeMakefileGenerator } ///! Create a local generator appropriate to this Global Generator -cmLocalGenerator *cmGlobalNMakeMakefileGenerator::CreateLocalGenerator() +cmLocalGenerator * +cmGlobalNMakeMakefileGenerator::CreateLocalGenerator(cmLocalGenerator* parent) { - cmLocalUnixMakefileGenerator3* lg = new cmLocalUnixMakefileGenerator3; + cmLocalUnixMakefileGenerator3* lg = + new cmLocalUnixMakefileGenerator3(parent); lg->SetDefineWindowsNULL(true); lg->SetWindowsShell(true); lg->SetMakeSilentFlag("/nologo"); diff --git a/Source/cmGlobalNMakeMakefileGenerator.h b/Source/cmGlobalNMakeMakefileGenerator.h index e7b03dd..cb898ba 100644 --- a/Source/cmGlobalNMakeMakefileGenerator.h +++ b/Source/cmGlobalNMakeMakefileGenerator.h @@ -35,7 +35,7 @@ public: static void GetDocumentation(cmDocumentationEntry& entry); ///! Create a local generator appropriate to this Global Generator - virtual cmLocalGenerator *CreateLocalGenerator(); + virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0); /** * Try to determine system information such as shared library diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx index 76f2e14..074c4d1 100644 --- a/Source/cmGlobalNinjaGenerator.cxx +++ b/Source/cmGlobalNinjaGenerator.cxx @@ -496,9 +496,10 @@ cmGlobalNinjaGenerator::cmGlobalNinjaGenerator() //---------------------------------------------------------------------------- // Virtual public methods. -cmLocalGenerator* cmGlobalNinjaGenerator::CreateLocalGenerator() +cmLocalGenerator* +cmGlobalNinjaGenerator::CreateLocalGenerator(cmLocalGenerator* parent) { - cmLocalGenerator* lg = new cmLocalNinjaGenerator; + cmLocalGenerator* lg = new cmLocalNinjaGenerator(parent); lg->SetGlobalGenerator(this); return lg; } diff --git a/Source/cmGlobalNinjaGenerator.h b/Source/cmGlobalNinjaGenerator.h index 6aa76f9..d7b3add 100644 --- a/Source/cmGlobalNinjaGenerator.h +++ b/Source/cmGlobalNinjaGenerator.h @@ -171,7 +171,7 @@ public: virtual ~cmGlobalNinjaGenerator() { } /// Overloaded methods. @see cmGlobalGenerator::CreateLocalGenerator() - virtual cmLocalGenerator* CreateLocalGenerator(); + virtual cmLocalGenerator* CreateLocalGenerator(cmLocalGenerator* parent = 0); /// Overloaded methods. @see cmGlobalGenerator::GetName(). virtual std::string GetName() const { diff --git a/Source/cmGlobalUnixMakefileGenerator3.cxx b/Source/cmGlobalUnixMakefileGenerator3.cxx index 8cf6be1..95998ae 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.cxx +++ b/Source/cmGlobalUnixMakefileGenerator3.cxx @@ -53,9 +53,10 @@ void cmGlobalUnixMakefileGenerator3 } ///! Create a local generator appropriate to this Global Generator -cmLocalGenerator *cmGlobalUnixMakefileGenerator3::CreateLocalGenerator() +cmLocalGenerator * +cmGlobalUnixMakefileGenerator3::CreateLocalGenerator(cmLocalGenerator* parent) { - cmLocalGenerator* lg = new cmLocalUnixMakefileGenerator3; + cmLocalGenerator* lg = new cmLocalUnixMakefileGenerator3(parent); lg->SetGlobalGenerator(this); return lg; } diff --git a/Source/cmGlobalUnixMakefileGenerator3.h b/Source/cmGlobalUnixMakefileGenerator3.h index a76a835..165a3c8 100644 --- a/Source/cmGlobalUnixMakefileGenerator3.h +++ b/Source/cmGlobalUnixMakefileGenerator3.h @@ -68,7 +68,7 @@ public: static void GetDocumentation(cmDocumentationEntry& entry); ///! Create a local generator appropriate to this Global Generator3 - virtual cmLocalGenerator *CreateLocalGenerator(); + virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0); /** * Try to determine system information such as shared library diff --git a/Source/cmGlobalVisualStudio10Generator.cxx b/Source/cmGlobalVisualStudio10Generator.cxx index 8240099..6481ec2 100644 --- a/Source/cmGlobalVisualStudio10Generator.cxx +++ b/Source/cmGlobalVisualStudio10Generator.cxx @@ -308,10 +308,12 @@ void cmGlobalVisualStudio10Generator::WriteSLNHeader(std::ostream& fout) } ///! Create a local generator appropriate to this Global Generator -cmLocalGenerator *cmGlobalVisualStudio10Generator::CreateLocalGenerator() +cmLocalGenerator * +cmGlobalVisualStudio10Generator::CreateLocalGenerator(cmLocalGenerator* parent) { cmLocalVisualStudio10Generator* lg = - new cmLocalVisualStudio10Generator(cmLocalVisualStudioGenerator::VS10); + new cmLocalVisualStudio10Generator(cmLocalVisualStudioGenerator::VS10, + parent); lg->SetGlobalGenerator(this); return lg; } diff --git a/Source/cmGlobalVisualStudio10Generator.h b/Source/cmGlobalVisualStudio10Generator.h index f0dd7d7..8cb2588 100644 --- a/Source/cmGlobalVisualStudio10Generator.h +++ b/Source/cmGlobalVisualStudio10Generator.h @@ -46,7 +46,7 @@ public: ); ///! create the correct local generator - virtual cmLocalGenerator *CreateLocalGenerator(); + virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0); /** * Try to determine system information such as shared library diff --git a/Source/cmGlobalVisualStudio11Generator.cxx b/Source/cmGlobalVisualStudio11Generator.cxx index 5d3ae16..45d6d95 100644 --- a/Source/cmGlobalVisualStudio11Generator.cxx +++ b/Source/cmGlobalVisualStudio11Generator.cxx @@ -237,10 +237,12 @@ void cmGlobalVisualStudio11Generator::WriteSLNHeader(std::ostream& fout) } //---------------------------------------------------------------------------- -cmLocalGenerator *cmGlobalVisualStudio11Generator::CreateLocalGenerator() +cmLocalGenerator * +cmGlobalVisualStudio11Generator::CreateLocalGenerator(cmLocalGenerator* parent) { cmLocalVisualStudio10Generator* lg = - new cmLocalVisualStudio10Generator(cmLocalVisualStudioGenerator::VS11); + new cmLocalVisualStudio10Generator(cmLocalVisualStudioGenerator::VS11, + parent); lg->SetGlobalGenerator(this); return lg; } diff --git a/Source/cmGlobalVisualStudio11Generator.h b/Source/cmGlobalVisualStudio11Generator.h index 6d434eb..ae4b888 100644 --- a/Source/cmGlobalVisualStudio11Generator.h +++ b/Source/cmGlobalVisualStudio11Generator.h @@ -29,7 +29,7 @@ public: virtual void WriteSLNHeader(std::ostream& fout); ///! create the correct local generator - virtual cmLocalGenerator *CreateLocalGenerator(); + virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0); protected: virtual bool InitializeWindowsPhone(cmMakefile* mf); diff --git a/Source/cmGlobalVisualStudio12Generator.cxx b/Source/cmGlobalVisualStudio12Generator.cxx index e70e082..e298b06 100644 --- a/Source/cmGlobalVisualStudio12Generator.cxx +++ b/Source/cmGlobalVisualStudio12Generator.cxx @@ -217,10 +217,12 @@ void cmGlobalVisualStudio12Generator::WriteSLNHeader(std::ostream& fout) } //---------------------------------------------------------------------------- -cmLocalGenerator *cmGlobalVisualStudio12Generator::CreateLocalGenerator() +cmLocalGenerator * +cmGlobalVisualStudio12Generator::CreateLocalGenerator(cmLocalGenerator* parent) { cmLocalVisualStudio10Generator* lg = - new cmLocalVisualStudio10Generator(cmLocalVisualStudioGenerator::VS12); + new cmLocalVisualStudio10Generator(cmLocalVisualStudioGenerator::VS12, + parent); lg->SetGlobalGenerator(this); return lg; } diff --git a/Source/cmGlobalVisualStudio12Generator.h b/Source/cmGlobalVisualStudio12Generator.h index 5e5b5f7..d304bc1 100644 --- a/Source/cmGlobalVisualStudio12Generator.h +++ b/Source/cmGlobalVisualStudio12Generator.h @@ -29,7 +29,7 @@ public: virtual void WriteSLNHeader(std::ostream& fout); ///! create the correct local generator - virtual cmLocalGenerator *CreateLocalGenerator(); + virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0); //in Visual Studio 2013 they detached the MSBuild tools version //from the .Net Framework version and instead made it have it's own diff --git a/Source/cmGlobalVisualStudio14Generator.cxx b/Source/cmGlobalVisualStudio14Generator.cxx index 7b1dd24..6642d88 100644 --- a/Source/cmGlobalVisualStudio14Generator.cxx +++ b/Source/cmGlobalVisualStudio14Generator.cxx @@ -128,10 +128,12 @@ void cmGlobalVisualStudio14Generator::WriteSLNHeader(std::ostream& fout) } //---------------------------------------------------------------------------- -cmLocalGenerator *cmGlobalVisualStudio14Generator::CreateLocalGenerator() +cmLocalGenerator * +cmGlobalVisualStudio14Generator::CreateLocalGenerator(cmLocalGenerator* parent) { cmLocalVisualStudio10Generator* lg = - new cmLocalVisualStudio10Generator(cmLocalVisualStudioGenerator::VS14); + new cmLocalVisualStudio10Generator(cmLocalVisualStudioGenerator::VS14, + parent); lg->SetGlobalGenerator(this); return lg; } diff --git a/Source/cmGlobalVisualStudio14Generator.h b/Source/cmGlobalVisualStudio14Generator.h index ad1a460..59f1e60 100644 --- a/Source/cmGlobalVisualStudio14Generator.h +++ b/Source/cmGlobalVisualStudio14Generator.h @@ -29,7 +29,7 @@ public: virtual void WriteSLNHeader(std::ostream& fout); ///! create the correct local generator - virtual cmLocalGenerator *CreateLocalGenerator(); + virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0); virtual const char* GetToolsVersion() { return "14.0"; } protected: diff --git a/Source/cmGlobalVisualStudio6Generator.cxx b/Source/cmGlobalVisualStudio6Generator.cxx index 0852db6..55e70b3 100644 --- a/Source/cmGlobalVisualStudio6Generator.cxx +++ b/Source/cmGlobalVisualStudio6Generator.cxx @@ -170,9 +170,10 @@ cmGlobalVisualStudio6Generator::GenerateBuildCommand( } ///! Create a local generator appropriate to this Global Generator -cmLocalGenerator *cmGlobalVisualStudio6Generator::CreateLocalGenerator() +cmLocalGenerator * +cmGlobalVisualStudio6Generator::CreateLocalGenerator(cmLocalGenerator* parent) { - cmLocalGenerator *lg = new cmLocalVisualStudio6Generator; + cmLocalGenerator *lg = new cmLocalVisualStudio6Generator(parent); lg->SetGlobalGenerator(this); return lg; } diff --git a/Source/cmGlobalVisualStudio6Generator.h b/Source/cmGlobalVisualStudio6Generator.h index a59a0b2..d748a85 100644 --- a/Source/cmGlobalVisualStudio6Generator.h +++ b/Source/cmGlobalVisualStudio6Generator.h @@ -39,7 +39,7 @@ public: static void GetDocumentation(cmDocumentationEntry& entry); ///! Create a local generator appropriate to this Global Generator - virtual cmLocalGenerator *CreateLocalGenerator(); + virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0); /** * Try to determine system information such as shared library diff --git a/Source/cmGlobalVisualStudio71Generator.cxx b/Source/cmGlobalVisualStudio71Generator.cxx index a67a649..db34d44 100644 --- a/Source/cmGlobalVisualStudio71Generator.cxx +++ b/Source/cmGlobalVisualStudio71Generator.cxx @@ -25,10 +25,12 @@ cmGlobalVisualStudio71Generator::cmGlobalVisualStudio71Generator( //---------------------------------------------------------------------------- ///! Create a local generator appropriate to this Global Generator -cmLocalGenerator *cmGlobalVisualStudio71Generator::CreateLocalGenerator() +cmLocalGenerator * +cmGlobalVisualStudio71Generator::CreateLocalGenerator(cmLocalGenerator* parent) { cmLocalVisualStudio7Generator *lg = - new cmLocalVisualStudio7Generator(cmLocalVisualStudioGenerator::VS71); + new cmLocalVisualStudio7Generator(cmLocalVisualStudioGenerator::VS71, + parent); lg->SetExtraFlagTable(this->GetExtraFlagTableVS7()); lg->SetGlobalGenerator(this); return lg; diff --git a/Source/cmGlobalVisualStudio71Generator.h b/Source/cmGlobalVisualStudio71Generator.h index 2b5259a..ad6c153 100644 --- a/Source/cmGlobalVisualStudio71Generator.h +++ b/Source/cmGlobalVisualStudio71Generator.h @@ -37,7 +37,7 @@ public: static void GetDocumentation(cmDocumentationEntry& entry); ///! Create a local generator appropriate to this Global Generator - virtual cmLocalGenerator *CreateLocalGenerator(); + virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0); /** * Where does this version of Visual Studio look for macros for the diff --git a/Source/cmGlobalVisualStudio7Generator.cxx b/Source/cmGlobalVisualStudio7Generator.cxx index 1b03193..de90f7e 100644 --- a/Source/cmGlobalVisualStudio7Generator.cxx +++ b/Source/cmGlobalVisualStudio7Generator.cxx @@ -250,10 +250,12 @@ void cmGlobalVisualStudio7Generator::GenerateBuildCommand( } ///! Create a local generator appropriate to this Global Generator -cmLocalGenerator *cmGlobalVisualStudio7Generator::CreateLocalGenerator() +cmLocalGenerator * +cmGlobalVisualStudio7Generator::CreateLocalGenerator(cmLocalGenerator* parent) { cmLocalVisualStudio7Generator *lg = - new cmLocalVisualStudio7Generator(cmLocalVisualStudioGenerator::VS7); + new cmLocalVisualStudio7Generator(cmLocalVisualStudioGenerator::VS7, + parent); lg->SetExtraFlagTable(this->GetExtraFlagTableVS7()); lg->SetGlobalGenerator(this); return lg; diff --git a/Source/cmGlobalVisualStudio7Generator.h b/Source/cmGlobalVisualStudio7Generator.h index d641c02..92c5f1a 100644 --- a/Source/cmGlobalVisualStudio7Generator.h +++ b/Source/cmGlobalVisualStudio7Generator.h @@ -42,7 +42,7 @@ public: std::string const& GetPlatformName() const; ///! Create a local generator appropriate to this Global Generator - virtual cmLocalGenerator *CreateLocalGenerator(); + virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0); virtual bool SetSystemName(std::string const& s, cmMakefile* mf); diff --git a/Source/cmGlobalVisualStudio8Generator.cxx b/Source/cmGlobalVisualStudio8Generator.cxx index bb50633..7174f21 100644 --- a/Source/cmGlobalVisualStudio8Generator.cxx +++ b/Source/cmGlobalVisualStudio8Generator.cxx @@ -125,10 +125,12 @@ std::string cmGlobalVisualStudio8Generator::FindDevEnvCommand() //---------------------------------------------------------------------------- ///! Create a local generator appropriate to this Global Generator -cmLocalGenerator *cmGlobalVisualStudio8Generator::CreateLocalGenerator() +cmLocalGenerator * +cmGlobalVisualStudio8Generator::CreateLocalGenerator(cmLocalGenerator* parent) { cmLocalVisualStudio7Generator *lg = - new cmLocalVisualStudio7Generator(cmLocalVisualStudioGenerator::VS8); + new cmLocalVisualStudio7Generator(cmLocalVisualStudioGenerator::VS8, + parent); lg->SetExtraFlagTable(this->GetExtraFlagTableVS8()); lg->SetGlobalGenerator(this); return lg; diff --git a/Source/cmGlobalVisualStudio8Generator.h b/Source/cmGlobalVisualStudio8Generator.h index 4b41ed7..ee5ba9f 100644 --- a/Source/cmGlobalVisualStudio8Generator.h +++ b/Source/cmGlobalVisualStudio8Generator.h @@ -34,7 +34,7 @@ public: static void GetDocumentation(cmDocumentationEntry& entry); ///! Create a local generator appropriate to this Global Generator - virtual cmLocalGenerator *CreateLocalGenerator(); + virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0); virtual void EnableLanguage(std::vector<std::string>const& languages, cmMakefile *, bool optional); diff --git a/Source/cmGlobalVisualStudio9Generator.cxx b/Source/cmGlobalVisualStudio9Generator.cxx index 1bc627f..0303c27 100644 --- a/Source/cmGlobalVisualStudio9Generator.cxx +++ b/Source/cmGlobalVisualStudio9Generator.cxx @@ -114,10 +114,12 @@ void cmGlobalVisualStudio9Generator::WriteSLNHeader(std::ostream& fout) } ///! Create a local generator appropriate to this Global Generator -cmLocalGenerator *cmGlobalVisualStudio9Generator::CreateLocalGenerator() +cmLocalGenerator * +cmGlobalVisualStudio9Generator::CreateLocalGenerator(cmLocalGenerator* parent) { cmLocalVisualStudio7Generator *lg - = new cmLocalVisualStudio7Generator(cmLocalVisualStudioGenerator::VS9); + = new cmLocalVisualStudio7Generator(cmLocalVisualStudioGenerator::VS9, + parent); lg->SetExtraFlagTable(this->GetExtraFlagTableVS8()); lg->SetGlobalGenerator(this); return lg; diff --git a/Source/cmGlobalVisualStudio9Generator.h b/Source/cmGlobalVisualStudio9Generator.h index 0a191cd..97b7804 100644 --- a/Source/cmGlobalVisualStudio9Generator.h +++ b/Source/cmGlobalVisualStudio9Generator.h @@ -29,7 +29,7 @@ public: static cmGlobalGeneratorFactory* NewFactory(); ///! create the correct local generator - virtual cmLocalGenerator *CreateLocalGenerator(); + virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0); /** * Try to determine system information such as shared library diff --git a/Source/cmGlobalWatcomWMakeGenerator.cxx b/Source/cmGlobalWatcomWMakeGenerator.cxx index e44ed79..77c6474 100644 --- a/Source/cmGlobalWatcomWMakeGenerator.cxx +++ b/Source/cmGlobalWatcomWMakeGenerator.cxx @@ -41,9 +41,11 @@ void cmGlobalWatcomWMakeGenerator } ///! Create a local generator appropriate to this Global Generator -cmLocalGenerator *cmGlobalWatcomWMakeGenerator::CreateLocalGenerator() +cmLocalGenerator * +cmGlobalWatcomWMakeGenerator::CreateLocalGenerator(cmLocalGenerator* parent) { - cmLocalUnixMakefileGenerator3* lg = new cmLocalUnixMakefileGenerator3; + cmLocalUnixMakefileGenerator3* lg + = new cmLocalUnixMakefileGenerator3(parent); lg->SetDefineWindowsNULL(true); #ifdef _WIN32 lg->SetWindowsShell(true); diff --git a/Source/cmGlobalWatcomWMakeGenerator.h b/Source/cmGlobalWatcomWMakeGenerator.h index 7bc209b..3af2f9d 100644 --- a/Source/cmGlobalWatcomWMakeGenerator.h +++ b/Source/cmGlobalWatcomWMakeGenerator.h @@ -35,7 +35,7 @@ public: static void GetDocumentation(cmDocumentationEntry& entry); ///! Create a local generator appropriate to this Global Generator - virtual cmLocalGenerator *CreateLocalGenerator(); + virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0); /** * Try to determine system information such as shared library diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx index d333c1d..742750c 100644 --- a/Source/cmGlobalXCodeGenerator.cxx +++ b/Source/cmGlobalXCodeGenerator.cxx @@ -368,9 +368,10 @@ cmGlobalXCodeGenerator::GenerateBuildCommand( //---------------------------------------------------------------------------- ///! Create a local generator appropriate to this Global Generator -cmLocalGenerator *cmGlobalXCodeGenerator::CreateLocalGenerator() +cmLocalGenerator * +cmGlobalXCodeGenerator::CreateLocalGenerator(cmLocalGenerator* parent) { - cmLocalGenerator *lg = new cmLocalXCodeGenerator; + cmLocalGenerator *lg = new cmLocalXCodeGenerator(parent); lg->SetGlobalGenerator(this); return lg; } diff --git a/Source/cmGlobalXCodeGenerator.h b/Source/cmGlobalXCodeGenerator.h index 1a69fce..6c911a4 100644 --- a/Source/cmGlobalXCodeGenerator.h +++ b/Source/cmGlobalXCodeGenerator.h @@ -41,7 +41,7 @@ public: static void GetDocumentation(cmDocumentationEntry& entry); ///! Create a local generator appropriate to this Global Generator - virtual cmLocalGenerator *CreateLocalGenerator(); + virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0); /** * Try to determine system information such as shared library diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index dc74374..6d17171 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -43,10 +43,14 @@ #include <StorageDefs.h> #endif -cmLocalGenerator::cmLocalGenerator() +cmLocalGenerator::cmLocalGenerator(cmLocalGenerator* parent) { this->Makefile = 0; // moved to after set on global - this->Parent = 0; + this->Parent = parent; + if (parent) + { + parent->AddChild(this); + } this->WindowsShell = false; this->WindowsVSIDE = false; this->WatcomWMake = false; diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index a005f5f..befddbf 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -33,7 +33,7 @@ class cmCustomCommandGenerator; class cmLocalGenerator { public: - cmLocalGenerator(); + cmLocalGenerator(cmLocalGenerator* parent); virtual ~cmLocalGenerator(); /** @@ -131,7 +131,6 @@ public: ///! set/get the parent generator cmLocalGenerator* GetParent() const {return this->Parent;} - void SetParent(cmLocalGenerator* g) { this->Parent = g; g->AddChild(this); } ///! set/get the children void AddChild(cmLocalGenerator* g) { this->Children.push_back(g); } diff --git a/Source/cmLocalGhsMultiGenerator.cxx b/Source/cmLocalGhsMultiGenerator.cxx index a3edc45..fa2a1a5 100644 --- a/Source/cmLocalGhsMultiGenerator.cxx +++ b/Source/cmLocalGhsMultiGenerator.cxx @@ -16,7 +16,8 @@ #include "cmGhsMultiTargetGenerator.h" #include "cmGeneratedFileStream.h" -cmLocalGhsMultiGenerator::cmLocalGhsMultiGenerator() +cmLocalGhsMultiGenerator::cmLocalGhsMultiGenerator(cmLocalGenerator* parent) + : cmLocalGenerator(parent) { } diff --git a/Source/cmLocalGhsMultiGenerator.h b/Source/cmLocalGhsMultiGenerator.h index a8df3e7..7afef56 100644 --- a/Source/cmLocalGhsMultiGenerator.h +++ b/Source/cmLocalGhsMultiGenerator.h @@ -25,7 +25,7 @@ class cmGeneratedFileStream; class cmLocalGhsMultiGenerator : public cmLocalGenerator { public: - cmLocalGhsMultiGenerator(); + cmLocalGhsMultiGenerator(cmLocalGenerator* parent); virtual ~cmLocalGhsMultiGenerator(); diff --git a/Source/cmLocalNinjaGenerator.cxx b/Source/cmLocalNinjaGenerator.cxx index d4741a0..4e817a0 100644 --- a/Source/cmLocalNinjaGenerator.cxx +++ b/Source/cmLocalNinjaGenerator.cxx @@ -22,8 +22,8 @@ #include <assert.h> -cmLocalNinjaGenerator::cmLocalNinjaGenerator() - : cmLocalGenerator() +cmLocalNinjaGenerator::cmLocalNinjaGenerator(cmLocalGenerator* parent) + : cmLocalGenerator(parent) , ConfigName("") , HomeRelativeOutputPath("") { diff --git a/Source/cmLocalNinjaGenerator.h b/Source/cmLocalNinjaGenerator.h index 01e16df..d72677b 100644 --- a/Source/cmLocalNinjaGenerator.h +++ b/Source/cmLocalNinjaGenerator.h @@ -32,7 +32,7 @@ class cmLocalNinjaGenerator : public cmLocalGenerator { public: /// Default constructor. - cmLocalNinjaGenerator(); + cmLocalNinjaGenerator(cmLocalGenerator* parent); /// Destructor. virtual ~cmLocalNinjaGenerator(); diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx index f66b54a..bf6fb61 100644 --- a/Source/cmLocalUnixMakefileGenerator3.cxx +++ b/Source/cmLocalUnixMakefileGenerator3.cxx @@ -79,7 +79,9 @@ static std::string cmSplitExtension(std::string const& in, std::string& base) } //---------------------------------------------------------------------------- -cmLocalUnixMakefileGenerator3::cmLocalUnixMakefileGenerator3() +cmLocalUnixMakefileGenerator3:: +cmLocalUnixMakefileGenerator3(cmLocalGenerator* parent) + : cmLocalGenerator(parent) { this->WindowsShell = false; this->IncludeDirective = "include"; diff --git a/Source/cmLocalUnixMakefileGenerator3.h b/Source/cmLocalUnixMakefileGenerator3.h index a2f4245..9f83b86 100644 --- a/Source/cmLocalUnixMakefileGenerator3.h +++ b/Source/cmLocalUnixMakefileGenerator3.h @@ -34,7 +34,7 @@ class cmSourceFile; class cmLocalUnixMakefileGenerator3 : public cmLocalGenerator { public: - cmLocalUnixMakefileGenerator3(); + cmLocalUnixMakefileGenerator3(cmLocalGenerator* parent); virtual ~cmLocalUnixMakefileGenerator3(); /** diff --git a/Source/cmLocalVisualStudio10Generator.cxx b/Source/cmLocalVisualStudio10Generator.cxx index 2b67562..73a4ec8 100644 --- a/Source/cmLocalVisualStudio10Generator.cxx +++ b/Source/cmLocalVisualStudio10Generator.cxx @@ -61,8 +61,9 @@ class cmVS10XMLParser : public cmXMLParser //---------------------------------------------------------------------------- -cmLocalVisualStudio10Generator::cmLocalVisualStudio10Generator(VSVersion v): - cmLocalVisualStudio7Generator(v) +cmLocalVisualStudio10Generator +::cmLocalVisualStudio10Generator(VSVersion v, cmLocalGenerator* parent): + cmLocalVisualStudio7Generator(v, parent) { } diff --git a/Source/cmLocalVisualStudio10Generator.h b/Source/cmLocalVisualStudio10Generator.h index b50e345..f90daa0 100644 --- a/Source/cmLocalVisualStudio10Generator.h +++ b/Source/cmLocalVisualStudio10Generator.h @@ -25,7 +25,7 @@ class cmLocalVisualStudio10Generator : public cmLocalVisualStudio7Generator { public: ///! Set cache only and recurse to false by default. - cmLocalVisualStudio10Generator(VSVersion v); + cmLocalVisualStudio10Generator(VSVersion v, cmLocalGenerator* parent); virtual ~cmLocalVisualStudio10Generator(); diff --git a/Source/cmLocalVisualStudio6Generator.cxx b/Source/cmLocalVisualStudio6Generator.cxx index 69da9fb..6d89b15 100644 --- a/Source/cmLocalVisualStudio6Generator.cxx +++ b/Source/cmLocalVisualStudio6Generator.cxx @@ -23,8 +23,9 @@ #include <cmsys/RegularExpression.hxx> #include <cmsys/FStream.hxx> -cmLocalVisualStudio6Generator::cmLocalVisualStudio6Generator(): - cmLocalVisualStudioGenerator(VS6) +cmLocalVisualStudio6Generator +::cmLocalVisualStudio6Generator(cmLocalGenerator* parent): + cmLocalVisualStudioGenerator(VS6, parent) { } diff --git a/Source/cmLocalVisualStudio6Generator.h b/Source/cmLocalVisualStudio6Generator.h index 4771833..1a0a614 100644 --- a/Source/cmLocalVisualStudio6Generator.h +++ b/Source/cmLocalVisualStudio6Generator.h @@ -29,7 +29,7 @@ class cmLocalVisualStudio6Generator : public cmLocalVisualStudioGenerator { public: ///! Set cache only and recurse to false by default. - cmLocalVisualStudio6Generator(); + cmLocalVisualStudio6Generator(cmLocalGenerator* parent); virtual ~cmLocalVisualStudio6Generator(); diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index 928481c..2152f77 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -54,8 +54,9 @@ static void cmConvertToWindowsSlash(std::string& s) } //---------------------------------------------------------------------------- -cmLocalVisualStudio7Generator::cmLocalVisualStudio7Generator(VSVersion v): - cmLocalVisualStudioGenerator(v) +cmLocalVisualStudio7Generator +::cmLocalVisualStudio7Generator(VSVersion v, cmLocalGenerator* parent): + cmLocalVisualStudioGenerator(v, parent) { this->ExtraFlagTable = 0; this->Internal = new cmLocalVisualStudio7GeneratorInternals(this); diff --git a/Source/cmLocalVisualStudio7Generator.h b/Source/cmLocalVisualStudio7Generator.h index c2caa26..cfbc63c 100644 --- a/Source/cmLocalVisualStudio7Generator.h +++ b/Source/cmLocalVisualStudio7Generator.h @@ -35,7 +35,7 @@ class cmLocalVisualStudio7Generator : public cmLocalVisualStudioGenerator { public: ///! Set cache only and recurse to false by default. - cmLocalVisualStudio7Generator(VSVersion v); + cmLocalVisualStudio7Generator(VSVersion v, cmLocalGenerator* parent); virtual ~cmLocalVisualStudio7Generator(); diff --git a/Source/cmLocalVisualStudioGenerator.cxx b/Source/cmLocalVisualStudioGenerator.cxx index f01aa6b..854ad34 100644 --- a/Source/cmLocalVisualStudioGenerator.cxx +++ b/Source/cmLocalVisualStudioGenerator.cxx @@ -18,7 +18,9 @@ #include "windows.h" //---------------------------------------------------------------------------- -cmLocalVisualStudioGenerator::cmLocalVisualStudioGenerator(VSVersion v) +cmLocalVisualStudioGenerator +::cmLocalVisualStudioGenerator(VSVersion v, cmLocalGenerator* parent) + : cmLocalGenerator(parent) { this->WindowsShell = true; this->WindowsVSIDE = true; diff --git a/Source/cmLocalVisualStudioGenerator.h b/Source/cmLocalVisualStudioGenerator.h index d26c2ea..562d595 100644 --- a/Source/cmLocalVisualStudioGenerator.h +++ b/Source/cmLocalVisualStudioGenerator.h @@ -45,7 +45,7 @@ public: VS14 = 140 }; - cmLocalVisualStudioGenerator(VSVersion v); + cmLocalVisualStudioGenerator(VSVersion v, cmLocalGenerator* parent); virtual ~cmLocalVisualStudioGenerator(); /** Construct a script from the given list of command lines. */ diff --git a/Source/cmLocalXCodeGenerator.cxx b/Source/cmLocalXCodeGenerator.cxx index 8ff6c87..1d3a8cf 100644 --- a/Source/cmLocalXCodeGenerator.cxx +++ b/Source/cmLocalXCodeGenerator.cxx @@ -15,7 +15,8 @@ #include "cmMakefile.h" //---------------------------------------------------------------------------- -cmLocalXCodeGenerator::cmLocalXCodeGenerator() +cmLocalXCodeGenerator::cmLocalXCodeGenerator(cmLocalGenerator* parent) + : cmLocalGenerator(parent) { // the global generator does this, so do not // put these flags into the language flags diff --git a/Source/cmLocalXCodeGenerator.h b/Source/cmLocalXCodeGenerator.h index f553a17..1a5760f 100644 --- a/Source/cmLocalXCodeGenerator.h +++ b/Source/cmLocalXCodeGenerator.h @@ -24,7 +24,7 @@ class cmLocalXCodeGenerator : public cmLocalGenerator { public: ///! Set cache only and recurse to false by default. - cmLocalXCodeGenerator(); + cmLocalXCodeGenerator(cmLocalGenerator* parent); virtual ~cmLocalXCodeGenerator(); virtual std::string GetTargetDirectory(cmTarget const& target) const; diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 4c68849..a00b8eb 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -1617,8 +1617,8 @@ void cmMakefile::AddSubDirectory(const std::string& srcPath, // create a new local generator and set its parent cmLocalGenerator *lg2 = - this->LocalGenerator->GetGlobalGenerator()->CreateLocalGenerator(); - lg2->SetParent(this->LocalGenerator); + this->LocalGenerator->GetGlobalGenerator() + ->CreateLocalGenerator(this->LocalGenerator); this->LocalGenerator->GetGlobalGenerator()->AddLocalGenerator(lg2); // set the subdirs start dirs http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e4c78b37cec74c505e8a4951276c17f7e64e5f67 commit e4c78b37cec74c505e8a4951276c17f7e64e5f67 Author: Stephen Kelly <steve...@gmail.com> AuthorDate: Sun Apr 26 19:53:06 2015 +0200 Commit: Stephen Kelly <steve...@gmail.com> CommitDate: Tue Apr 28 07:50:02 2015 +0200 cmMakefile: Inline SetHome* methods into last remaining caller. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index c8b6849..4c68849 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -651,9 +651,23 @@ void cmMakefile::SetLocalGenerator(cmLocalGenerator* lg) this->Properties.SetCMakeInstance(this->GetCMakeInstance()); this->WarnUnused = this->GetCMakeInstance()->GetWarnUnused(); this->CheckSystemVars = this->GetCMakeInstance()->GetCheckSystemVars(); - this->SetHomeDirectory(this->GetCMakeInstance()->GetHomeDirectory()); - this->SetHomeOutputDirectory( - this->GetCMakeInstance()->GetHomeOutputDirectory()); + + { + const char* dir = this->GetCMakeInstance()->GetHomeDirectory(); + this->AddDefinition("CMAKE_SOURCE_DIR", dir); + if ( !this->GetDefinition("CMAKE_CURRENT_SOURCE_DIR") ) + { + this->AddDefinition("CMAKE_CURRENT_SOURCE_DIR", dir); + } + } + { + const char* dir = this->GetCMakeInstance()->GetHomeOutputDirectory(); + this->AddDefinition("CMAKE_BINARY_DIR", dir); + if ( !this->GetDefinition("CMAKE_CURRENT_BINARY_DIR") ) + { + this->AddDefinition("CMAKE_CURRENT_BINARY_DIR", dir); + } + } } namespace @@ -3385,29 +3399,11 @@ const char* cmMakefile::GetHomeDirectory() const return this->GetCMakeInstance()->GetHomeDirectory(); } -void cmMakefile::SetHomeDirectory(const std::string& dir) -{ - this->AddDefinition("CMAKE_SOURCE_DIR", dir.c_str()); - if ( !this->GetDefinition("CMAKE_CURRENT_SOURCE_DIR") ) - { - this->AddDefinition("CMAKE_CURRENT_SOURCE_DIR", dir.c_str()); - } -} - const char* cmMakefile::GetHomeOutputDirectory() const { return this->GetCMakeInstance()->GetHomeOutputDirectory(); } -void cmMakefile::SetHomeOutputDirectory(const std::string& dir) -{ - this->AddDefinition("CMAKE_BINARY_DIR", dir.c_str()); - if ( !this->GetDefinition("CMAKE_CURRENT_BINARY_DIR") ) - { - this->AddDefinition("CMAKE_CURRENT_BINARY_DIR", dir.c_str()); - } -} - void cmMakefile::SetScriptModeFile(const char* scriptfile) { this->AddDefinition("CMAKE_SCRIPT_MODE_FILE", scriptfile); diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 8c5ccc9..dcf56e1 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -422,19 +422,8 @@ public: bool HasCMP0054AlreadyBeenReported( cmListFileContext context) const; - //@{ - /** - * Set/Get the home directory (or output directory) in the project. The - * home directory is the top directory of the project. It is where - * CMakeSetup or configure was run. Remember that CMake processes - * CMakeLists files by recursing up the tree starting at the StartDirectory - * and going up until it reaches the HomeDirectory. - */ - void SetHomeDirectory(const std::string& dir); const char* GetHomeDirectory() const; - void SetHomeOutputDirectory(const std::string& dir); const char* GetHomeOutputDirectory() const; - //@} /** * Set CMAKE_SCRIPT_MODE_FILE variable when running a -P script. http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=410f39a43ef3ad900bcaed15e6838f97f034f0e7 commit 410f39a43ef3ad900bcaed15e6838f97f034f0e7 Author: Stephen Kelly <steve...@gmail.com> AuthorDate: Sun Apr 26 17:18:27 2015 +0200 Commit: Stephen Kelly <steve...@gmail.com> CommitDate: Tue Apr 28 07:50:01 2015 +0200 cmMakefile: Delegate storage of Home dirs to the cmake class. There is no need to duplicate these on every cmMakefile. diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index c77a90c..c8b6849 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -181,11 +181,11 @@ void cmMakefile::Print() const std::cout << " this->StartOutputDirectory; " << this->GetCurrentBinaryDirectory() << std::endl; std::cout << " this->HomeOutputDirectory; " << - this->HomeOutputDirectory << std::endl; + this->GetHomeOutputDirectory() << std::endl; std::cout << " this->cmStartDirectory; " << this->GetCurrentSourceDirectory() << std::endl; std::cout << " this->cmHomeDirectory; " << - this->cmHomeDirectory << std::endl; + this->GetHomeDirectory() << std::endl; std::cout << " this->ProjectName; " << this->ProjectName << std::endl; this->PrintStringVector("this->LinkDirectories", this->LinkDirectories); @@ -3382,34 +3382,29 @@ cmMakefile::LexicalPushPop::~LexicalPushPop() const char* cmMakefile::GetHomeDirectory() const { - return this->cmHomeDirectory.c_str(); + return this->GetCMakeInstance()->GetHomeDirectory(); } void cmMakefile::SetHomeDirectory(const std::string& dir) { - this->cmHomeDirectory = dir; - cmSystemTools::ConvertToUnixSlashes(this->cmHomeDirectory); - this->AddDefinition("CMAKE_SOURCE_DIR", this->GetHomeDirectory()); + this->AddDefinition("CMAKE_SOURCE_DIR", dir.c_str()); if ( !this->GetDefinition("CMAKE_CURRENT_SOURCE_DIR") ) { - this->AddDefinition("CMAKE_CURRENT_SOURCE_DIR", this->GetHomeDirectory()); + this->AddDefinition("CMAKE_CURRENT_SOURCE_DIR", dir.c_str()); } } const char* cmMakefile::GetHomeOutputDirectory() const { - return this->HomeOutputDirectory.c_str(); + return this->GetCMakeInstance()->GetHomeOutputDirectory(); } void cmMakefile::SetHomeOutputDirectory(const std::string& dir) { - this->HomeOutputDirectory = dir; - cmSystemTools::ConvertToUnixSlashes(this->HomeOutputDirectory); - this->AddDefinition("CMAKE_BINARY_DIR", this->GetHomeOutputDirectory()); + this->AddDefinition("CMAKE_BINARY_DIR", dir.c_str()); if ( !this->GetDefinition("CMAKE_CURRENT_BINARY_DIR") ) { - this->AddDefinition("CMAKE_CURRENT_BINARY_DIR", - this->GetHomeOutputDirectory()); + this->AddDefinition("CMAKE_CURRENT_BINARY_DIR", dir.c_str()); } } diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 46e9391..8c5ccc9 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -878,8 +878,6 @@ protected: std::string cmStartDirectory; std::string StartOutputDirectory; - std::string cmHomeDirectory; - std::string HomeOutputDirectory; std::string cmCurrentListFile; std::string ProjectName; // project name diff --git a/Source/cmQtAutoGenerators.cxx b/Source/cmQtAutoGenerators.cxx index 1548c36..91b2b27 100644 --- a/Source/cmQtAutoGenerators.cxx +++ b/Source/cmQtAutoGenerators.cxx @@ -1210,10 +1210,11 @@ static cmGlobalGenerator* CreateGlobalGenerator(cmake* cm, cmGlobalGenerator* gg = new cmGlobalGenerator(); gg->SetCMakeInstance(cm); + cm->SetHomeOutputDirectory(targetDirectory); + cm->SetHomeDirectory(targetDirectory); + cmLocalGenerator* lg = gg->CreateLocalGenerator(); - lg->GetMakefile()->SetHomeOutputDirectory(targetDirectory); lg->GetMakefile()->SetCurrentBinaryDirectory(targetDirectory); - lg->GetMakefile()->SetHomeDirectory(targetDirectory); lg->GetMakefile()->SetCurrentSourceDirectory(targetDirectory); gg->SetCurrentLocalGenerator(lg); @@ -1225,6 +1226,8 @@ bool cmQtAutoGenerators::Run(const std::string& targetDirectory, { bool success = true; cmake cm; + cm.SetHomeOutputDirectory(targetDirectory); + cm.SetHomeDirectory(targetDirectory); cmGlobalGenerator* gg = CreateGlobalGenerator(&cm, targetDirectory); cmMakefile* makefile = gg->GetCurrentLocalGenerator()->GetMakefile(); diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 439cc54..f72b088 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -372,13 +372,13 @@ void cmake::ReadListFile(const std::vector<std::string>& args, // read in the list file to fill the cache if(path) { + std::string homeDir = this->GetHomeDirectory(); + std::string homeOutputDir = this->GetHomeOutputDirectory(); + this->SetHomeDirectory(cmSystemTools::GetCurrentWorkingDirectory()); + this->SetHomeOutputDirectory(cmSystemTools::GetCurrentWorkingDirectory()); cmsys::auto_ptr<cmLocalGenerator> lg(gg->CreateLocalGenerator()); - lg->GetMakefile()->SetHomeOutputDirectory - (cmSystemTools::GetCurrentWorkingDirectory()); lg->GetMakefile()->SetCurrentBinaryDirectory (cmSystemTools::GetCurrentWorkingDirectory()); - lg->GetMakefile()->SetHomeDirectory - (cmSystemTools::GetCurrentWorkingDirectory()); lg->GetMakefile()->SetCurrentSourceDirectory (cmSystemTools::GetCurrentWorkingDirectory()); if (this->GetWorkingMode() != NORMAL_MODE) @@ -393,6 +393,8 @@ void cmake::ReadListFile(const std::vector<std::string>& args, { cmSystemTools::Error("Error processing file: ", path); } + this->SetHomeDirectory(homeDir); + this->SetHomeOutputDirectory(homeOutputDir); } // free generic one if generated ----------------------------------------------------------------------- Summary of changes: Source/CMakeVersion.cmake | 2 +- Source/cmGlobalBorlandMakefileGenerator.cxx | 6 +- Source/cmGlobalBorlandMakefileGenerator.h | 2 +- Source/cmGlobalGenerator.cxx | 5 +- Source/cmGlobalGenerator.h | 2 +- Source/cmGlobalGhsMultiGenerator.cxx | 5 +- Source/cmGlobalGhsMultiGenerator.h | 2 +- Source/cmGlobalJOMMakefileGenerator.cxx | 6 +- Source/cmGlobalJOMMakefileGenerator.h | 2 +- Source/cmGlobalMSYSMakefileGenerator.cxx | 6 +- Source/cmGlobalMSYSMakefileGenerator.h | 2 +- Source/cmGlobalMinGWMakefileGenerator.cxx | 6 +- Source/cmGlobalMinGWMakefileGenerator.h | 2 +- Source/cmGlobalNMakeMakefileGenerator.cxx | 6 +- Source/cmGlobalNMakeMakefileGenerator.h | 2 +- Source/cmGlobalNinjaGenerator.cxx | 5 +- Source/cmGlobalNinjaGenerator.h | 2 +- Source/cmGlobalUnixMakefileGenerator3.cxx | 5 +- Source/cmGlobalUnixMakefileGenerator3.h | 2 +- Source/cmGlobalVisualStudio10Generator.cxx | 6 +- Source/cmGlobalVisualStudio10Generator.h | 2 +- Source/cmGlobalVisualStudio11Generator.cxx | 6 +- Source/cmGlobalVisualStudio11Generator.h | 2 +- Source/cmGlobalVisualStudio12Generator.cxx | 6 +- Source/cmGlobalVisualStudio12Generator.h | 2 +- Source/cmGlobalVisualStudio14Generator.cxx | 6 +- Source/cmGlobalVisualStudio14Generator.h | 2 +- Source/cmGlobalVisualStudio6Generator.cxx | 5 +- Source/cmGlobalVisualStudio6Generator.h | 2 +- Source/cmGlobalVisualStudio71Generator.cxx | 6 +- Source/cmGlobalVisualStudio71Generator.h | 2 +- Source/cmGlobalVisualStudio7Generator.cxx | 6 +- Source/cmGlobalVisualStudio7Generator.h | 2 +- Source/cmGlobalVisualStudio8Generator.cxx | 6 +- Source/cmGlobalVisualStudio8Generator.h | 2 +- Source/cmGlobalVisualStudio9Generator.cxx | 6 +- Source/cmGlobalVisualStudio9Generator.h | 2 +- Source/cmGlobalWatcomWMakeGenerator.cxx | 6 +- Source/cmGlobalWatcomWMakeGenerator.h | 2 +- Source/cmGlobalXCodeGenerator.cxx | 5 +- Source/cmGlobalXCodeGenerator.h | 2 +- Source/cmLocalGenerator.cxx | 11 ++- Source/cmLocalGenerator.h | 3 +- Source/cmLocalGhsMultiGenerator.cxx | 3 +- Source/cmLocalGhsMultiGenerator.h | 2 +- Source/cmLocalNinjaGenerator.cxx | 4 +- Source/cmLocalNinjaGenerator.h | 2 +- Source/cmLocalUnixMakefileGenerator3.cxx | 4 +- Source/cmLocalUnixMakefileGenerator3.h | 2 +- Source/cmLocalVisualStudio10Generator.cxx | 5 +- Source/cmLocalVisualStudio10Generator.h | 2 +- Source/cmLocalVisualStudio6Generator.cxx | 5 +- Source/cmLocalVisualStudio6Generator.h | 2 +- Source/cmLocalVisualStudio7Generator.cxx | 5 +- Source/cmLocalVisualStudio7Generator.h | 2 +- Source/cmLocalVisualStudioGenerator.cxx | 4 +- Source/cmLocalVisualStudioGenerator.h | 2 +- Source/cmLocalXCodeGenerator.cxx | 3 +- Source/cmLocalXCodeGenerator.h | 2 +- Source/cmMakefile.cxx | 137 +++++++++++++-------------- Source/cmMakefile.h | 26 +---- Source/cmQtAutoGenerators.cxx | 7 +- Source/cmState.cxx | 70 ++++++++++++++ Source/cmState.h | 29 ++++++ Source/cmake.cxx | 20 ++-- Source/cmake.h | 2 - 66 files changed, 314 insertions(+), 196 deletions(-) hooks/post-receive -- CMake _______________________________________________ Cmake-commits mailing list Cmake-commits@cmake.org http://public.kitware.com/mailman/listinfo/cmake-commits