From 3687ae444525b19475e56cb39119b3771a203393 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Tue, 3 Sep 2024 15:27:31 +0200 Subject: [PATCH] [DeviceDiscoveryExtension] Implement Xcode 16 beta 6 changes. This is just adding the framework to macOS and Mac Catalyst. --- src/DeviceDiscoveryExtension/Enums.cs | 14 ++--- src/Foundation/NSObject.mac.cs | 1 + src/build/generator-frameworks.g.cs | 2 + src/devicediscoveryextension.cs | 8 +-- src/frameworks.sources | 2 + src/rsp/dotnet/maccatalyst-defines-dotnet.rsp | 1 + src/rsp/dotnet/macos-defines-dotnet.rsp | 1 + src/rsp/macos-defines.rsp | 1 + ...acCatalyst-DeviceDiscoveryExtension.ignore | 10 ++++ .../MacCatalyst-DeviceDiscoveryExtension.todo | 57 ------------------- .../macOS-DeviceDiscoveryExtension.ignore | 10 ++++ .../macOS-DeviceDiscoveryExtension.todo | 57 ------------------- .../macOS-DeviceDiscoveryExtension.todo | 56 ++---------------- tools/common/Frameworks.cs | 6 +- 14 files changed, 48 insertions(+), 178 deletions(-) create mode 100644 tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-DeviceDiscoveryExtension.ignore delete mode 100644 tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-DeviceDiscoveryExtension.todo create mode 100644 tests/xtro-sharpie/api-annotations-dotnet/macOS-DeviceDiscoveryExtension.ignore delete mode 100644 tests/xtro-sharpie/api-annotations-dotnet/macOS-DeviceDiscoveryExtension.todo diff --git a/src/DeviceDiscoveryExtension/Enums.cs b/src/DeviceDiscoveryExtension/Enums.cs index 4f2638d873d7..7df4ea109c46 100644 --- a/src/DeviceDiscoveryExtension/Enums.cs +++ b/src/DeviceDiscoveryExtension/Enums.cs @@ -15,14 +15,14 @@ namespace DeviceDiscoveryExtension { - [NoMac, iOS (16, 0), NoMacCatalyst, NoWatch, NoTV] + [Mac (15, 0), iOS (16, 0), MacCatalyst (18, 0), NoWatch, NoTV] [Native] public enum DDDeviceProtocol : long { Invalid = 0, Dial = 1, } - [NoMac, iOS (16, 0), NoMacCatalyst, NoWatch, NoTV] + [Mac (15, 0), iOS (16, 0), MacCatalyst (18, 0), NoWatch, NoTV] [Native] public enum DDDeviceCategory : long { HiFiSpeaker = 0, @@ -35,7 +35,7 @@ public enum DDDeviceCategory : long { AccessorySetup = 6, } - [NoMac, iOS (16, 0), NoMacCatalyst, NoWatch, NoTV] + [Mac (15, 0), iOS (16, 0), MacCatalyst (18, 0), NoWatch, NoTV] [Native] public enum DDDeviceState : long { Invalid = 0, @@ -45,7 +45,7 @@ public enum DDDeviceState : long { Invalidating = 30, } - [NoMac, iOS (16, 0), NoMacCatalyst, NoWatch, NoTV] + [Mac (15, 0), iOS (16, 0), MacCatalyst (18, 0), NoWatch, NoTV] [Native] public enum DDDeviceMediaPlaybackState : long { NoContent = 0, @@ -53,7 +53,7 @@ public enum DDDeviceMediaPlaybackState : long { Playing = 2, } - [NoMac, iOS (16, 0), NoMacCatalyst, NoWatch, NoTV] + [Mac (15, 0), iOS (16, 0), MacCatalyst (18, 0), NoWatch, NoTV] [ErrorDomain ("DDErrorDomain")] [Native] public enum DDErrorCode : long { @@ -68,7 +68,7 @@ public enum DDErrorCode : long { // Next, // don't bind 'Next', it's not static and we'd have to break compat if it were ever to change } - [NoMac, iOS (16, 0), NoMacCatalyst, NoWatch, NoTV] + [Mac (15, 0), iOS (16, 0), MacCatalyst (18, 0), NoWatch, NoTV] [Native] public enum DDEventType : long { Unknown = 0, @@ -77,7 +77,7 @@ public enum DDEventType : long { DeviceChanged = 42, } - [NoMac, iOS (18, 0), NoMacCatalyst, NoWatch, NoTV] + [Mac (15, 0), iOS (18, 0), MacCatalyst (18, 0), NoWatch, NoTV] [Native] [Flags] public enum DDDeviceSupports : ulong { diff --git a/src/Foundation/NSObject.mac.cs b/src/Foundation/NSObject.mac.cs index a2c5787ab2fe..48bce77a6297 100644 --- a/src/Foundation/NSObject.mac.cs +++ b/src/Foundation/NSObject.mac.cs @@ -112,6 +112,7 @@ public partial class NSObject { static IntPtr sm = Dlfcn.dlopen (Constants.ServiceManagementLibrary, 1); static IntPtr sa = Dlfcn.dlopen (Constants.SafetyKitLibrary, 1); static IntPtr cr = Dlfcn.dlopen (Constants.CryptoTokenKitLibrary, 1); + static IntPtr dd = Dlfcn.dlopen (Constants.DeviceDiscoveryExtensionLibrary, 1); static IntPtr fk = Dlfcn.dlopen (Constants.FSKitLibrary, 1); #if !NET diff --git a/src/build/generator-frameworks.g.cs b/src/build/generator-frameworks.g.cs index 71252cc8c506..e68a369f5fc0 100644 --- a/src/build/generator-frameworks.g.cs +++ b/src/build/generator-frameworks.g.cs @@ -194,6 +194,7 @@ partial class Frameworks { "CryptoTokenKit", "Darwin", "DeviceCheck", + "DeviceDiscoveryExtension", "EventKit", "ExecutionPolicy", "ExtensionKit", @@ -481,6 +482,7 @@ partial class Frameworks { "CoreWlan", "CryptoTokenKit", "DeviceCheck", + "DeviceDiscoveryExtension", "EventKit", "EventKitUI", "ExecutionPolicy", diff --git a/src/devicediscoveryextension.cs b/src/devicediscoveryextension.cs index 2b474d5ef284..8bb2490943f1 100644 --- a/src/devicediscoveryextension.cs +++ b/src/devicediscoveryextension.cs @@ -22,7 +22,7 @@ namespace DeviceDiscoveryExtension { [Static] - [NoMac, iOS (16, 0), NoMacCatalyst, NoWatch, NoTV] + [Mac (15, 0), iOS (16, 0), MacCatalyst (18, 0), NoWatch, NoTV] interface DDDeviceProtocolStrings { [Field ("DDDeviceProtocolStringInvalid")] NSString Invalid { get; } @@ -31,7 +31,7 @@ interface DDDeviceProtocolStrings { NSString Dial { get; } } - [NoMac, iOS (16, 0), NoMacCatalyst, NoWatch, NoTV] + [Mac (15, 0), iOS (16, 0), MacCatalyst (18, 0), NoWatch, NoTV] [BaseType (typeof (NSObject))] [DisableDefaultCtor] interface DDDevice { @@ -98,7 +98,7 @@ interface DDDevice { string Ssid { get; set; } } - [NoMac, iOS (16, 0), NoMacCatalyst, NoWatch, NoTV] + [Mac (15, 0), iOS (16, 0), MacCatalyst (18, 0), NoWatch, NoTV] [BaseType (typeof (NSObject))] [DisableDefaultCtor] interface DDDeviceEvent { @@ -112,7 +112,7 @@ interface DDDeviceEvent { DDEventType EventType { get; } } - [NoMac, iOS (16, 0), NoMacCatalyst, NoWatch, NoTV] + [Mac (15, 0), iOS (16, 0), MacCatalyst (18, 0), NoWatch, NoTV] [BaseType (typeof (NSObject))] interface DDDiscoverySession { [Export ("reportEvent:")] diff --git a/src/frameworks.sources b/src/frameworks.sources index 0183ff55da04..3e83df17f6ac 100644 --- a/src/frameworks.sources +++ b/src/frameworks.sources @@ -2127,6 +2127,7 @@ MACOS_FRAMEWORKS = \ CoreText \ CoreWlan \ Darwin \ + DeviceDiscoveryExtension \ EventKit \ ExecutionPolicy \ ExtensionKit \ @@ -2452,6 +2453,7 @@ MACCATALYST_FRAMEWORKS = \ CoreTelephony \ CoreText \ CoreWlan \ + DeviceDiscoveryExtension \ EventKit \ EventKitUI \ ExecutionPolicy \ diff --git a/src/rsp/dotnet/maccatalyst-defines-dotnet.rsp b/src/rsp/dotnet/maccatalyst-defines-dotnet.rsp index a54cb1a9c837..fafd721310e5 100644 --- a/src/rsp/dotnet/maccatalyst-defines-dotnet.rsp +++ b/src/rsp/dotnet/maccatalyst-defines-dotnet.rsp @@ -46,6 +46,7 @@ -d:HAS_COREWLAN -d:HAS_CRYPTOTOKENKIT -d:HAS_DEVICECHECK +-d:HAS_DEVICEDISCOVERYEXTENSION -d:HAS_EVENTKIT -d:HAS_EVENTKITUI -d:HAS_EXECUTIONPOLICY diff --git a/src/rsp/dotnet/macos-defines-dotnet.rsp b/src/rsp/dotnet/macos-defines-dotnet.rsp index 05c5bf0e4d70..de5a7ab28585 100644 --- a/src/rsp/dotnet/macos-defines-dotnet.rsp +++ b/src/rsp/dotnet/macos-defines-dotnet.rsp @@ -42,6 +42,7 @@ -d:HAS_CRYPTOTOKENKIT -d:HAS_DARWIN -d:HAS_DEVICECHECK +-d:HAS_DEVICEDISCOVERYEXTENSION -d:HAS_EVENTKIT -d:HAS_EXECUTIONPOLICY -d:HAS_EXTENSIONKIT diff --git a/src/rsp/macos-defines.rsp b/src/rsp/macos-defines.rsp index 96104c877266..1dbdf92e966d 100644 --- a/src/rsp/macos-defines.rsp +++ b/src/rsp/macos-defines.rsp @@ -43,6 +43,7 @@ -d:HAS_CRYPTOTOKENKIT -d:HAS_DARWIN -d:HAS_DEVICECHECK +-d:HAS_DEVICEDISCOVERYEXTENSION -d:HAS_EVENTKIT -d:HAS_EXECUTIONPOLICY -d:HAS_EXTENSIONKIT diff --git a/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-DeviceDiscoveryExtension.ignore b/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-DeviceDiscoveryExtension.ignore new file mode 100644 index 000000000000..cc92dff76a84 --- /dev/null +++ b/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-DeviceDiscoveryExtension.ignore @@ -0,0 +1,10 @@ +## These C methods are helpers to cast an enum value to string, but the string value is not used anywhere. Ignored them for now. +!missing-pinvoke! DDDeviceCategoryToString is not bound +!missing-pinvoke! DDDeviceMediaPlaybackStateToString is not bound +!missing-pinvoke! DDDeviceProtocolToString is not bound +!missing-pinvoke! DDDeviceStateToString is not bound +!missing-pinvoke! DDEventTypeToString is not bound + +## This is a non-constant enum value, so we're not binding it so that we don't have to break compat in the future +!missing-enum-value! DDErrorCode native value DDErrorCodeNext = 350007 not bound + diff --git a/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-DeviceDiscoveryExtension.todo b/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-DeviceDiscoveryExtension.todo deleted file mode 100644 index 731e00df64b9..000000000000 --- a/tests/xtro-sharpie/api-annotations-dotnet/MacCatalyst-DeviceDiscoveryExtension.todo +++ /dev/null @@ -1,57 +0,0 @@ -!missing-enum! DDDeviceCategory not bound -!missing-enum! DDDeviceMediaPlaybackState not bound -!missing-enum! DDDeviceProtocol not bound -!missing-enum! DDDeviceState not bound -!missing-enum! DDDeviceSupports not bound -!missing-enum! DDErrorCode not bound -!missing-enum! DDEventType not bound -!missing-field! DDDeviceProtocolStringDIAL not bound -!missing-field! DDDeviceProtocolStringInvalid not bound -!missing-field! DDErrorDomain not bound -!missing-pinvoke! DDDeviceCategoryToString is not bound -!missing-pinvoke! DDDeviceMediaPlaybackStateToString is not bound -!missing-pinvoke! DDDeviceProtocolToString is not bound -!missing-pinvoke! DDDeviceStateToString is not bound -!missing-pinvoke! DDEventTypeToString is not bound -!missing-selector! DDDevice::bluetoothIdentifier not bound -!missing-selector! DDDevice::category not bound -!missing-selector! DDDevice::deviceSupports not bound -!missing-selector! DDDevice::displayImageName not bound -!missing-selector! DDDevice::displayName not bound -!missing-selector! DDDevice::identifier not bound -!missing-selector! DDDevice::initWithDisplayName:category:protocolType:identifier: not bound -!missing-selector! DDDevice::mediaContentSubtitle not bound -!missing-selector! DDDevice::mediaContentTitle not bound -!missing-selector! DDDevice::mediaPlaybackState not bound -!missing-selector! DDDevice::networkEndpoint not bound -!missing-selector! DDDevice::protocol not bound -!missing-selector! DDDevice::protocolType not bound -!missing-selector! DDDevice::setBluetoothIdentifier: not bound -!missing-selector! DDDevice::setCategory: not bound -!missing-selector! DDDevice::setDeviceSupports: not bound -!missing-selector! DDDevice::setDisplayImageName: not bound -!missing-selector! DDDevice::setDisplayName: not bound -!missing-selector! DDDevice::setIdentifier: not bound -!missing-selector! DDDevice::setMediaContentSubtitle: not bound -!missing-selector! DDDevice::setMediaContentTitle: not bound -!missing-selector! DDDevice::setMediaPlaybackState: not bound -!missing-selector! DDDevice::setNetworkEndpoint: not bound -!missing-selector! DDDevice::setProtocol: not bound -!missing-selector! DDDevice::setProtocolType: not bound -!missing-selector! DDDevice::setSSID: not bound -!missing-selector! DDDevice::setState: not bound -!missing-selector! DDDevice::setSupportsGrouping: not bound -!missing-selector! DDDevice::setTxtRecordData: not bound -!missing-selector! DDDevice::setUrl: not bound -!missing-selector! DDDevice::SSID not bound -!missing-selector! DDDevice::state not bound -!missing-selector! DDDevice::supportsGrouping not bound -!missing-selector! DDDevice::txtRecordData not bound -!missing-selector! DDDevice::url not bound -!missing-selector! DDDeviceEvent::device not bound -!missing-selector! DDDeviceEvent::eventType not bound -!missing-selector! DDDeviceEvent::initWithEventType:device: not bound -!missing-selector! DDDiscoverySession::reportEvent: not bound -!missing-type! DDDevice not bound -!missing-type! DDDeviceEvent not bound -!missing-type! DDDiscoverySession not bound diff --git a/tests/xtro-sharpie/api-annotations-dotnet/macOS-DeviceDiscoveryExtension.ignore b/tests/xtro-sharpie/api-annotations-dotnet/macOS-DeviceDiscoveryExtension.ignore new file mode 100644 index 000000000000..cc92dff76a84 --- /dev/null +++ b/tests/xtro-sharpie/api-annotations-dotnet/macOS-DeviceDiscoveryExtension.ignore @@ -0,0 +1,10 @@ +## These C methods are helpers to cast an enum value to string, but the string value is not used anywhere. Ignored them for now. +!missing-pinvoke! DDDeviceCategoryToString is not bound +!missing-pinvoke! DDDeviceMediaPlaybackStateToString is not bound +!missing-pinvoke! DDDeviceProtocolToString is not bound +!missing-pinvoke! DDDeviceStateToString is not bound +!missing-pinvoke! DDEventTypeToString is not bound + +## This is a non-constant enum value, so we're not binding it so that we don't have to break compat in the future +!missing-enum-value! DDErrorCode native value DDErrorCodeNext = 350007 not bound + diff --git a/tests/xtro-sharpie/api-annotations-dotnet/macOS-DeviceDiscoveryExtension.todo b/tests/xtro-sharpie/api-annotations-dotnet/macOS-DeviceDiscoveryExtension.todo deleted file mode 100644 index 731e00df64b9..000000000000 --- a/tests/xtro-sharpie/api-annotations-dotnet/macOS-DeviceDiscoveryExtension.todo +++ /dev/null @@ -1,57 +0,0 @@ -!missing-enum! DDDeviceCategory not bound -!missing-enum! DDDeviceMediaPlaybackState not bound -!missing-enum! DDDeviceProtocol not bound -!missing-enum! DDDeviceState not bound -!missing-enum! DDDeviceSupports not bound -!missing-enum! DDErrorCode not bound -!missing-enum! DDEventType not bound -!missing-field! DDDeviceProtocolStringDIAL not bound -!missing-field! DDDeviceProtocolStringInvalid not bound -!missing-field! DDErrorDomain not bound -!missing-pinvoke! DDDeviceCategoryToString is not bound -!missing-pinvoke! DDDeviceMediaPlaybackStateToString is not bound -!missing-pinvoke! DDDeviceProtocolToString is not bound -!missing-pinvoke! DDDeviceStateToString is not bound -!missing-pinvoke! DDEventTypeToString is not bound -!missing-selector! DDDevice::bluetoothIdentifier not bound -!missing-selector! DDDevice::category not bound -!missing-selector! DDDevice::deviceSupports not bound -!missing-selector! DDDevice::displayImageName not bound -!missing-selector! DDDevice::displayName not bound -!missing-selector! DDDevice::identifier not bound -!missing-selector! DDDevice::initWithDisplayName:category:protocolType:identifier: not bound -!missing-selector! DDDevice::mediaContentSubtitle not bound -!missing-selector! DDDevice::mediaContentTitle not bound -!missing-selector! DDDevice::mediaPlaybackState not bound -!missing-selector! DDDevice::networkEndpoint not bound -!missing-selector! DDDevice::protocol not bound -!missing-selector! DDDevice::protocolType not bound -!missing-selector! DDDevice::setBluetoothIdentifier: not bound -!missing-selector! DDDevice::setCategory: not bound -!missing-selector! DDDevice::setDeviceSupports: not bound -!missing-selector! DDDevice::setDisplayImageName: not bound -!missing-selector! DDDevice::setDisplayName: not bound -!missing-selector! DDDevice::setIdentifier: not bound -!missing-selector! DDDevice::setMediaContentSubtitle: not bound -!missing-selector! DDDevice::setMediaContentTitle: not bound -!missing-selector! DDDevice::setMediaPlaybackState: not bound -!missing-selector! DDDevice::setNetworkEndpoint: not bound -!missing-selector! DDDevice::setProtocol: not bound -!missing-selector! DDDevice::setProtocolType: not bound -!missing-selector! DDDevice::setSSID: not bound -!missing-selector! DDDevice::setState: not bound -!missing-selector! DDDevice::setSupportsGrouping: not bound -!missing-selector! DDDevice::setTxtRecordData: not bound -!missing-selector! DDDevice::setUrl: not bound -!missing-selector! DDDevice::SSID not bound -!missing-selector! DDDevice::state not bound -!missing-selector! DDDevice::supportsGrouping not bound -!missing-selector! DDDevice::txtRecordData not bound -!missing-selector! DDDevice::url not bound -!missing-selector! DDDeviceEvent::device not bound -!missing-selector! DDDeviceEvent::eventType not bound -!missing-selector! DDDeviceEvent::initWithEventType:device: not bound -!missing-selector! DDDiscoverySession::reportEvent: not bound -!missing-type! DDDevice not bound -!missing-type! DDDeviceEvent not bound -!missing-type! DDDiscoverySession not bound diff --git a/tests/xtro-sharpie/macOS-DeviceDiscoveryExtension.todo b/tests/xtro-sharpie/macOS-DeviceDiscoveryExtension.todo index 731e00df64b9..6387ff1f6381 100644 --- a/tests/xtro-sharpie/macOS-DeviceDiscoveryExtension.todo +++ b/tests/xtro-sharpie/macOS-DeviceDiscoveryExtension.todo @@ -1,57 +1,9 @@ -!missing-enum! DDDeviceCategory not bound -!missing-enum! DDDeviceMediaPlaybackState not bound -!missing-enum! DDDeviceProtocol not bound -!missing-enum! DDDeviceState not bound -!missing-enum! DDDeviceSupports not bound -!missing-enum! DDErrorCode not bound -!missing-enum! DDEventType not bound -!missing-field! DDDeviceProtocolStringDIAL not bound -!missing-field! DDDeviceProtocolStringInvalid not bound -!missing-field! DDErrorDomain not bound +## These C methods are helpers to cast an enum value to string, but the string value is not used anywhere. Ignored them for now. !missing-pinvoke! DDDeviceCategoryToString is not bound !missing-pinvoke! DDDeviceMediaPlaybackStateToString is not bound !missing-pinvoke! DDDeviceProtocolToString is not bound !missing-pinvoke! DDDeviceStateToString is not bound !missing-pinvoke! DDEventTypeToString is not bound -!missing-selector! DDDevice::bluetoothIdentifier not bound -!missing-selector! DDDevice::category not bound -!missing-selector! DDDevice::deviceSupports not bound -!missing-selector! DDDevice::displayImageName not bound -!missing-selector! DDDevice::displayName not bound -!missing-selector! DDDevice::identifier not bound -!missing-selector! DDDevice::initWithDisplayName:category:protocolType:identifier: not bound -!missing-selector! DDDevice::mediaContentSubtitle not bound -!missing-selector! DDDevice::mediaContentTitle not bound -!missing-selector! DDDevice::mediaPlaybackState not bound -!missing-selector! DDDevice::networkEndpoint not bound -!missing-selector! DDDevice::protocol not bound -!missing-selector! DDDevice::protocolType not bound -!missing-selector! DDDevice::setBluetoothIdentifier: not bound -!missing-selector! DDDevice::setCategory: not bound -!missing-selector! DDDevice::setDeviceSupports: not bound -!missing-selector! DDDevice::setDisplayImageName: not bound -!missing-selector! DDDevice::setDisplayName: not bound -!missing-selector! DDDevice::setIdentifier: not bound -!missing-selector! DDDevice::setMediaContentSubtitle: not bound -!missing-selector! DDDevice::setMediaContentTitle: not bound -!missing-selector! DDDevice::setMediaPlaybackState: not bound -!missing-selector! DDDevice::setNetworkEndpoint: not bound -!missing-selector! DDDevice::setProtocol: not bound -!missing-selector! DDDevice::setProtocolType: not bound -!missing-selector! DDDevice::setSSID: not bound -!missing-selector! DDDevice::setState: not bound -!missing-selector! DDDevice::setSupportsGrouping: not bound -!missing-selector! DDDevice::setTxtRecordData: not bound -!missing-selector! DDDevice::setUrl: not bound -!missing-selector! DDDevice::SSID not bound -!missing-selector! DDDevice::state not bound -!missing-selector! DDDevice::supportsGrouping not bound -!missing-selector! DDDevice::txtRecordData not bound -!missing-selector! DDDevice::url not bound -!missing-selector! DDDeviceEvent::device not bound -!missing-selector! DDDeviceEvent::eventType not bound -!missing-selector! DDDeviceEvent::initWithEventType:device: not bound -!missing-selector! DDDiscoverySession::reportEvent: not bound -!missing-type! DDDevice not bound -!missing-type! DDDeviceEvent not bound -!missing-type! DDDiscoverySession not bound + +## This is a non-constant enum value, so we're not binding it so that we don't have to break compat in the future +!missing-enum-value! DDErrorCode native value DDErrorCodeNext = 350007 not bound diff --git a/tools/common/Frameworks.cs b/tools/common/Frameworks.cs index 93ab177ba9cf..51919e703118 100644 --- a/tools/common/Frameworks.cs +++ b/tools/common/Frameworks.cs @@ -291,6 +291,7 @@ public static Frameworks MacFrameworks { { "Symbols", "Symbols", 14, 0 }, { "SensitiveContentAnalysis", "SensitiveContentAnalysis", 14, 0 }, + { "DeviceDiscoveryExtension", "DeviceDiscoveryExtension", 15, 0}, { "FSKit", "FSKit", 15, 0 }, }; } @@ -680,6 +681,7 @@ public static Frameworks GetMacCatalystFrameworks () var v14_0 = new Version (14, 0); var v14_2 = new Version (14, 2); var v16_1 = new Version (16, 1); + var v18_0 = new Version (18, 0); foreach (var f in catalyst_frameworks.Values) { switch (f.Name) { // These frameworks were added to Catalyst after they were added to iOS, so we have to adjust the Versions fields @@ -698,8 +700,10 @@ public static Frameworks GetMacCatalystFrameworks () case "ThreadNetwork": f.Version = v16_1; break; - // These frameworks are not available on Mac Catalyst case "DeviceDiscoveryExtension": + f.Version = v18_0; + break; + // These frameworks are not available on Mac Catalyst case "OpenGLES": case "NewsstandKit": case "MediaSetup":