Browse Source

Factor out global generator ComputeTargetDepends method

Put the global dependency analysis in its own method so individual
generators can hook into this point.
Brad King 15 years ago
parent
commit
6bea84353c
2 changed files with 20 additions and 10 deletions
  1. 18 10
      Source/cmGlobalGenerator.cxx
  2. 2 0
      Source/cmGlobalGenerator.h

+ 18 - 10
Source/cmGlobalGenerator.cxx

@@ -863,19 +863,10 @@ void cmGlobalGenerator::Generate()
     }
 
   // Compute the inter-target dependencies.
-  {
-  cmComputeTargetDepends ctd(this);
-  if(!ctd.Compute())
+  if(!this->ComputeTargetDepends())
     {
     return;
     }
-  std::vector<cmTarget*> const& targets = ctd.GetTargets();
-  for(std::vector<cmTarget*>::const_iterator ti = targets.begin();
-      ti != targets.end(); ++ti)
-    {
-    ctd.GetTargetDirectDepends(*ti, this->TargetDependencies[*ti]);
-    }
-  }
 
   // Create a map from local generator to the complete set of targets
   // it builds by default.
@@ -907,6 +898,23 @@ void cmGlobalGenerator::Generate()
   this->CMakeInstance->UpdateProgress("Generating done", -1);
 }
 
+//----------------------------------------------------------------------------
+bool cmGlobalGenerator::ComputeTargetDepends()
+{
+  cmComputeTargetDepends ctd(this);
+  if(!ctd.Compute())
+    {
+    return false;
+    }
+  std::vector<cmTarget*> const& targets = ctd.GetTargets();
+  for(std::vector<cmTarget*>::const_iterator ti = targets.begin();
+      ti != targets.end(); ++ti)
+    {
+    ctd.GetTargetDirectDepends(*ti, this->TargetDependencies[*ti]);
+    }
+  return true;
+}
+
 //----------------------------------------------------------------------------
 bool cmGlobalGenerator::CheckTargets()
 {

+ 2 - 0
Source/cmGlobalGenerator.h

@@ -275,6 +275,8 @@ protected:
   void SetLanguageEnabledMaps(const char* l, cmMakefile* mf);
   void FillExtensionToLanguageMap(const char* l, cmMakefile* mf);
 
+  virtual bool ComputeTargetDepends();
+
   virtual bool CheckALLOW_DUPLICATE_CUSTOM_TARGETS();
 
   bool CheckTargets();