1212
1313import PackageDescription
1414
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+ ]
67+
68+ let swiftSettingsAvailability = availability. map ( \. swiftSetting)
69+
70+ #if SYSTEM_CI
71+ let swiftSettingsCI : [ SwiftSetting ] = [
72+ . unsafeFlags( [ " -require-explicit-availability=error " ] ) ,
1773]
74+ #else
75+ let swiftSettingsCI : [ SwiftSetting ] = [ ]
76+ #endif
1877
19- let swiftSettings : [ SwiftSetting ] = [
78+ let swiftSettings = swiftSettingsAvailability + swiftSettingsCI + [
2079 . define(
2180 " SYSTEM_PACKAGE_DARWIN " ,
2281 . when( platforms: [ . macOS, . macCatalyst, . iOS, . watchOS, . tvOS, . visionOS] ) ) ,
@@ -25,6 +84,22 @@ let swiftSettings: [SwiftSetting] = [
2584 . enableExperimentalFeature( " Lifetimes " ) ,
2685]
2786
87+ let cSettings : [ CSetting ] = [
88+ . define( " _CRT_SECURE_NO_WARNINGS " , . when( platforms: [ . windows] ) ) ,
89+ ]
90+
91+ #if SYSTEM_ABI_STABLE
92+ let platforms : [ SupportedPlatform ] = [
93+ . macOS( " 26 " ) ,
94+ . iOS( " 26 " ) ,
95+ . watchOS( " 26 " ) ,
96+ . tvOS( " 26 " ) ,
97+ . visionOS( " 26 " ) ,
98+ ]
99+ #else
100+ let platforms : [ SupportedPlatform ] ? = nil
101+ #endif
102+
28103#if os(Linux)
29104let filesToExclude = [ " CMakeLists.txt " ]
30105#else
@@ -39,6 +114,7 @@ let testsToExclude = ["IORequestTests.swift", "IORingTests.swift"]
39114
40115let package = Package (
41116 name: " swift-system " ,
117+ platforms: platforms,
42118 products: [
43119 . library( name: " SystemPackage " , targets: [ " SystemPackage " ] ) ,
44120 ] ,
@@ -63,3 +139,4 @@ let package = Package(
63139 cSettings: cSettings,
64140 swiftSettings: swiftSettings) ,
65141 ] )
142+
0 commit comments