12
12
13
13
import PackageDescription
14
14
15
- let cSettings : [ CSetting ] = [
16
- . define( " _CRT_SECURE_NO_WARNINGS " , . when( platforms: [ . windows] ) ) ,
15
+ struct Available {
16
+ var name : String
17
+ var version : String
18
+ var osAvailability : String
19
+ var sourceAvailability : String
20
+
21
+ init (
22
+ _ version: String ,
23
+ _ osAvailability: String
24
+ ) {
25
+ self . name = " System "
26
+ self . version = version
27
+ self . osAvailability = osAvailability
28
+ self . sourceAvailability = " macOS 10.10, iOS 8.0, watchOS 2.0, tvOS 9.0, visionOS 1.0 "
29
+ }
30
+
31
+ var swiftSetting : SwiftSetting {
32
+ #if SYSTEM_ABI_STABLE
33
+ // Use availability matching Darwin API.
34
+ let availability = self . osAvailability
35
+ #else
36
+ // Use availability matching SwiftPM default.
37
+ let availability = self . sourceAvailability
38
+ #endif
39
+ return . enableExperimentalFeature(
40
+ " AvailabilityMacro= \( self . name) \( version) : \( availability) " )
41
+ }
42
+ }
43
+
44
+ let availability : [ Available ] = [
45
+ Available ( " 0.0.1 " , " macOS 11.0, iOS 14.0, watchOS 7.0, tvOS 14.0 " ) ,
46
+
47
+ Available ( " 0.0.2 " , " macOS 12.0, iOS 15.0, watchOS 8.0, tvOS 15.0 " ) ,
48
+
49
+ Available ( " 0.0.3 " , " macOS 12.3, iOS 15.4, watchOS 8.5, tvOS 15.4 " ) ,
50
+ Available ( " 1.1.0 " , " macOS 12.3, iOS 15.4, watchOS 8.5, tvOS 15.4 " ) ,
51
+
52
+ Available ( " 1.1.1 " , " macOS 14.4, iOS 17.4, watchOS 10.4, tvOS 17.4 " ) ,
53
+ Available ( " 1.2.0 " , " macOS 14.4, iOS 17.4, watchOS 10.4, tvOS 17.4 " ) ,
54
+
55
+ Available ( " 1.2.1 " , " macOS 14.4, iOS 17.4, watchOS 10.4, tvOS 17.4 " ) ,
56
+ Available ( " 1.3.0 " , " macOS 14.4, iOS 17.4, watchOS 10.4, tvOS 17.4 " ) ,
57
+
58
+ Available ( " 1.3.1 " , " macOS 14.4, iOS 17.4, watchOS 10.4, tvOS 17.4, visionOS 1.0 " ) ,
59
+ Available ( " 1.3.2 " , " macOS 14.4, iOS 17.4, watchOS 10.4, tvOS 17.4, visionOS 1.0 " ) ,
60
+ Available ( " 1.4.0 " , " macOS 14.4, iOS 17.4, watchOS 10.4, tvOS 17.4, visionOS 1.0 " ) ,
61
+
62
+ Available ( " 1.4.1 " , " macOS 9999, iOS 9999, watchOS 9999, tvOS 9999, visionOS 9999 " ) ,
63
+ Available ( " 1.4.2 " , " macOS 9999, iOS 9999, watchOS 9999, tvOS 9999, visionOS 9999 " ) ,
64
+ Available ( " 1.5.0 " , " macOS 9999, iOS 9999, watchOS 9999, tvOS 9999, visionOS 9999 " ) ,
65
+ Available ( " 1.6.0 " , " macOS 9999, iOS 9999, watchOS 9999, tvOS 9999, visionOS 9999 " ) ,
66
+ Available ( " 1.6.1 " , " macOS 9999, iOS 9999, watchOS 9999, tvOS 9999, visionOS 9999 " ) ,
67
+ ]
68
+
69
+ let swiftSettingsAvailability = availability. map ( \. swiftSetting)
70
+
71
+ #if SYSTEM_CI
72
+ let swiftSettingsCI : [ SwiftSetting ] = [
73
+ . unsafeFlags( [ " -require-explicit-availability=error " ] ) ,
17
74
]
75
+ #else
76
+ let swiftSettingsCI : [ SwiftSetting ] = [ ]
77
+ #endif
18
78
19
- let swiftSettings : [ SwiftSetting ] = [
79
+ let swiftSettings = swiftSettingsAvailability + swiftSettingsCI + [
20
80
. define(
21
81
" SYSTEM_PACKAGE_DARWIN " ,
22
82
. when( platforms: [ . macOS, . macCatalyst, . iOS, . watchOS, . tvOS, . visionOS] ) ) ,
@@ -25,6 +85,22 @@ let swiftSettings: [SwiftSetting] = [
25
85
. enableExperimentalFeature( " Lifetimes " ) ,
26
86
]
27
87
88
+ let cSettings : [ CSetting ] = [
89
+ . define( " _CRT_SECURE_NO_WARNINGS " , . when( platforms: [ . windows] ) ) ,
90
+ ]
91
+
92
+ #if SYSTEM_ABI_STABLE
93
+ let platforms : [ SupportedPlatform ] = [
94
+ . macOS( " 26 " ) ,
95
+ . iOS( " 26 " ) ,
96
+ . watchOS( " 26 " ) ,
97
+ . tvOS( " 26 " ) ,
98
+ . visionOS( " 26 " ) ,
99
+ ]
100
+ #else
101
+ let platforms : [ SupportedPlatform ] ? = nil
102
+ #endif
103
+
28
104
#if os(Linux)
29
105
let filesToExclude = [ " CMakeLists.txt " ]
30
106
#else
@@ -39,6 +115,7 @@ let testsToExclude = ["IORequestTests.swift", "IORingTests.swift"]
39
115
40
116
let package = Package (
41
117
name: " swift-system " ,
118
+ platforms: platforms,
42
119
products: [
43
120
. library( name: " SystemPackage " , targets: [ " SystemPackage " ] ) ,
44
121
] ,
@@ -63,3 +140,4 @@ let package = Package(
63
140
cSettings: cSettings,
64
141
swiftSettings: swiftSettings) ,
65
142
] )
143
+
0 commit comments