@@ -6,12 +6,16 @@ import XcodeGraph
66
77public enum SystemFrameworkMetadataProviderError : LocalizedError , Equatable {
88 case unsupportedSDK( name: String )
9+ case unsupportedSDKPlatform( sdk: String , platform: Platform , supported: [ Platform ] )
910
1011 public var errorDescription : String ? {
1112 switch self {
1213 case let . unsupportedSDK( sdk) :
1314 let supportedTypes = SDKType . supportedTypesDescription
1415 return " The SDK type of \( sdk) is not currently supported - only \( supportedTypes) are supported. "
16+ case let . unsupportedSDKPlatform( sdk, platform, supported) :
17+ let platforms = supported. map ( \. caseValue) . joined ( separator: " , " )
18+ return " The Platform type of \( platform. caseValue) is not currently supported for \( sdk) - only \( platforms) are supported. "
1519 }
1620 }
1721}
@@ -38,7 +42,7 @@ public final class SystemFrameworkMetadataProvider: SystemFrameworkMetadataProvi
3842 sdkName: String ,
3943 status: LinkingStatus ,
4044 platform: Platform ,
41- source: SDKSource
45+ source sdkSource : SDKSource
4246 ) throws -> SystemFrameworkMetadata {
4347 let sdkNamePath = try AbsolutePath ( validating: " / \( sdkName) " )
4448 guard let sdkExtension = sdkNamePath. extension
@@ -58,6 +62,15 @@ public final class SystemFrameworkMetadataProvider: SystemFrameworkMetadataProvi
5862 throw SystemFrameworkMetadataProviderError . unsupportedSDK ( name: sdkName)
5963 }
6064
65+ var source = sdkSource
66+ if sdkName == " XcodeKit.framework " {
67+ source = . developer
68+ if platform != . macOS {
69+ throw SystemFrameworkMetadataProviderError
70+ . unsupportedSDKPlatform ( sdk: sdkName, platform: platform, supported: [ . macOS] )
71+ }
72+ }
73+
6174 let path = try sdkPath ( name: sdkName, platform: platform, type: sdkType, source: source)
6275 return SystemFrameworkMetadata (
6376 name: sdkName,
@@ -70,7 +83,7 @@ public final class SystemFrameworkMetadataProvider: SystemFrameworkMetadataProvi
7083 private func sdkPath( name: String , platform: Platform , type: SDKType , source: SDKSource ) throws -> AbsolutePath {
7184 switch source {
7285 case . developer:
73- let xcodeDeveloperSdkRootPath = platform. xcodeDeveloperSdkRootPath
86+ let xcodeDeveloperSdkRootPath = name == " XcodeKit.framework " ? " Library " : platform. xcodeDeveloperSdkRootPath
7487 let sdkRootPath = try AbsolutePath ( validating: " / \( xcodeDeveloperSdkRootPath) " )
7588 return sdkRootPath
7689 . appending ( try RelativePath ( validating: " Frameworks " ) )
0 commit comments