apple/swift-driver

Hardcoded .exe for tools in WindowsToolchain.swift

winnydows opened this issue · 0 comments

lookupToolPath function in WindowsToolchain.swift don't know about cross compilation case.
Patch:

diff -rupN original/Sources/SwiftDriver/Toolchains/WindowsToolchain.swift new/Sources/SwiftDriver/Toolchains/WindowsToolchain.swift
--- original/Sources/SwiftDriver/Toolchains/WindowsToolchain.swift	2022-09-12 10:01:08.000000000 +0300
+++ new/Sources/SwiftDriver/Toolchains/WindowsToolchain.swift	2022-09-16 11:57:36.000000000 +0300
@@ -67,29 +67,34 @@ extension WindowsToolchain.ToolchainVali
   }
 
   private func lookupToolPath(_ tool: Tool) throws -> AbsolutePath {
+#if os(Windows)
+      let ext = ".exe"
+#else
+      let ext = ""
+#endif
     switch tool {
     case .swiftAPIDigester:
-      return try lookup(executable: "swift-api-digester.exe")
+      return try lookup(executable: "swift-api-digester" + ext)
     case .swiftCompiler:
-      return try lookup(executable: "swift-frontend.exe")
+      return try lookup(executable: "swift-frontend" + ext)
     case .staticLinker:
-      return try lookup(executable: "lld-link.exe")
+      return try lookup(executable: "lld-link" + ext)
     case .dynamicLinker:
-      return try lookup(executable: "clang.exe")
+      return try lookup(executable: "clang" + ext)
     case .clang:
-      return try lookup(executable: "clang.exe")
+      return try lookup(executable: "clang" + ext)
     case .clangxx:
-      return try lookup(executable: "clang++.exe")
+      return try lookup(executable: "clang++" + ext)
     case .swiftAutolinkExtract:
-      return try lookup(executable: "swift-autolink-extract.exe")
+      return try lookup(executable: "swift-autolink-extract" + ext)
     case .lldb:
-      return try lookup(executable: "lldb.exe")
+      return try lookup(executable: "lldb" + ext)
     case .dsymutil:
-      return try lookup(executable: "llvm-dsymutil.exe")
+      return try lookup(executable: "llvm-dsymutil" + ext)
     case .dwarfdump:
-      return try lookup(executable: "llvm-dwarfdump.exe")
+      return try lookup(executable: "llvm-dwarfdump" + ext)
     case .swiftHelp:
-      return try lookup(executable: "swift-help.exe")
+      return try lookup(executable: "swift-help" + ext)
     }
   }