@@ -37,9 +37,9 @@ public final class Target {
3737 case productItem( name: String , package : String ? )
3838 case byNameItem( name: String )
3939 #else
40- case _targetItem( name: String , condition: BuildSettingCondition ? )
41- case _productItem( name: String , package : String ? , condition: BuildSettingCondition ? )
42- case _byNameItem( name: String , condition: BuildSettingCondition ? )
40+ case _targetItem( name: String , condition: TargetDependencyCondition ? )
41+ case _productItem( name: String , package : String ? , condition: TargetDependencyCondition ? )
42+ case _byNameItem( name: String , condition: TargetDependencyCondition ? )
4343 #endif
4444 }
4545
@@ -656,7 +656,7 @@ extension Target.Dependency {
656656 /// - name: The name of the target.
657657 /// - condition: The condition under which the dependency is exercised.
658658 @available ( _PackageDescription, introduced: 999 )
659- public static func target( name: String , condition: BuildSettingCondition ? = nil ) -> Target . Dependency {
659+ public static func target( name: String , condition: TargetDependencyCondition ? = nil ) -> Target . Dependency {
660660 return . _targetItem( name: name, condition: condition)
661661 }
662662
@@ -670,7 +670,7 @@ extension Target.Dependency {
670670 public static func product(
671671 name: String ,
672672 package : String ,
673- condition: BuildSettingCondition ? = nil
673+ condition: TargetDependencyCondition ? = nil
674674 ) -> Target . Dependency {
675675 return . _productItem( name: name, package : package , condition: condition)
676676 }
@@ -682,7 +682,7 @@ extension Target.Dependency {
682682 /// - name: The name of the dependency, either a target or a product.
683683 /// - condition: The condition under which the dependency is exercised.
684684 @available ( _PackageDescription, introduced: 999 )
685- public static func byName( name: String , condition: BuildSettingCondition ? = nil ) -> Target . Dependency {
685+ public static func byName( name: String , condition: TargetDependencyCondition ? = nil ) -> Target . Dependency {
686686 return . _byNameItem( name: name, condition: condition)
687687 }
688688 #endif
@@ -704,3 +704,25 @@ extension Target.Dependency: ExpressibleByStringLiteral {
704704 #endif
705705 }
706706}
707+
708+ /// A condition that limits the application of a target's dependency.
709+ public struct TargetDependencyCondition : Encodable {
710+
711+ private let platforms : [ Platform ] ?
712+
713+ private init ( platforms: [ Platform ] ? ) {
714+ self . platforms = platforms
715+ }
716+
717+ /// Create a target dependency condition.
718+ ///
719+ /// - Parameters:
720+ /// - platforms: The applicable platforms for this target dependency condition.
721+ public static func when(
722+ platforms: [ Platform ] ? = nil
723+ ) -> TargetDependencyCondition {
724+ // FIXME: This should be an error, not a precondition.
725+ precondition ( !( platforms == nil ) )
726+ return TargetDependencyCondition ( platforms: platforms)
727+ }
728+ }
0 commit comments