Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion Sources/CoreCommands/SwiftCommandState.swift
Original file line number Diff line number Diff line change
Expand Up @@ -1014,6 +1014,7 @@ public final class SwiftCommandState {
private lazy var _targetToolchain: Result<UserToolchain, Swift.Error> = {
let swiftSDK: SwiftSDK
let hostSwiftSDK: SwiftSDK
let swiftSDKSelector: String?
do {
let hostToolchain = try _hostToolchain.get()
hostSwiftSDK = hostToolchain.swiftSDK
Expand All @@ -1032,6 +1033,8 @@ public final class SwiftCommandState {
outputHandler: { print($0.description) }
)

swiftSDKSelector = self.options.build.swiftSDKSelector ?? self.options.build.deprecatedSwiftSDKSelector

swiftSDK = try SwiftSDK.deriveTargetSwiftSDK(
hostSwiftSDK: hostSwiftSDK,
hostTriple: hostToolchain.targetTriple,
Expand All @@ -1040,7 +1043,7 @@ public final class SwiftCommandState {
customCompileTriple: self.options.build.customCompileTriple,
customCompileToolchain: self.options.build.customCompileToolchain,
customCompileSDK: self.options.build.customCompileSDK,
swiftSDKSelector: self.options.build.swiftSDKSelector ?? self.options.build.deprecatedSwiftSDKSelector,
swiftSDKSelector: swiftSDKSelector,
architectures: self.options.build.architectures,
store: store,
observabilityScope: self.observabilityScope,
Expand All @@ -1057,6 +1060,7 @@ public final class SwiftCommandState {
return Result(catching: {
try UserToolchain(
swiftSDK: swiftSDK,
swiftSDKSelector: swiftSDKSelector,
environment: self.environment,
customTargetInfo: targetInfo,
observabilityScope: self.observabilityScope,
Expand Down
5 changes: 5 additions & 0 deletions Sources/PackageModel/UserToolchain.swift
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,9 @@ public final class UserToolchain: Toolchain {
/// The Swift SDK used by this toolchain.
public let swiftSDK: SwiftSDK

/// The Swift SDK selector used to select this toolchain.
public let swiftSDKSelector: String?

/// The target triple that should be used for compilation.
@available(*, deprecated, renamed: "targetTriple")
public var triple: Basics.Triple { targetTriple }
Expand Down Expand Up @@ -736,6 +739,7 @@ public final class UserToolchain: Toolchain {

public init(
swiftSDK: SwiftSDK,
swiftSDKSelector: String? = nil,
environment: Environment = .current,
searchStrategy: SearchStrategy = .default,
customTargetInfo: JSON? = nil,
Expand All @@ -745,6 +749,7 @@ public final class UserToolchain: Toolchain {
fileSystem: any FileSystem = localFileSystem
) throws {
self.swiftSDK = swiftSDK
self.swiftSDKSelector = swiftSDKSelector
self.environment = environment

switch searchStrategy {
Expand Down
9 changes: 8 additions & 1 deletion Sources/SwiftBuildSupport/SwiftBuildSystem.swift
Original file line number Diff line number Diff line change
Expand Up @@ -710,8 +710,15 @@ public final class SwiftBuildSystem: SPMBuildCore.BuildSystem {
sdkName = platformName
} else if self.buildParameters.triple.isWasm {
// Swift Build uses webassembly instead of wasi as the platform name
let swiftSDKSelector = {
let defaultSDKSelector = "webassembly"
guard let userToolchain = self.buildParameters.toolchain as? UserToolchain else {
return defaultSDKSelector
}
return userToolchain.swiftSDKSelector ?? defaultSDKSelector
}()
platformName = "webassembly"
sdkName = platformName
sdkName = swiftSDKSelector
} else {
platformName = self.buildParameters.triple.darwinPlatform?.platformName ?? self.buildParameters.triple.osNameUnversioned
sdkName = platformName
Expand Down
Loading