- Notifications
You must be signed in to change notification settings - Fork 162
/
Copy pathPackage.swift
86 lines (78 loc) · 2.71 KB
/
Package.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
// swift-tools-version: 5.8
import PackageDescription
import CompilerPluginSupport
// Availability Macros
letavailabilityTags=[Availability("AsyncAlgorithms")]
letversionNumbers=["1.0"]
// Availability Macro Utilities
enumOSAvailability:String{
// This should match the package's deployment target
case initialIntroduction ="macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0"
case pending ="macOS 9999, iOS 9999, tvOS 9999, watchOS 9999"
// Use 10000 for future availability to avoid compiler magic around
// the 9999 version number but ensure it is greater than 9999
case future ="macOS 10000, iOS 10000, tvOS 10000, watchOS 10000"
}
structAvailability{
letname:String
letosAvailability:OSAvailability
init(_ name:String, availability:OSAvailability=.initialIntroduction){
self.name = name
self.osAvailability = availability
}
}
letavailabilityMacros:[SwiftSetting]= versionNumbers.flatMap{ version in
availabilityTags.map{
.enableExperimentalFeature("AvailabilityMacro=\($0.name)\(version):\($0.osAvailability.rawValue)")
}
}
letpackage=Package(
name:"swift-async-algorithms",
products:[
.library(name:"AsyncAlgorithms", targets:["AsyncAlgorithms"])
],
targets:[
.target(
name:"AsyncAlgorithms",
dependencies:[
.product(name:"OrderedCollections",package:"swift-collections"),
.product(name:"DequeModule",package:"swift-collections"),
],
swiftSettings: availabilityMacros +[
.enableExperimentalFeature("StrictConcurrency=complete")
]
),
.target(
name:"AsyncSequenceValidation",
dependencies:["_CAsyncSequenceValidationSupport","AsyncAlgorithms"],
swiftSettings: availabilityMacros +[
.enableExperimentalFeature("StrictConcurrency=complete")
]
),
.systemLibrary(name:"_CAsyncSequenceValidationSupport"),
.target(
name:"AsyncAlgorithms_XCTest",
dependencies:["AsyncAlgorithms","AsyncSequenceValidation"],
swiftSettings: availabilityMacros +[
.enableExperimentalFeature("StrictConcurrency=complete")
]
),
.testTarget(
name:"AsyncAlgorithmsTests",
dependencies:["AsyncAlgorithms","AsyncSequenceValidation","AsyncAlgorithms_XCTest"],
swiftSettings: availabilityMacros +[
.enableExperimentalFeature("StrictConcurrency=complete")
]
),
]
)
ifContext.environment["SWIFTCI_USE_LOCAL_DEPS"]==nil{
package.dependencies +=[
.package(url:"https://github.com/apple/swift-collections.git", from:"1.1.0"),
.package(url:"https://github.com/apple/swift-docc-plugin", from:"1.0.0"),
]
}else{
package.dependencies +=[
.package(path:"../swift-collections")
]
}