@@ -38,6 +38,8 @@ public protocol Toolchain {
3838
3939 var executor : DriverExecutor { get }
4040
41+ var executableSuffix : String { get }
42+
4143 /// Retrieve the absolute path to a particular tool.
4244 func getToolPath( _ tool: Tool ) throws -> AbsolutePath
4345
@@ -129,26 +131,25 @@ extension Toolchain {
129131 /// looks in the `executableDir`, `xcrunFind` or in the `searchPaths`.
130132 /// - Parameter executable: executable to look for [i.e. `swift`].
131133 func lookup( executable: String ) throws -> AbsolutePath {
134+ let filename = executable + executableSuffix
132135 if let overrideString = envVar ( forExecutable: executable) {
133136 return try AbsolutePath ( validating: overrideString)
134- } else if let path = lookupExecutablePath ( filename: executable , searchPaths: [ executableDir] ) {
137+ } else if let path = lookupExecutablePath ( filename: filename , searchPaths: [ executableDir] ) {
135138 return path
136139 } else if let path = try ? xcrunFind ( executable: executable) {
137140 return path
138- } else if ![ " swift-frontend " , " swift " , " swift-frontend.exe " , " swift.exe " ] . contains ( executable) ,
141+ } else if ![ " swift-frontend " , " swift " ] . contains ( executable) ,
139142 let parentDirectory = try ? getToolPath ( . swiftCompiler) . parentDirectory,
140143 parentDirectory != executableDir,
141- let path = lookupExecutablePath ( filename: executable , searchPaths: [ parentDirectory] ) {
144+ let path = lookupExecutablePath ( filename: filename , searchPaths: [ parentDirectory] ) {
142145 // If the driver library's client and the frontend are in different directories,
143146 // try looking for tools next to the frontend.
144147 return path
145- } else if let path = lookupExecutablePath ( filename: executable , searchPaths: searchPaths) {
148+ } else if let path = lookupExecutablePath ( filename: filename , searchPaths: searchPaths) {
146149 return path
147- // Temporary shim: fall back to looking for "swift" before failing.
148150 } else if executable == " swift-frontend " {
151+ // Temporary shim: fall back to looking for "swift" before failing.
149152 return try lookup ( executable: " swift " )
150- } else if executable == " swift-frontend.exe " {
151- return try lookup ( executable: " swift.exe " )
152153 } else if fallbackToExecutableDefaultPath {
153154 return AbsolutePath ( " /usr/bin/ " + executable)
154155 } else {
0 commit comments