From 8245f437b6528cfa86dda12e566a32c810f2d64a Mon Sep 17 00:00:00 2001 From: Alexander Neundorf Date: Wed, 9 May 2007 14:41:38 -0400 Subject: BUG: fix problem for non-C/CXX languages with Visual Studio, the dependencies for the custom commands added for java were not handled correctly. Needs more work. Alex --- Source/cmGlobalGenerator.cxx | 29 ++++++++++++++++------------- Source/cmGlobalGenerator.h | 2 -- Source/cmLocalGenerator.h | 4 +++- Source/cmLocalVisualStudio6Generator.cxx | 9 ++++++--- Source/cmLocalVisualStudio6Generator.h | 4 +++- Source/cmLocalVisualStudio7Generator.cxx | 7 +++++-- Source/cmLocalVisualStudio7Generator.h | 4 +++- 7 files changed, 36 insertions(+), 23 deletions(-) diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 1691308..6273f15 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -717,14 +717,12 @@ void cmGlobalGenerator::Configure() } // at this point this->LocalGenerators has been filled, // so create the map from project name to vector of local generators - this->FillProjectMap(); + this->FillProjectMap(); // now create project to target map // This will make sure that targets have all the // targets they depend on as part of the build. - this->FillProjectToTargetMap(); - // now trace all dependencies - this->TraceDependencies(); - + this->FillProjectToTargetMap(); + if ( !this->CMakeInstance->GetScriptMode() ) { this->CMakeInstance->UpdateProgress("Configuring done", -1); @@ -735,6 +733,19 @@ void cmGlobalGenerator::Generate() { // For each existing cmLocalGenerator unsigned int i; + + // Add generator specific helper commands + for (i = 0; i < this->LocalGenerators.size(); ++i) + { + this->LocalGenerators[i]->AddHelperCommands(); + } + + // Trace the dependencies, after that no custom commands should be added + // because their dependencies might not be handled correctly + for (i = 0; i < this->LocalGenerators.size(); ++i) + { + this->LocalGenerators[i]->TraceDependencies(); + } // Consolidate global targets cmTargets globalTargets; @@ -1043,14 +1054,6 @@ const char* cmGlobalGenerator::GetLinkerPreference(const char* lang) return "None"; } -void cmGlobalGenerator::TraceDependencies() -{ - for (unsigned int i = 0; i < this->LocalGenerators.size(); ++i) - { - this->LocalGenerators[i]->TraceDependencies(); - } -} - void cmGlobalGenerator::FillProjectMap() { this->ProjectMap.clear(); // make sure we start with a clean map diff --git a/Source/cmGlobalGenerator.h b/Source/cmGlobalGenerator.h index 0c0cd20..65fe715 100644 --- a/Source/cmGlobalGenerator.h +++ b/Source/cmGlobalGenerator.h @@ -202,8 +202,6 @@ protected: void FillProjectMap(); bool IsExcluded(cmLocalGenerator* root, cmLocalGenerator* gen); void FillProjectToTargetMap(); - // Calls TraceVSDependencies() on all targets - void TraceDependencies(); void CreateDefaultGlobalTargets(cmTargets* targets); cmTarget CreateGlobalTarget(const char* name, const char* message, const cmCustomCommandLines* commandLines, diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h index a9f5682..58a5a11 100644 --- a/Source/cmLocalGenerator.h +++ b/Source/cmLocalGenerator.h @@ -54,7 +54,9 @@ public: * Calls TraceVSDependencies() on all targets of this generator. */ virtual void TraceDependencies(); - + + virtual void AddHelperCommands() {} + /** * Perform any final calculations prior to generation */ diff --git a/Source/cmLocalVisualStudio6Generator.cxx b/Source/cmLocalVisualStudio6Generator.cxx index b3ae6e2..071835a 100644 --- a/Source/cmLocalVisualStudio6Generator.cxx +++ b/Source/cmLocalVisualStudio6Generator.cxx @@ -32,13 +32,16 @@ cmLocalVisualStudio6Generator::~cmLocalVisualStudio6Generator() { } - -void cmLocalVisualStudio6Generator::Generate() -{ +void cmLocalVisualStudio6Generator::AddHelperCommands() +{ std::set lang; lang.insert("C"); lang.insert("CXX"); this->CreateCustomTargetsAndCommands(lang); +} + +void cmLocalVisualStudio6Generator::Generate() +{ this->OutputDSPFile(); } diff --git a/Source/cmLocalVisualStudio6Generator.h b/Source/cmLocalVisualStudio6Generator.h index 7ac84a4..c371f20 100644 --- a/Source/cmLocalVisualStudio6Generator.h +++ b/Source/cmLocalVisualStudio6Generator.h @@ -38,7 +38,9 @@ public: cmLocalVisualStudio6Generator(); virtual ~cmLocalVisualStudio6Generator(); - + + virtual void AddHelperCommands(); + /** * Generate the makefile for this directory. */ diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index 2019b8e..53d24a9 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -42,8 +42,7 @@ cmLocalVisualStudio7Generator::~cmLocalVisualStudio7Generator() { } - -void cmLocalVisualStudio7Generator::Generate() +void cmLocalVisualStudio7Generator::AddHelperCommands() { std::set lang; lang.insert("C"); @@ -53,6 +52,10 @@ void cmLocalVisualStudio7Generator::Generate() lang.insert("DEF"); this->CreateCustomTargetsAndCommands(lang); this->FixGlobalTargets(); +} + +void cmLocalVisualStudio7Generator::Generate() +{ this->OutputVCProjFile(); } diff --git a/Source/cmLocalVisualStudio7Generator.h b/Source/cmLocalVisualStudio7Generator.h index 1863ff9..e5b9d5e 100644 --- a/Source/cmLocalVisualStudio7Generator.h +++ b/Source/cmLocalVisualStudio7Generator.h @@ -41,7 +41,9 @@ public: cmLocalVisualStudio7Generator(); virtual ~cmLocalVisualStudio7Generator(); - + + virtual void AddHelperCommands(); + /** * Generate the makefile for this directory. */ -- cgit v0.12