diff options
author | Stephen Kelly <steveire@gmail.com> | 2015-04-28 05:50:52 (GMT) |
---|---|---|
committer | Stephen Kelly <steveire@gmail.com> | 2015-04-28 05:50:52 (GMT) |
commit | a48aebcb67a66bd2fee1318bb971cc5e3b016410 (patch) | |
tree | a93f900fdbcfcccfa80c7c6cd14ac29bbfca03bb | |
parent | e4c78b37cec74c505e8a4951276c17f7e64e5f67 (diff) | |
download | CMake-a48aebcb67a66bd2fee1318bb971cc5e3b016410.zip CMake-a48aebcb67a66bd2fee1318bb971cc5e3b016410.tar.gz CMake-a48aebcb67a66bd2fee1318bb971cc5e3b016410.tar.bz2 |
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.
59 files changed, 132 insertions, 86 deletions
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 |