From 3f5afdee4b36b768bc5ca032a32e406513971876 Mon Sep 17 00:00:00 2001 From: Jeremy Schonfeld Date: Tue, 23 Jul 2024 11:35:18 -0700 Subject: [PATCH] Update availability release for FoundationPredicateRegex --- CMakeLists.txt | 48 ++++++++++++++++++++++++++++++++++-------------- Package.swift | 3 ++- 2 files changed, 36 insertions(+), 15 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a9568a651..f8573f1d1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -69,20 +69,40 @@ FetchContent_MakeAvailable(SwiftFoundationICU SwiftCollections) list(APPEND CMAKE_MODULE_PATH ${SwiftFoundation_SOURCE_DIR}/cmake/modules) # Availability Macros (only applies to FoundationEssentials and FoundationInternationalization) -set(_SwiftFoundation_availability_macros) -list(APPEND _SwiftFoundation_availability_macros - "SHELL:$<$:-Xfrontend -enable-experimental-feature -Xfrontend \"AvailabilityMacro=FoundationPreview 0.1:macOS 13.3, iOS 16.4, tvOS 16.4, watchOS 9.4\">" - "SHELL:$<$:-Xfrontend -enable-experimental-feature -Xfrontend \"AvailabilityMacro=FoundationPreview 0.2:macOS 13.3, iOS 16.4, tvOS 16.4, watchOS 9.4\">" - "SHELL:$<$:-Xfrontend -enable-experimental-feature -Xfrontend \"AvailabilityMacro=FoundationPreview 0.3:macOS 13.3, iOS 16.4, tvOS 16.4, watchOS 9.4\">" - "SHELL:$<$:-Xfrontend -enable-experimental-feature -Xfrontend \"AvailabilityMacro=FoundationPreview 0.4:macOS 13.3, iOS 16.4, tvOS 16.4, watchOS 9.4\">" - "SHELL:$<$:-Xfrontend -enable-experimental-feature -Xfrontend \"AvailabilityMacro=FoundationPredicate 0.1:macOS 14, iOS 17, tvOS 17, watchOS 10\">" - "SHELL:$<$:-Xfrontend -enable-experimental-feature -Xfrontend \"AvailabilityMacro=FoundationPredicate 0.2:macOS 14, iOS 17, tvOS 17, watchOS 10\">" - "SHELL:$<$:-Xfrontend -enable-experimental-feature -Xfrontend \"AvailabilityMacro=FoundationPredicate 0.3:macOS 14, iOS 17, tvOS 17, watchOS 10\">" - "SHELL:$<$:-Xfrontend -enable-experimental-feature -Xfrontend \"AvailabilityMacro=FoundationPredicate 0.4:macOS 14, iOS 17, tvOS 17, watchOS 10\">" - "SHELL:$<$:-Xfrontend -enable-experimental-feature -Xfrontend \"AvailabilityMacro=FoundationPredicateRegex 0.1:macOS 10000, iOS 10000, tvOS 10000, watchOS 10000\">" - "SHELL:$<$:-Xfrontend -enable-experimental-feature -Xfrontend \"AvailabilityMacro=FoundationPredicateRegex 0.2:macOS 10000, iOS 10000, tvOS 10000, watchOS 10000\">" - "SHELL:$<$:-Xfrontend -enable-experimental-feature -Xfrontend \"AvailabilityMacro=FoundationPredicateRegex 0.3:macOS 10000, iOS 10000, tvOS 10000, watchOS 10000\">" - "SHELL:$<$:-Xfrontend -enable-experimental-feature -Xfrontend \"AvailabilityMacro=FoundationPredicateRegex 0.4:macOS 10000, iOS 10000, tvOS 10000, watchOS 10000\">") +set(_SwiftFoundation_BaseAvailability "macOS 13.3, iOS 16.4, tvOS 16.4, watchOS 9.4") +set(_SwiftFoundation_macOS14Availability "macOS 14, iOS 17, tvOS 17, watchOS 10") +set(_SwiftFoundation_macOS15Availability "macOS 15, iOS 18, tvOS 18, watchOS 11") +set(_SwiftFoundation_FutureAvailability "macOS 10000, iOS 10000, tvOS 10000, watchOS 10000") + +# All versions to define for each availability name +list(APPEND _SwiftFoundation_versions + "0.1" + "0.2" + "0.3" + "0.4") + +# Each availability name to define +list(APPEND _SwiftFoundation_availability_names + "FoundationPreview" + "FoundationPredicate" + "FoundationPredicateRegex") + +# The aligned availability for each name (in the same order) +list(APPEND _SwiftFoundation_availability_releases + ${_SwiftFoundation_BaseAvailability} + ${_SwiftFoundation_macOS14Availability} + ${_SwiftFoundation_macOS15Availability}) + +foreach(version ${_SwiftFoundation_versions}) + foreach(name release IN ZIP_LISTS _SwiftFoundation_availability_names _SwiftFoundation_availability_releases) + if(NOT DEFINED name OR NOT DEFINED release) + message(FATAL_ERROR "_SwiftFoundation_availability_names and _SwiftFoundation_availability_releases are not the same length") + endif() + + list(APPEND _SwiftFoundation_availability_macros + "SHELL:$<$:-Xfrontend -enable-experimental-feature -Xfrontend \"AvailabilityMacro=${name} ${version}=${release}\">") + endforeach() +endforeach() include(GNUInstallDirs) include(SwiftFoundationSwiftSupport) diff --git a/Package.swift b/Package.swift index da086e1c5..70f77537b 100644 --- a/Package.swift +++ b/Package.swift @@ -9,7 +9,7 @@ import CompilerPluginSupport let availabilityTags: [_Availability] = [ _Availability("FoundationPreview"), // Default FoundationPreview availability, _Availability("FoundationPredicate", availability: .macOS14_0), // Predicate relies on pack parameter runtime support - _Availability("FoundationPredicateRegex", availability: .future) // Predicate regexes rely on new stdlib APIs + _Availability("FoundationPredicateRegex", availability: .macOS15_0) // Predicate regexes rely on new stdlib APIs ] let versionNumbers = ["0.1", "0.2", "0.3", "0.4"] @@ -18,6 +18,7 @@ let versionNumbers = ["0.1", "0.2", "0.3", "0.4"] enum _OSAvailability: String { case alwaysAvailable = "macOS 13.3, iOS 16.4, tvOS 16.4, watchOS 9.4" // This should match the package's deployment target case macOS14_0 = "macOS 14, iOS 17, tvOS 17, watchOS 10" + case macOS15_0 = "macOS 15, iOS 18, tvOS 18, watchOS 11" // 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" }