https://github.com/hjyamauchi updated 
https://github.com/llvm/llvm-project/pull/155908

>From 6d46a4e65274f96816a13e64a3c8b686d0a4a4b8 Mon Sep 17 00:00:00 2001
From: Hiroshi Yamauchi <hjyamau...@gmail.com>
Date: Thu, 28 Aug 2025 12:17:24 -0700
Subject: [PATCH] Canonicalize clang-scan-deps input-file/file-deps paths for
 Windows

---
 clang/tools/clang-scan-deps/ClangScanDeps.cpp | 31 ++++++++++++++-----
 1 file changed, 23 insertions(+), 8 deletions(-)

diff --git a/clang/tools/clang-scan-deps/ClangScanDeps.cpp 
b/clang/tools/clang-scan-deps/ClangScanDeps.cpp
index f10b73278381b..1176893cf90da 100644
--- a/clang/tools/clang-scan-deps/ClangScanDeps.cpp
+++ b/clang/tools/clang-scan-deps/ClangScanDeps.cpp
@@ -346,13 +346,22 @@ handleMakeDependencyToolResult(const std::string &Input,
 }
 
 template <typename Container>
-static auto toJSONStrings(llvm::json::OStream &JOS, Container &&Strings) {
-  return [&JOS, Strings = std::forward<Container>(Strings)] {
-    for (StringRef Str : Strings)
+static auto toJSONStrings(llvm::json::OStream &JOS, Container &&Strings,
+                          bool Paths = false) {
+  return [&JOS, Strings = std::forward<Container>(Strings), Paths] {
+    for (StringRef Str : Strings) {
       // Not reporting SDKSettings.json so that test checks can remain (mostly)
       // platform-agnostic.
-      if (!Str.ends_with("SDKSettings.json"))
+      if (Str.ends_with("SDKSettings.json"))
+        continue;
+      if (Paths) {
+        llvm::SmallString<261> Path{Str};
+        llvm::sys::path::make_preferred(Path);
+        JOS.value(Path.str());
+      } else {
         JOS.value(Str);
+      }
+    }
   };
 }
 
@@ -535,8 +544,11 @@ class FullDeps {
                                        toJSONStrings(JOS, Cmd.Arguments));
                     JOS.attribute("executable", StringRef(Cmd.Executable));
                     JOS.attributeArray("file-deps",
-                                       toJSONStrings(JOS, I.FileDeps));
-                    JOS.attribute("input-file", StringRef(I.FileName));
+                                       toJSONStrings(JOS, I.FileDeps,
+                                                     /*Paths*/ true));
+                    llvm::SmallString<261> InputFile = StringRef(I.FileName);
+                    llvm::sys::path::make_preferred(InputFile);
+                    JOS.attribute("input-file", InputFile.str());
                     if (EmitVisibleModules)
                       JOS.attributeArray("visible-clang-modules",
                                          toJSONSorted(JOS, I.VisibleModules));
@@ -558,8 +570,11 @@ class FullDeps {
                                      toJSONStrings(JOS, I.DriverCommandLine));
                   JOS.attribute("executable", "clang");
                   JOS.attributeArray("file-deps",
-                                     toJSONStrings(JOS, I.FileDeps));
-                  JOS.attribute("input-file", StringRef(I.FileName));
+                                     toJSONStrings(JOS, I.FileDeps,
+                                                   /*Paths*/ true));
+                  llvm::SmallString<261> InputFile = StringRef(I.FileName);
+                  llvm::sys::path::make_preferred(InputFile);
+                  JOS.attribute("input-file", InputFile.str());
                   if (EmitVisibleModules)
                     JOS.attributeArray("visible-clang-modules",
                                        toJSONSorted(JOS, I.VisibleModules));

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to