diff --git a/Sources/SourceKitLSPAPI/BuildDescription.swift b/Sources/SourceKitLSPAPI/BuildDescription.swift index ddb2030c912..74614635454 100644 --- a/Sources/SourceKitLSPAPI/BuildDescription.swift +++ b/Sources/SourceKitLSPAPI/BuildDescription.swift @@ -23,6 +23,9 @@ import class Build.ClangTargetBuildDescription import class Build.SwiftTargetBuildDescription import struct PackageGraph.ResolvedModule import struct PackageGraph.ModulesGraph +import enum PackageGraph.BuildTriple + +public typealias BuildTriple = PackageGraph.BuildTriple public protocol BuildTarget { var sources: [URL] { get } @@ -30,6 +33,8 @@ public protocol BuildTarget { /// The name of the target. It should be possible to build a target by passing this name to `swift build --target` var name: String { get } + var buildTriple: BuildTriple { get } + /// Whether the target is part of the root package that the user opened or if it's part of a package dependency. var isPartOfRootPackage: Bool { get } @@ -53,6 +58,10 @@ private struct WrappedClangTargetBuildDescription: BuildTarget { return description.clangTarget.name } + public var buildTriple: BuildTriple { + return description.target.buildTriple + } + public func compileArguments(for fileURL: URL) throws -> [String] { let filePath = try resolveSymlinks(try AbsolutePath(validating: fileURL.path)) let commandLine = try description.emitCommandLine(for: filePath) @@ -74,6 +83,10 @@ private struct WrappedSwiftTargetBuildDescription: BuildTarget { return description.target.name } + public var buildTriple: BuildTriple { + return description.target.buildTriple + } + var sources: [URL] { return description.sources.map { URL(fileURLWithPath: $0.pathString) } } diff --git a/Sources/SourceKitLSPAPI/PluginTargetBuildDescription.swift b/Sources/SourceKitLSPAPI/PluginTargetBuildDescription.swift index 5c6ab83197b..93a01d0dad3 100644 --- a/Sources/SourceKitLSPAPI/PluginTargetBuildDescription.swift +++ b/Sources/SourceKitLSPAPI/PluginTargetBuildDescription.swift @@ -17,6 +17,7 @@ import struct PackageGraph.ResolvedModule private import class PackageLoading.ManifestLoader internal import struct PackageModel.ToolsVersion private import class PackageModel.UserToolchain +import enum PackageGraph.BuildTriple struct PluginTargetBuildDescription: BuildTarget { private let target: ResolvedModule @@ -38,6 +39,10 @@ struct PluginTargetBuildDescription: BuildTarget { return target.name } + var buildTriple: BuildTriple { + return target.buildTriple + } + func compileArguments(for fileURL: URL) throws -> [String] { // FIXME: This is very odd and we should clean this up by merging `ManifestLoader` and `DefaultPluginScriptRunner` again. let loader = ManifestLoader(toolchain: try UserToolchain(swiftSDK: .hostSwiftSDK()))