Переглянути джерело

cmTarget: Handle NO_SYSTEM_FROM_IMPORTED.

This handling was lost in commit faedd2be (cmTarget: Fix system include
annotation propagation., 2014-01-01).
Stephen Kelly 11 роки тому
батько
коміт
590d238914
1 змінених файлів з 8 додано та 4 видалено
  1. 8 4
      Source/cmGeneratorTarget.cxx

+ 8 - 4
Source/cmGeneratorTarget.cxx

@@ -65,7 +65,8 @@ cmGeneratorTarget::GetSourceDepends(cmSourceFile* sf) const
 static void handleSystemIncludesDep(cmMakefile *mf, const std::string &name,
 static void handleSystemIncludesDep(cmMakefile *mf, const std::string &name,
                                   const char *config, cmTarget *headTarget,
                                   const char *config, cmTarget *headTarget,
                                   cmGeneratorExpressionDAGChecker *dagChecker,
                                   cmGeneratorExpressionDAGChecker *dagChecker,
-                                  std::vector<std::string>& result)
+                                  std::vector<std::string>& result,
+                                  bool excludeImported)
 {
 {
   cmTarget* depTgt = mf->FindTargetToUse(name.c_str());
   cmTarget* depTgt = mf->FindTargetToUse(name.c_str());
 
 
@@ -85,7 +86,7 @@ static void handleSystemIncludesDep(cmMakefile *mf, const std::string &name,
                                       config, false, headTarget,
                                       config, false, headTarget,
                                       depTgt, dagChecker), result);
                                       depTgt, dagChecker), result);
     }
     }
-  if (!depTgt->IsImported())
+  if (!depTgt->IsImported() || excludeImported)
     {
     {
     return;
     return;
     }
     }
@@ -130,6 +131,9 @@ bool cmGeneratorTarget::IsSystemIncludeDirectory(const char *dir,
                                         this->GetName(),
                                         this->GetName(),
                                         "SYSTEM_INCLUDE_DIRECTORIES", 0, 0);
                                         "SYSTEM_INCLUDE_DIRECTORIES", 0, 0);
 
 
+    bool excludeImported
+                = this->Target->GetPropertyAsBool("NO_SYSTEM_FROM_IMPORTED");
+
     std::vector<std::string> result;
     std::vector<std::string> result;
     for (std::set<cmStdString>::const_iterator
     for (std::set<cmStdString>::const_iterator
         it = this->Target->GetSystemIncludeDirectories().begin();
         it = this->Target->GetSystemIncludeDirectories().begin();
@@ -156,7 +160,7 @@ bool cmGeneratorTarget::IsSystemIncludeDirectory(const char *dir,
           }
           }
 
 
         handleSystemIncludesDep(this->Makefile, *li, config, this->Target,
         handleSystemIncludesDep(this->Makefile, *li, config, this->Target,
-                                &dagChecker, result);
+                                &dagChecker, result, excludeImported);
 
 
         std::vector<std::string> deps;
         std::vector<std::string> deps;
         tgt->GetTransitivePropertyLinkLibraries(config, this->Target, deps);
         tgt->GetTransitivePropertyLinkLibraries(config, this->Target, deps);
@@ -167,7 +171,7 @@ bool cmGeneratorTarget::IsSystemIncludeDirectory(const char *dir,
           if (uniqueDeps.insert(*di).second)
           if (uniqueDeps.insert(*di).second)
             {
             {
             handleSystemIncludesDep(this->Makefile, *di, config, this->Target,
             handleSystemIncludesDep(this->Makefile, *di, config, this->Target,
-                                    &dagChecker, result);
+                                    &dagChecker, result, excludeImported);
             }
             }
           }
           }
         }
         }