@@ -21,6 +21,7 @@ public struct TargetDescription: Hashable, Encodable, Sendable {
2121 case binary
2222 case plugin
2323 case `macro`
24+ case providedLibrary
2425 }
2526
2627 /// Represents a target's dependency on another entity.
@@ -222,6 +223,19 @@ public struct TargetDescription: Hashable, Encodable, Sendable {
222223 if pkgConfig != nil { throw Error . disallowedPropertyInTarget ( targetName: name, propertyName: " pkgConfig " ) }
223224 if providers != nil { throw Error . disallowedPropertyInTarget ( targetName: name, propertyName: " providers " ) }
224225 if pluginCapability != nil { throw Error . disallowedPropertyInTarget ( targetName: name, propertyName: " pluginCapability " ) }
226+ case . providedLibrary:
227+ if path == nil { throw Error . providedLibraryTargetRequiresPath ( targetName: name) }
228+ if url != nil { throw Error . disallowedPropertyInTarget ( targetName: name, propertyName: " url " ) }
229+ if !dependencies. isEmpty { throw Error . disallowedPropertyInTarget ( targetName: name, propertyName: " dependencies " ) }
230+ if !exclude. isEmpty { throw Error . disallowedPropertyInTarget ( targetName: name, propertyName: " exclude " ) }
231+ if sources != nil { throw Error . disallowedPropertyInTarget ( targetName: name, propertyName: " sources " ) }
232+ if !resources. isEmpty { throw Error . disallowedPropertyInTarget ( targetName: name, propertyName: " resources " ) }
233+ if publicHeadersPath != nil { throw Error . disallowedPropertyInTarget ( targetName: name, propertyName: " publicHeadersPath " ) }
234+ if pkgConfig != nil { throw Error . disallowedPropertyInTarget ( targetName: name, propertyName: " pkgConfig " ) }
235+ if providers != nil { throw Error . disallowedPropertyInTarget ( targetName: name, propertyName: " providers " ) }
236+ if pluginCapability != nil { throw Error . disallowedPropertyInTarget ( targetName: name, propertyName: " pluginCapability " ) }
237+ if !settings. isEmpty { throw Error . disallowedPropertyInTarget ( targetName: name, propertyName: " settings " ) }
238+ if pluginUsages != nil { throw Error . disallowedPropertyInTarget ( targetName: name, propertyName: " pluginUsages " ) }
225239 }
226240
227241 self . name = name
@@ -370,13 +384,16 @@ import protocol Foundation.LocalizedError
370384private enum Error : LocalizedError , Equatable {
371385 case binaryTargetRequiresEitherPathOrURL( targetName: String )
372386 case disallowedPropertyInTarget( targetName: String , propertyName: String )
373-
387+ case providedLibraryTargetRequiresPath( targetName: String )
388+
374389 var errorDescription : String ? {
375390 switch self {
376391 case . binaryTargetRequiresEitherPathOrURL( let targetName) :
377392 return " binary target ' \( targetName) ' neither defines neither path nor URL for its artifacts "
378393 case . disallowedPropertyInTarget( let targetName, let propertyName) :
379394 return " target ' \( targetName) ' contains a value for disallowed property ' \( propertyName) ' "
395+ case . providedLibraryTargetRequiresPath( let targetName) :
396+ return " provided library target ' \( targetName) ' does not define a path to the library "
380397 }
381398 }
382399}
0 commit comments