瀏覽代碼

Ninja: Don't limit custom cmd side-effects to build folder (#14972)

Actually custom command can write wherever it wants to, such as temporary
folder or source folder, possibly violating rules that only build folder should
be affected. Therefore we should consider custom command dependency at any path
as possible side effect adding phony rule.

We avoid adding phony rules for regular source files (since the paraent
commit) so we no longer need the in-build-tree test to avoid them.
Adam Strzelecki 11 年之前
父節點
當前提交
7243c95129
共有 1 個文件被更改,包括 6 次插入16 次删除
  1. 6 16
      Source/cmGlobalNinjaGenerator.cxx

+ 6 - 16
Source/cmGlobalNinjaGenerator.cxx

@@ -1033,27 +1033,17 @@ void cmGlobalNinjaGenerator::WriteUnknownExplicitDependencies(std::ostream& os)
                       std::back_inserter(unkownExplicitDepends));
                       std::back_inserter(unkownExplicitDepends));
 
 
 
 
-  std::string const rootBuildDirectory =
-      this->GetCMakeInstance()->GetHomeOutputDirectory();
   for (std::vector<std::string>::const_iterator
   for (std::vector<std::string>::const_iterator
        i = unkownExplicitDepends.begin();
        i = unkownExplicitDepends.begin();
        i != unkownExplicitDepends.end();
        i != unkownExplicitDepends.end();
        ++i)
        ++i)
     {
     {
-    //verify the file is in the build directory
-    std::string const absDepPath = cmSystemTools::CollapseFullPath(
-                                     i->c_str(), rootBuildDirectory.c_str());
-    bool const inBuildDir = cmSystemTools::IsSubDirectory(absDepPath.c_str(),
-                                                  rootBuildDirectory.c_str());
-    if(inBuildDir)
-      {
-      cmNinjaDeps deps(1,*i);
-      this->WritePhonyBuild(os,
-                            "",
-                            deps,
-                            deps);
-      }
-   }
+    cmNinjaDeps deps(1,*i);
+    this->WritePhonyBuild(os,
+                          "",
+                          deps,
+                          deps);
+    }
 }
 }
 
 
 void cmGlobalNinjaGenerator::WriteBuiltinTargets(std::ostream& os)
 void cmGlobalNinjaGenerator::WriteBuiltinTargets(std::ostream& os)