浏览代码

Merge topic 'ninja-mingw'

6a2f8335 Ninja: Fix escaping of path to depfile
781eb380 Tests: Fix VSResource test on MinGW with Ninja and a space in the path

Acked-by: Kitware Robot <[email protected]>
Merge-request: !911
Brad King 8 年之前
父节点
当前提交
de16ff3e58

+ 0 - 7
Source/cmGlobalNinjaGenerator.cxx

@@ -146,13 +146,6 @@ std::string cmGlobalNinjaGenerator::EncodePath(const std::string& path)
   return EncodeLiteral(result);
   return EncodeLiteral(result);
 }
 }
 
 
-std::string cmGlobalNinjaGenerator::EncodeDepfileSpace(const std::string& path)
-{
-  std::string result = path;
-  cmSystemTools::ReplaceString(result, " ", "\\ ");
-  return result;
-}
-
 void cmGlobalNinjaGenerator::WriteBuild(
 void cmGlobalNinjaGenerator::WriteBuild(
   std::ostream& os, const std::string& comment, const std::string& rule,
   std::ostream& os, const std::string& comment, const std::string& rule,
   const cmNinjaDeps& outputs, const cmNinjaDeps& implicitOuts,
   const cmNinjaDeps& outputs, const cmNinjaDeps& implicitOuts,

+ 0 - 1
Source/cmGlobalNinjaGenerator.h

@@ -75,7 +75,6 @@ public:
   static std::string EncodeIdent(const std::string& ident, std::ostream& vars);
   static std::string EncodeIdent(const std::string& ident, std::ostream& vars);
   static std::string EncodeLiteral(const std::string& lit);
   static std::string EncodeLiteral(const std::string& lit);
   std::string EncodePath(const std::string& path);
   std::string EncodePath(const std::string& path);
-  static std::string EncodeDepfileSpace(const std::string& path);
 
 
   cmLinkLineComputer* CreateLinkLineComputer(
   cmLinkLineComputer* CreateLinkLineComputer(
     cmOutputConverter* outputConverter,
     cmOutputConverter* outputConverter,

+ 4 - 4
Source/cmNinjaTargetGenerator.cxx

@@ -822,8 +822,8 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatement(
   vars["DEFINES"] = this->ComputeDefines(source, language);
   vars["DEFINES"] = this->ComputeDefines(source, language);
   vars["INCLUDES"] = this->GetIncludes(language);
   vars["INCLUDES"] = this->GetIncludes(language);
   if (!this->NeedDepTypeMSVC(language)) {
   if (!this->NeedDepTypeMSVC(language)) {
-    vars["DEP_FILE"] =
-      cmGlobalNinjaGenerator::EncodeDepfileSpace(objectFileName + ".d");
+    vars["DEP_FILE"] = this->GetLocalGenerator()->ConvertToOutputFormat(
+      objectFileName + ".d", cmOutputConverter::SHELL);
   }
   }
 
 
   this->ExportObjectCompileCommand(
   this->ExportObjectCompileCommand(
@@ -920,8 +920,8 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatement(
     vars["INCLUDES"] = sourceDirectoryFlag + " " + vars["INCLUDES"];
     vars["INCLUDES"] = sourceDirectoryFlag + " " + vars["INCLUDES"];
 
 
     // Explicit preprocessing always uses a depfile.
     // Explicit preprocessing always uses a depfile.
-    ppVars["DEP_FILE"] =
-      cmGlobalNinjaGenerator::EncodeDepfileSpace(ppFileName + ".d");
+    ppVars["DEP_FILE"] = this->GetLocalGenerator()->ConvertToOutputFormat(
+      ppFileName + ".d", cmOutputConverter::SHELL);
     // The actual compilation does not need a depfile because it
     // The actual compilation does not need a depfile because it
     // depends on the already-preprocessed source.
     // depends on the already-preprocessed source.
     vars.erase("DEP_FILE");
     vars.erase("DEP_FILE");

+ 2 - 3
Tests/VSResource/CMakeLists.txt

@@ -18,9 +18,8 @@ if(CMAKE_RC_COMPILER MATCHES windres)
   message(STATUS "CMAKE_RC_COMPILER MATCHES windres")
   message(STATUS "CMAKE_RC_COMPILER MATCHES windres")
   add_definitions(/DCMAKE_RCDEFINE=test.txt)
   add_definitions(/DCMAKE_RCDEFINE=test.txt)
   add_definitions(/DCMAKE_RCDEFINE_NO_QUOTED_STRINGS)
   add_definitions(/DCMAKE_RCDEFINE_NO_QUOTED_STRINGS)
-  if(MSYS AND CMAKE_CURRENT_BINARY_DIR MATCHES " ")
-    # windres cannot handle spaces in include dir, and
-    # for the MSys shell we do not convert to shortpath.
+  if(CMAKE_CURRENT_BINARY_DIR MATCHES " ")
+    # windres cannot handle spaces in include dir
     set(CMAKE_RC_NO_INCLUDE 1)
     set(CMAKE_RC_NO_INCLUDE 1)
   endif()
   endif()
 elseif(MSVC60)
 elseif(MSVC60)