Browse Source

ENH: Added cmTarget::GetLanguages method to centralize computation of the list of languages compiled in a target.

Brad King 18 years ago
parent
commit
8b0575c4ce
2 changed files with 12 additions and 14 deletions
  1. 11 13
      Source/cmGlobalUnixMakefileGenerator3.cxx
  2. 1 1
      Source/cmGlobalUnixMakefileGenerator3.h

+ 11 - 13
Source/cmGlobalUnixMakefileGenerator3.cxx

@@ -731,8 +731,7 @@ cmGlobalUnixMakefileGenerator3
       makefileName = localName;
       makefileName += "/build.make";
       
-      bool needRequiresStep = 
-        this->NeedRequiresStep(lg,t->second.GetName());
+      bool needRequiresStep = this->NeedRequiresStep(t->second);
       
       lg->WriteDivider(ruleFileStream);
       ruleFileStream
@@ -851,7 +850,7 @@ cmGlobalUnixMakefileGenerator3
                         t->second.GetName(), depends, commands, true);
       
       // Add rules to prepare the target for installation.
-      if(t->second.NeedRelinkBeforeInstall())
+      if(!exclude && t->second.NeedRelinkBeforeInstall())
         {
         localName = lg->GetRelativeTargetDirectory(t->second);
         localName += "/preinstall";
@@ -1168,18 +1167,17 @@ void cmGlobalUnixMakefileGenerator3::WriteHelpRule
 
 
 bool cmGlobalUnixMakefileGenerator3
-::NeedRequiresStep(cmLocalUnixMakefileGenerator3 *lg,const char *name)
+::NeedRequiresStep(cmTarget const& target)
 {
-  std::map<cmStdString,cmLocalUnixMakefileGenerator3::IntegrityCheckSet>& 
-    checkSet = lg->GetIntegrityCheckSet()[name];
-  for(std::map<cmStdString, 
-        cmLocalUnixMakefileGenerator3::IntegrityCheckSet>::const_iterator
-        l = checkSet.begin(); l != checkSet.end(); ++l)
+  std::set<cmStdString> languages;
+  target.GetLanguages(languages);
+  for(std::set<cmStdString>::const_iterator l = languages.begin();
+      l != languages.end(); ++l)
     {
-    std::string name2 = "CMAKE_NEEDS_REQUIRES_STEP_";
-    name2 += l->first;
-    name2 += "_FLAG";
-    if(lg->GetMakefile()->GetDefinition(name2.c_str()))
+    std::string var = "CMAKE_NEEDS_REQUIRES_STEP_";
+    var += *l;
+    var += "_FLAG";
+    if(target.GetMakefile()->GetDefinition(var.c_str()))
       {
       return true;
       }

+ 1 - 1
Source/cmGlobalUnixMakefileGenerator3.h

@@ -165,7 +165,7 @@ protected:
                              cmTarget &target);
 
   // does this generator need a requires step for any of its targets
-  bool NeedRequiresStep(cmLocalUnixMakefileGenerator3 *lg, const char *);
+  bool NeedRequiresStep(cmTarget const&);
 
   // Setup target names
   virtual const char* GetAllTargetName()          { return "all"; }