diff --git a/Sources/PackageModel/UserToolchain.swift b/Sources/PackageModel/UserToolchain.swift index 7c264f82e39..1ffb3a84e37 100644 --- a/Sources/PackageModel/UserToolchain.swift +++ b/Sources/PackageModel/UserToolchain.swift @@ -328,7 +328,11 @@ public final class UserToolchain: Toolchain { swiftSDK: SwiftSDK, environment: EnvironmentVariables ) throws -> [String] { - let swiftCompilerFlags = swiftSDK.toolset.knownTools[.swiftCompiler]?.extraCLIOptions ?? [] + var swiftCompilerFlags = swiftSDK.toolset.knownTools[.swiftCompiler]?.extraCLIOptions ?? [] + + if let linker = swiftSDK.toolset.knownTools[.linker]?.path { + swiftCompilerFlags += ["-ld-path=\(linker)"] + } guard let sdkDir = swiftSDK.pathsConfiguration.sdkRootPath else { if triple.isWindows() { diff --git a/Tests/BuildTests/BuildPlanTests.swift b/Tests/BuildTests/BuildPlanTests.swift index d4b9cc76bf6..635de85258f 100644 --- a/Tests/BuildTests/BuildPlanTests.swift +++ b/Tests/BuildTests/BuildPlanTests.swift @@ -3607,7 +3607,7 @@ final class BuildPlanTests: XCTestCase { .cxxCompiler: .init(extraCLIOptions: [jsonFlag(tool: .cxxCompiler)]), .swiftCompiler: .init(extraCLIOptions: [jsonFlag(tool: .swiftCompiler)]), .librarian: .init(path: "/fake/toolchain/usr/bin/librarian"), - .linker: .init(extraCLIOptions: [jsonFlag(tool: .linker)]), + .linker: .init(path: "/fake/toolchain/usr/bin/linker", extraCLIOptions: [jsonFlag(tool: .linker)]), ], rootPaths: try UserToolchain.default.swiftSDK.toolset.rootPaths) let targetTriple = try Triple("armv7em-unknown-none-macho") @@ -3688,7 +3688,9 @@ final class BuildPlanTests: XCTestCase { // Compile Swift Target let exeCompileArguments = try result.target(for: "exe").swiftTarget().compileArguments() let exeCompileArgumentsPattern: [StringPattern] = [ - jsonFlag(tool: .swiftCompiler), "-g", cliFlag(tool: .swiftCompiler), + jsonFlag(tool: .swiftCompiler), + "-ld-path=/fake/toolchain/usr/bin/linker", + "-g", cliFlag(tool: .swiftCompiler), .anySequence, "-Xcc", jsonFlag(tool: .cCompiler), "-Xcc", "-g", "-Xcc", cliFlag(tool: .cCompiler), // TODO: Pass -Xcxx flags to swiftc (#6491) @@ -3711,7 +3713,9 @@ final class BuildPlanTests: XCTestCase { // Link Product let exeLinkArguments = try result.buildProduct(for: "exe").linkArguments() let exeLinkArgumentsPattern: [StringPattern] = [ - jsonFlag(tool: .swiftCompiler), "-g", cliFlag(tool: .swiftCompiler), + jsonFlag(tool: .swiftCompiler), + "-ld-path=/fake/toolchain/usr/bin/linker", + "-g", cliFlag(tool: .swiftCompiler), .anySequence, "-Xlinker", jsonFlag(tool: .linker), "-Xlinker", cliFlag(tool: .linker), ]