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+ 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 " ] ) ,
1774]
75+ #else
76+ let swiftSettingsCI : [ SwiftSetting ] = [ ]
77+ #endif
1878
19- let swiftSettings : [ SwiftSetting ] = [
79+ let swiftSettings = swiftSettingsAvailability + swiftSettingsCI + [
2080 . define(
2181 " SYSTEM_PACKAGE_DARWIN " ,
2282 . when( platforms: [ . macOS, . macCatalyst, . iOS, . watchOS, . tvOS, . visionOS] ) ) ,
@@ -25,6 +85,22 @@ let swiftSettings: [SwiftSetting] = [
2585 . enableExperimentalFeature( " Lifetimes " ) ,
2686]
2787
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+
28104#if os(Linux)
29105let filesToExclude = [ " CMakeLists.txt " ]
30106#else
@@ -39,6 +115,7 @@ let testsToExclude = ["IORequestTests.swift", "IORingTests.swift"]
39115
40116let package = Package (
41117 name: " swift-system " ,
118+ platforms: platforms,
42119 products: [
43120 . library( name: " SystemPackage " , targets: [ " SystemPackage " ] ) ,
44121 ] ,
@@ -63,3 +140,4 @@ let package = Package(
63140 cSettings: cSettings,
64141 swiftSettings: swiftSettings) ,
65142 ] )
143+
0 commit comments