summaryrefslogtreecommitdiffstats
path: root/Source/cmGlobalGenerator.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'Source/cmGlobalGenerator.cxx')
-rw-r--r--Source/cmGlobalGenerator.cxx29
1 files changed, 16 insertions, 13 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