Skip to content

Commit 095b2d3

Browse files
committed
Use the toolset paths from sdk configure to override an SDK bundle's toolset paths
1 parent edfaba0 commit 095b2d3

1 file changed

Lines changed: 25 additions & 0 deletions

File tree

Sources/PackageModel/SwiftSDKs/SwiftSDK.swift

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -761,6 +761,7 @@ public struct SwiftSDK: Equatable {
761761
) throws -> SwiftSDK {
762762
var swiftSDK: SwiftSDK
763763
var isBasedOnHostSDK: Bool = false
764+
var loadedToolsetPaths: Bool = false
764765

765766
// Create custom toolchain if present.
766767
if let customDestination = customCompileDestination {
@@ -795,7 +796,9 @@ public struct SwiftSDK: Equatable {
795796
hostTimeTriple: hostTriple,
796797
swiftSDKBundleStore: store
797798
)
799+
let bundleToolsetPaths = swiftSDK.pathsConfiguration.toolsetPaths ?? []
798800
try configurationStore.readConfiguration(sdkID: ID, sdk: &swiftSDK)
801+
loadedToolsetPaths = !bundleToolsetPaths.elementsEqual(swiftSDK.pathsConfiguration.toolsetPaths ?? [])
799802
} catch {
800803
// Do nothing to override if a custom SDK config is not found.
801804
observabilityScope.emit(
@@ -819,6 +822,28 @@ public struct SwiftSDK: Equatable {
819822
isBasedOnHostSDK = true
820823
}
821824

825+
// Override the current toolset in the SDK with a custom config.
826+
if loadedToolsetPaths, let toolpaths = swiftSDK.pathsConfiguration.toolsetPaths {
827+
let wasmKitProperties = Toolset.ToolProperties(
828+
path: store.hostToolchainBinDir.appending("wasmkit"),
829+
extraCLIOptions: ["run", "--dir", "."]
830+
)
831+
let defaultTools: [Toolset.KnownTool: Toolset.ToolProperties] = if swiftSDK.targetTriple!.isWasm {
832+
[.debugger: wasmKitProperties, .testRunner: wasmKitProperties]
833+
} else {
834+
[:]
835+
}
836+
swiftSDK.toolset = try toolpaths.reduce(into: Toolset(knownTools: defaultTools, rootPaths: [])) {
837+
try $0.merge(
838+
with: Toolset(
839+
from: $1,
840+
at: fileSystem,
841+
observabilityScope
842+
)
843+
)
844+
}
845+
}
846+
822847
if !customToolsets.isEmpty {
823848
for toolsetPath in customToolsets {
824849
let toolset = try Toolset(from: toolsetPath, at: fileSystem, observabilityScope)

0 commit comments

Comments
 (0)