From bf847323a0fed2353ebbf4c181932202f959398c Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Tue, 15 Dec 2020 18:44:05 +0100 Subject: [PATCH] Replace manually maintained code about frameworks with generated code. (#10218) * [src] Generate the string constants for each framework from our list of frameworks. This makes it less error prone to add new frameworks (one less place to add them), and easier to add new platforms (only one place to make sure the list of frameworks is correct). This also revelead a few issues in our list of frameworks (missing frameworks, frameworks that have been moved, etc.), which have been fixed. * [mmp] Generate the library path -> namespace map for the linker to optimize away dlopen statements. * Fix indentation to be just as broken as the surrounding indentation. * Remove unused Cecil reference. * Fix c&p oversight. * Adjust more Mac Catalyst API. * CFNetwork is its own top-level framework. --- src/Constants.iOS.cs.in | 139 +---------------- src/Constants.mac.cs.in | 140 +----------------- src/Constants.maccatalyst.cs.in | 135 +---------------- src/Constants.tvos.cs.in | 79 ---------- src/Constants.watch.cs.in | 50 +------ src/Foundation/NSObject.mac.cs | 2 - src/Makefile | 16 ++ src/ObjCRuntime/Dlfcn.cs | 2 +- src/generate-frameworks-constants/Program.cs | 56 +++++++ .../generate-frameworks-constants.csproj | 45 ++++++ .../generate-frameworks-constants.sln | 25 ++++ tools/common/Frameworks.cs | 66 +++++++-- .../linker/MonoMac.Tuner/MonoMacNamespaces.cs | 86 ++--------- 13 files changed, 220 insertions(+), 621 deletions(-) create mode 100644 src/generate-frameworks-constants/Program.cs create mode 100644 src/generate-frameworks-constants/generate-frameworks-constants.csproj create mode 100644 src/generate-frameworks-constants/generate-frameworks-constants.sln diff --git a/src/Constants.iOS.cs.in b/src/Constants.iOS.cs.in index ecb89c8be1da..614fc7a4b6c7 100644 --- a/src/Constants.iOS.cs.in +++ b/src/Constants.iOS.cs.in @@ -8,141 +8,16 @@ namespace ObjCRuntime { internal const string Revision = "@REVISION@"; public const string SdkVersion = "@IOS_SDK_VERSION@"; - public const string AddressBookLibrary = "/System/Library/Frameworks/AddressBook.framework/AddressBook"; - public const string AddressBookUILibrary = "/System/Library/Frameworks/AddressBookUI.framework/AddressBookUI"; - public const string AudioToolboxLibrary = "/System/Library/Frameworks/AudioToolbox.framework/AudioToolbox"; - public const string CoreGraphicsLibrary = "/System/Library/Frameworks/CoreGraphics.framework/CoreGraphics"; - public const string CoreFoundationLibrary = "/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation"; - public const string FoundationLibrary = "/System/Library/Frameworks/Foundation.framework/Foundation"; - public const string CFNetworkLibrary = "/System/Library/Frameworks/CFNetwork.framework/CFNetwork"; - public const string OpenGLESLibrary = "/System/Library/Frameworks/OpenGLES.framework/OpenGLES"; - public const string QuartzLibrary = "/System/Library/Frameworks/QuartzCore.framework/QuartzCore"; - public const string CoreAnimationLibrary = "/System/Library/Frameworks/QuartzCore.framework/QuartzCore"; - public const string UIKitLibrary = "/System/Library/Frameworks/UIKit.framework/UIKit"; - public const string SystemConfigurationLibrary = "/System/Library/Frameworks/SystemConfiguration.framework/SystemConfiguration"; - public const string MediaPlayerLibrary = "/System/Library/Frameworks/MediaPlayer.framework/MediaPlayer"; - public const string AVFoundationLibrary = "/System/Library/Frameworks/AVFoundation.framework/AVFoundation"; - public const string CoreLocationLibrary = "/System/Library/Frameworks/CoreLocation.framework/CoreLocation"; - public const string SecurityLibrary = "/System/Library/Frameworks/Security.framework/Security"; - public const string CoreTextLibrary = "/System/Library/Frameworks/CoreText.framework/CoreText"; - public const string iAdLibrary = "/System/Library/Frameworks/iAd.framework/iAd"; - public const string CoreTelephonyLibrary = "/System/Library/Frameworks/CoreTelephony.framework/CoreTelephony"; - public const string CoreMediaLibrary = "/System/Library/Frameworks/CoreMedia.framework/CoreMedia"; - public const string MapKitLibrary = "/System/Library/Frameworks/MapKit.framework/MapKit"; - public const string GameKitLibrary = "/System/Library/Frameworks/GameKit.framework/GameKit"; - public const string EventKitLibrary = "/System/Library/Frameworks/EventKit.framework/EventKit"; - public const string EventKitUILibrary = "/System/Library/Frameworks/EventKitUI.framework/EventKitUI"; - public const string ImageIOLibrary = "/System/Library/Frameworks/ImageIO.framework/ImageIO"; - public const string AssetsLibraryLibrary = "/System/Library/Frameworks/AssetsLibrary.framework/AssetsLibrary"; - public const string CoreVideoLibrary = "/System/Library/Frameworks/CoreVideo.framework/CoreVideo"; - public const string AccountsLibrary = "/System/Library/Frameworks/Accounts.framework/Accounts"; - public const string CoreDataLibrary = "/System/Library/Frameworks/CoreData.framework/CoreData"; - public const string CoreImageLibrary = "/System/Library/Frameworks/CoreImage.framework/CoreImage"; - public const string GLKitLibrary = "/System/Library/Frameworks/GLKit.framework/GLKit"; - public const string MessageUILibrary = "/System/Library/Frameworks/MessageUI.framework/MessageUI"; - public const string CoreBluetoothLibrary = "/System/Library/Frameworks/CoreBluetooth.framework/CoreBluetooth"; - public const string CoreMidiLibrary = "/System/Library/Frameworks/CoreMIDI.framework/CoreMIDI"; - public const string QuickLookLibrary = "/System/Library/Frameworks/QuickLook.framework/QuickLook"; - public const string NewsstandKitLibrary = "/System/Library/Frameworks/NewsstandKit.framework/NewsstandKit"; - public const string ExternalAccessoryLibrary = "/System/Library/Frameworks/ExternalAccessory.framework/ExternalAccessory"; - public const string MobileCoreServicesLibrary = "/System/Library/Frameworks/MobileCoreServices.framework/MobileCoreServices"; - public const string CoreServicesLibrary = "/System/Library/Frameworks/MobileCoreServices.framework/MobileCoreServices"; - public const string StoreKitLibrary = "/System/Library/Frameworks/StoreKit.framework/StoreKit"; - public const string AudioUnitLibrary = "/System/Library/Frameworks/AudioToolbox.framework/AudioToolbox"; public const string AccelerateImageLibrary = "/System/Library/Frameworks/Accelerate.framework/Frameworks/vImage.framework/vImage"; - // iOS 6 - public const string AdSupportLibrary = "/System/Library/Frameworks/AdSupport.framework/AdSupport"; - public const string MediaToolboxLibrary = "/System/Library/Frameworks/MediaToolbox.framework/MediaToolbox"; - public const string PassKitLibrary = "/System/Library/Frameworks/PassKit.framework/PassKit"; - public const string SocialLibrary = "/System/Library/Frameworks/Social.framework/Social"; - // iOS 7 - public const string JavaScriptCoreLibrary = "/System/Library/Frameworks/JavaScriptCore.framework/JavaScriptCore"; - public const string GameControllerLibrary = "/System/Library/Frameworks/GameController.framework/GameController"; - public const string MultipeerConnectivityLibrary = "/System/Library/Frameworks/MultipeerConnectivity.framework/MultipeerConnectivity"; - public const string SpriteKitLibrary = "/System/Library/Frameworks/SpriteKit.framework/SpriteKit"; - public const string SafariServicesLibrary = "/System/Library/Frameworks/SafariServices.framework/SafariServices"; - public const string MediaAccessibilityLibrary = "/System/Library/Frameworks/MediaAccessibility.framework/MediaAccessibility"; - // iOS 8 - public const string HealthKitLibrary = "/System/Library/Frameworks/HealthKit.framework/HealthKit"; - public const string HomeKitLibrary = "/System/Library/Frameworks/HomeKit.framework/HomeKit"; - public const string PushKitLibrary = "/System/Library/Frameworks/PushKit.framework/PushKit"; - public const string LocalAuthenticationLibrary = "/System/Library/Frameworks/LocalAuthentication.framework/LocalAuthentication"; - public const string PhotosLibrary = "/System/Library/Frameworks/Photos.framework/Photos"; - public const string PhotosUILibrary = "/System/Library/Frameworks/PhotosUI.framework/PhotosUI"; - public const string MetalLibrary = "/System/Library/Frameworks/Metal.framework/Metal"; - public const string CloudKitLibrary = "/System/Library/Frameworks/CloudKit.framework/CloudKit"; - public const string SceneKitLibrary = "/System/Library/Frameworks/SceneKit.framework/SceneKit"; - public const string AVKitLibrary = "/System/Library/Frameworks/AVKit.framework/AVKit"; - public const string CoreAudioKitLibrary = "/System/Library/Frameworks/CoreAudioKit.framework/CoreAudioKit"; - public const string CoreMotionLibrary = "/System/Library/Frameworks/CoreMotion.framework/CoreMotion"; - public const string VideoToolboxLibrary = "/System/Library/Frameworks/VideoToolbox.framework/VideoToolbox"; - public const string NetworkLibrary = "/System/Library/Frameworks/Network.framework/Network"; - public const string NetworkExtensionLibrary = "/System/Library/Frameworks/NetworkExtension.framework/NetworkExtension"; - public const string WebKitLibrary = "/System/Library/Frameworks/WebKit.framework/WebKit"; + public const string QuartzLibrary = "/System/Library/Frameworks/QuartzCore.framework/QuartzCore"; + // iOS 8.2 +#if !XAMCORE_4_0 + // Apple removed the WatchKit framework from iOS public const string WatchKitLibrary = "/System/Library/Frameworks/WatchKit.framework/WatchKit"; - // iOS 9.0 - public const string ReplayKitLibrary = "/System/Library/Frameworks/ReplayKit.framework/ReplayKit"; - public const string ContactsLibrary = "/System/Library/Frameworks/Contacts.framework/Contacts"; - public const string ContactsUILibrary = "/System/Library/Frameworks/ContactsUI.framework/ContactsUI"; - public const string CoreSpotlightLibrary = "/System/Library/Frameworks/CoreSpotlight.framework/CoreSpotlight"; - public const string WatchConnectivityLibrary = "/System/Library/Frameworks/WatchConnectivity.framework/WatchConnectivity"; - public const string MetalPerformanceShadersLibrary = "/System/Library/Frameworks/MetalPerformanceShaders.framework/MetalPerformanceShaders"; - public const string MetalKitLibrary = "/System/Library/Frameworks/MetalKit.framework/MetalKit"; - public const string ModelIOLibrary = "/System/Library/Frameworks/ModelIO.framework/ModelIO"; - public const string GameplayKitLibrary = "/System/Library/Frameworks/GameplayKit.framework/GameplayKit"; +#endif + + // iOS 9 public const string libcompressionLibrary = "/usr/lib/libcompression.dylib"; - // iOS 9.3 - public const string HealthKitUILibrary = "/System/Library/Frameworks/HealthKitUI.framework/HealthKitUI"; - // iOS 10.0 - public const string CallKitLibrary = "/System/Library/Frameworks/CallKit.framework/CallKit"; - public const string MessagesLibrary = "/System/Library/Frameworks/Messages.framework/Messages"; - public const string SpeechLibrary = "/System/Library/Frameworks/Speech.framework/Speech"; - public const string VideoSubscriberAccountLibrary = "/System/Library/Frameworks/VideoSubscriberAccount.framework/VideoSubscriberAccount"; - public const string UserNotificationsLibrary = "/System/Library/Frameworks/UserNotifications.framework/UserNotifications"; - public const string UserNotificationsUILibrary = "/System/Library/Frameworks/UserNotificationsUI.framework/UserNotificationsUI"; - public const string IntentsLibrary = "/System/Library/Frameworks/Intents.framework/Intents"; - public const string IntentsUILibrary = "/System/Library/Frameworks/IntentsUI.framework/IntentsUI"; - // iOS 11.0 - public const string ARKitLibrary = "/System/Library/Frameworks/ARKit.framework/ARKit"; - public const string CoreNFCLibrary = "/System/Library/Frameworks/CoreNFC.framework/CoreNFC"; - public const string DeviceCheckLibrary = "/System/Library/Frameworks/DeviceCheck.framework/DeviceCheck"; - public const string IdentityLookupLibrary = "/System/Library/Frameworks/IdentityLookup.framework/IdentityLookup"; - public const string CoreMLLibrary = "/System/Library/Frameworks/CoreML.framework/CoreML"; - public const string VisionLibrary = "/System/Library/Frameworks/Vision.framework/Vision"; - public const string FileProviderLibrary = "/System/Library/Frameworks/FileProvider.framework/FileProvider"; - public const string FileProviderUILibrary = "/System/Library/Frameworks/FileProviderUI.framework/FileProviderUI"; - public const string IOSurfaceLibrary = "/System/Library/Frameworks/IOSurface.framework/IOSurface"; - public const string PdfKitLibrary = "/System/Library/Frameworks/PDFKit.framework/PDFKit"; - // iOS 11.3 - public const string BusinessChatLibrary = "/System/Library/Frameworks/BusinessChat.framework/BusinessChat"; - // iOS 11.4 - public const string ClassKitLibrary = "/System/Library/Frameworks/ClassKit.framework/ClassKit"; - // iOS 12.0 - public const string AuthenticationServicesLibrary = "/System/Library/Frameworks/AuthenticationServices.framework/AuthenticationServices"; - public const string CarPlayLibrary = "/System/Library/Frameworks/CarPlay.framework/CarPlay"; - public const string IdentityLookupUILibrary = "/System/Library/Frameworks/IdentityLookupUI.framework/IdentityLookupUI"; - public const string NaturalLanguageLibrary = "/System/Library/Frameworks/NaturalLanguage.framework/NaturalLanguage"; - // iOS 13.0 - public const string BackgroundTasksLibrary = "/System/Library/Frameworks/BackgroundTasks.framework/BackgroundTasks"; - public const string CoreHapticsLibrary = "/System/Library/Frameworks/CoreHaptics.framework/CoreHaptics"; - public const string LinkPresentationLibrary = "/System/Library/Frameworks/LinkPresentation.framework/LinkPresentation"; - public const string MetricKitLibrary = "/System/Library/Frameworks/MetricKit.framework/MetricKit"; - public const string PencilKitLibrary = "/System/Library/Frameworks/PencilKit.framework/PencilKit"; - public const string QuickLookThumbnailingLibrary = "/System/Library/Frameworks/QuickLookThumbnailing.framework/QuickLookThumbnailing"; - public const string VisionKitLibrary = "/System/Library/Frameworks/VisionKit.framework/VisionKit"; - public const string SoundAnalysisLibrary = "/System/Library/Frameworks/SoundAnalysis.framework/SoundAnalysis"; - // iOS 13.4 - public const string AutomaticAssessmentConfigurationLibrary = "/System/Library/Frameworks/AutomaticAssessmentConfiguration.framework/AutomaticAssessmentConfiguration"; - // iOS 14.0 - public const string AccessibilityLibrary = "/System/Library/Frameworks/Accessibility.framework/Accessibility"; - public const string AppClipLibrary = "/System/Library/Frameworks/AppClip.framework/AppClip"; - public const string AppTrackingTransparencyLibrary = "/System/Library/Frameworks/AppTrackingTransparency.framework/AppTrackingTransparency"; - public const string MediaSetupLibrary = "/System/Library/Frameworks/MediaSetup.framework/MediaSetup"; - public const string MLComputeLibrary = "/System/Library/Frameworks/MLCompute.framework/MLCompute"; - public const string NearbyInteractionLibrary = "/System/Library/Frameworks/NearbyInteraction.framework/NearbyInteraction"; - public const string ScreenTimeLibrary = "/System/Library/Frameworks/ScreenTime.framework/ScreenTime"; - public const string SensorKitLibrary = "/System/Library/Frameworks/SensorKit.framework/SensorKit"; - public const string UniformTypeIdentifiersLibrary = "/System/Library/Frameworks/UniformTypeIdentifiers.framework/UniformTypeIdentifiers"; } } diff --git a/src/Constants.mac.cs.in b/src/Constants.mac.cs.in index baa8641b88fa..4b6de7c36d1a 100644 --- a/src/Constants.mac.cs.in +++ b/src/Constants.mac.cs.in @@ -33,147 +33,9 @@ namespace ObjCRuntime { public const string SdkVersion = "@OSX_SDK_VERSION@"; internal const string MinMonoVersion = "@MIN_XM_MONO_VERSION@"; - public const string AddressBookLibrary = "/System/Library/Frameworks/AddressBook.framework/AddressBook"; - public const string AppKitLibrary = "/System/Library/Frameworks/AppKit.framework/AppKit"; - public const string CoreFoundationLibrary = "/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation"; - public const string CoreGraphicsLibrary = "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/CoreGraphics"; - public const string CoreTextLibrary = "/System/Library/Frameworks/ApplicationServices.framework/Frameworks/CoreText.framework/CoreText"; - public const string FoundationLibrary = "/System/Library/Frameworks/Foundation.framework/Foundation"; - public const string QuartzLibrary = "/System/Library/Frameworks/QuartzCore.framework/QuartzCore"; - public const string AudioToolboxLibrary = "/System/Library/Frameworks/AudioToolbox.framework/AudioToolbox"; - public const string WebKitLibrary = "/System/Library/Frameworks/WebKit.framework/WebKit"; - public const string AudioUnitLibrary = "/System/Library/Frameworks/AudioUnit.framework/AudioUnit"; - public const string CoreAudioLibrary = "/System/Library/Frameworks/CoreAudio.framework/CoreAudio"; - public const string CoreAnimationLibrary = "/System/Library/Frameworks/QuartzCore.framework/QuartzCore"; - public const string ImageIOLibrary = "/System/Library/Frameworks/ApplicationServices.framework/Frameworks/ImageIO.framework/ImageIO"; - public const string QTKitLibrary = "/System/Library/Frameworks/QTKit.framework/QTKit"; - public const string CoreLocationLibrary = "/System/Library/Frameworks/CoreLocation.framework/CoreLocation"; - public const string SecurityLibrary = "/System/Library/Frameworks/Security.framework/Security"; - public const string CoreVideoLibrary = "/System/Library/Frameworks/CoreVideo.framework/CoreVideo"; - public const string QuartzComposerLibrary = "/System/Library/Frameworks/Quartz.framework/Frameworks/QuartzComposer.framework/QuartzComposer"; - public const string CoreWlanLibrary = "/System/Library/Frameworks/CoreWLAN.framework/CoreWLAN"; - public const string PdfKitLibrary = "/System/Library/Frameworks/Quartz.framework/Frameworks/PDFKit.framework/PDFKit"; - public const string ImageKitLibrary = "/System/Library/Frameworks/Quartz.framework/Frameworks/ImageKit.framework/ImageKit"; - public const string OpenGLLibrary = "/System/Library/Frameworks/OpenGL.framework/OpenGL"; - public const string OpenALLibrary = "/System/Library/Frameworks/OpenAL.framework/OpenAL"; - public const string CoreMediaLibrary = "/System/Library/Frameworks/CoreMedia.framework/CoreMedia"; - public const string ScriptingBridgeLibrary = "/System/Library/Frameworks/ScriptingBridge.framework/ScriptingBridge"; - public const string CoreDataLibrary = "/System/Library/Frameworks/CoreData.framework/CoreData"; - public const string CoreImageLibrary = "/System/Library/Frameworks/QuartzCore.framework/Versions/A/Frameworks/CoreImage.framework/CoreImage"; - public const string CFNetworkLibrary = "/System/Library/Frameworks/CoreServices.framework/Frameworks/CFNetwork.framework/CFNetwork"; - public const string CoreMidiLibrary = "/System/Library/Frameworks/CoreMIDI.framework/CoreMIDI"; - public const string QuickLookLibrary = "/System/Library/Frameworks/QuickLook.framework/QuickLook"; - public const string AVFoundationLibrary = "/System/Library/Frameworks/AVFoundation.framework/AVFoundation"; public const string AccelerateImageLibrary = "/System/Library/Frameworks/Accelerate.framework/Frameworks/vImage.framework/vImage"; - - public const string CoreBluetoothLibrary = "/System/Library/Frameworks/IOBluetooth.framework/Versions/A/Frameworks/CoreBluetooth.framework/CoreBluetooth"; - public const string GameKitLibrary = "/System/Library/Frameworks/GameKit.framework/GameKit"; - public const string SceneKitLibrary = "/System/Library/Frameworks/SceneKit.framework/SceneKit"; - public const string StoreKitLibrary = "/System/Library/Frameworks/StoreKit.framework/StoreKit"; - public const string CoreServicesLibrary = "/System/Library/Frameworks/CoreServices.framework/CoreServices"; - public const string SystemConfigurationLibrary = "/System/Library/Frameworks/SystemConfiguration.framework/SystemConfiguration"; - public const string InputMethodKitLibrary = "/System/Library/Frameworks/InputMethodKit.framework/InputMethodKit"; public const string ApplicationServicesCoreGraphicsLibrary = "/System/Library/Frameworks/ApplicationServices.framework/Frameworks/CoreGraphics.framework/CoreGraphics"; - public const string JavaScriptCoreLibrary = "/System/Library/Frameworks/JavaScriptCore.framework/JavaScriptCore"; - public const string ImageCaptureCoreLibrary = "/System/Library/Frameworks/ImageCaptureCore.framework/ImageCaptureCore"; - - public const string AccountsLibrary = "/System/Library/Frameworks/Accounts.framework/Accounts"; - public const string EventKitLibrary = "/System/Library/Frameworks/EventKit.framework/EventKit"; - public const string GLKitLibrary = "/System/Library/Frameworks/GLKit.framework/GLKit"; - public const string SpriteKitLibrary = "/System/Library/Frameworks/SpriteKit.framework/SpriteKit"; - - public const string SocialLibrary = "/System/Library/Frameworks/Social.framework/Social"; - public const string LocalAuthenticationLibrary = "/System/Library/Frameworks/LocalAuthentication.framework/LocalAuthentication"; - - public const string CloudKitLibrary = "/System/Library/Frameworks/CloudKit.framework/CloudKit"; - public const string MapKitLibrary = "/System/Library/Frameworks/MapKit.framework/MapKit"; - public const string VideoToolboxLibrary = "/System/Library/Frameworks/VideoToolbox.framework/VideoToolbox"; - - public const string GameControllerLibrary = "/System/Library/Frameworks/GameController.framework/GameController"; - public const string MediaAccessibilityLibrary = "/System/Library/Frameworks/MediaAccessibility.framework/MediaAccessibility"; - - public const string IOBluetoothLibrary = "/System/Library/Frameworks/IOBluetooth.framework/IOBluetooth"; - public const string IOBluetoothUILibrary = "/System/Library/Frameworks/IOBluetoothUI.framework/IOBluetoothUI"; - public const string CryptoTokenKitLibrary = "/System/Library/Frameworks/CryptoTokenKit.framework/CryptoTokenKit"; - public const string FinderSyncLibrary = "/System/Library/Frameworks/FinderSync.framework/FinderSync"; - public const string HypervisorLibrary = "/System/Library/Frameworks/Hypervisor.framework/Hypervisor"; - public const string MultipeerConnectivityLibrary = "/System/Library/Frameworks/MultipeerConnectivity.framework/MultipeerConnectivity"; - public const string NotificationCenterLibrary = "/System/Library/Frameworks/NotificationCenter.framework/NotificationCenter"; - public const string AVKitLibrary = "/System/Library/Frameworks/AVKit.framework/AVKit"; - public const string QuickLookUILibrary = "/System/Library/Frameworks/Quartz.framework/Frameworks/QuickLookUI.framework/QuickLookUI"; - public const string SearchKitLibrary = "/System/Library/Frameworks/CoreServices.framework/Frameworks/SearchKit.framework/SearchKit"; - public const string ContactsLibrary = "/System/Library/Frameworks/Contacts.framework/Contacts"; - public const string ContactsUILibrary = "/System/Library/Frameworks/ContactsUI.framework/ContactsUI"; - - public const string MetalLibrary = "/System/Library/Frameworks/Metal.framework/Metal"; - public const string MetalKitLibrary = "/System/Library/Frameworks/MetalKit.framework/MetalKit"; - public const string ModelIOLibrary = "/System/Library/Frameworks/ModelIO.framework/ModelIO"; - public const string GameplayKitLibrary = "/System/Library/Frameworks/GameplayKit.framework/GameplayKit"; - public const string NetworkLibrary = "/System/Library/Frameworks/Network.framework/Network"; - public const string NetworkExtensionLibrary = "/System/Library/Frameworks/NetworkExtension.framework/NetworkExtension"; - public const string CoreAudioKitLibrary = "/System/Library/Frameworks/CoreAudioKit.framework/CoreAudioKit"; - public const string MediaToolboxLibrary = "/System/Library/Frameworks/MediaToolbox.framework/MediaToolbox"; - public const string MediaLibraryLibrary = "/System/Library/Frameworks/MediaLibrary.framework/MediaLibrary"; - - public const string SafariServicesLibrary = "/System/Library/Frameworks/SafariServices.framework/SafariServices"; - public const string PrintCoreLibrary = "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/PrintCore"; + public const string QuartzLibrary = "/System/Library/Frameworks/QuartzCore.framework/QuartzCore"; public const string libcompressionLibrary = "/usr/lib/libcompression.dylib"; - - // macOS 10.12 - public const string PhotosLibrary = "/System/Library/Frameworks/Photos.framework/Photos"; - public const string IntentsLibrary = "/System/Library/Frameworks/Intents.framework/Intents"; - public const string MediaPlayerLibrary = "/System/Library/Frameworks/MediaPlayer.framework/MediaPlayer"; - - // macOS 10.13 - public const string CoreMLLibrary = "/System/Library/Frameworks/CoreML.framework/CoreML"; - public const string CoreSpotlightLibrary = "/System/Library/Frameworks/CoreSpotlight.framework/CoreSpotlight"; - public const string VisionLibrary = "/System/Library/Frameworks/Vision.framework/Vision"; - public const string IOSurfaceLibrary = "/System/Library/Frameworks/IOSurface.framework/IOSurface"; - public const string PhotosUILibrary = "/System/Library/Frameworks/PhotosUI.framework/PhotosUI"; - public const string ExternalAccessoryLibrary = "/System/Library/Frameworks/ExternalAccessory.framework/ExternalAccessory"; - public const string MetalPerformanceShadersLibrary = "/System/Library/Frameworks/MetalPerformanceShaders.framework/MetalPerformanceShaders"; - // macOS 10.13.4 - public const string BusinessChatLibrary = "/System/Library/Frameworks/BusinessChat.framework/BusinessChat"; - - // macOS 10.14 - public const string AdSupportLibrary = "/System/Library/Frameworks/AdSupport.framework/AdSupport"; - public const string NaturalLanguageLibrary = "/System/Library/Frameworks/NaturalLanguage.framework/NaturalLanguage"; - public const string VideoSubscriberAccountLibrary = "/System/Library/Frameworks/VideoSubscriberAccount.framework/VideoSubscriberAccount"; - public const string UserNotificationsLibrary = "/System/Library/Frameworks/UserNotifications.framework/UserNotifications"; - public const string iTunesLibraryLibrary = "/System/Library/Frameworks/iTunesLibrary.framework/iTunesLibrary"; - - // macOS 10.15 - public const string AuthenticationServicesLibrary = "/System/Library/Frameworks/AuthenticationServices.framework/AuthenticationServices"; - public const string CoreMotionLibrary = "/System/Library/Frameworks/CoreMotion.framework/CoreMotion"; - public const string DeviceCheckLibrary = "/System/Library/Frameworks/DeviceCheck.framework/DeviceCheck"; - public const string ExecutionPolicyLibrary = "/System/Library/Frameworks/ExecutionPolicy.framework/ExecutionPolicy"; - public const string FileProviderLibrary = "/System/Library/Frameworks/FileProvider.framework/FileProvider"; - public const string FileProviderUILibrary = "/System/Library/Frameworks/FileProviderUI.framework/FileProviderUI"; - public const string PushKitLibrary = "/System/Library/Frameworks/PushKit.framework/PushKit"; - public const string QuickLookThumbnailingLibrary = "/System/Library/Frameworks/QuickLookThumbnailing.framework/QuickLookThumbnailing"; - public const string SoundAnalysisLibrary = "/System/Library/Frameworks/SoundAnalysis.framework/SoundAnalysis"; - public const string PencilKitLibrary = "/System/Library/Frameworks/PencilKit.framework/PencilKit"; - public const string SpeechLibrary = "/System/Library/Frameworks/Speech.framework/Speech"; - public const string LinkPresentationLibrary = "/System/Library/Frameworks/LinkPresentation.framework/LinkPresentation"; - // not clear if the api is available, issue: https://github.com/xamarin/maccore/issues/1951 - //public const string CoreHapticsLibrary = "/System/Library/Frameworks/CoreHaptics.framework/CoreHaptics"; - - // macOS 10.15.4 - public const string AutomaticAssessmentConfigurationLibrary = "/System/Library/Frameworks/AutomaticAssessmentConfiguration.framework/AutomaticAssessmentConfiguration"; - - // macOS 10.16/11.0 - public const string AccessibilityLibrary = "/System/Library/Frameworks/Accessibility.framework/Accessibility"; - public const string AppTrackingTransparencyLibrary = "/System/Library/Frameworks/AppTrackingTransparency.framework/AppTrackingTransparency"; - public const string CallKitLibrary = "/System/Library/Frameworks/CallKitLibrary.framework/CallKitLibrary"; - public const string ClassKitLibrary = "/System/Library/Frameworks/ClassKit.framework/ClassKit"; - public const string PassKitLibrary = "/System/Library/Frameworks/PassKit.framework/PassKit"; - public const string MLComputeLibrary = "/System/Library/Frameworks/MLCompute.framework/MLCompute"; - public const string NearbyInteractionLibrary = "/System/Library/Frameworks/NearbyInteraction.framework/NearbyInteraction"; - public const string OSLogLibrary = "/System/Library/Frameworks/OSLog.framework/OSLog"; - public const string ReplayKitLibrary = "/System/Library/Frameworks/ReplayKit.framework/ReplayKit"; - public const string ScreenTimeLibrary = "/System/Library/Frameworks/ScreenTime.framework/ScreenTime"; - public const string UniformTypeIdentifiersLibrary = "/System/Library/Frameworks/UniformTypeIdentifiers.framework/UniformTypeIdentifiers"; - public const string UserNotificationsUILibrary = "/System/Library/Frameworks/UserNotificationsUI.framework/UserNotificationsUI"; - } } diff --git a/src/Constants.maccatalyst.cs.in b/src/Constants.maccatalyst.cs.in index 00e321efc3ba..ec67dd848933 100644 --- a/src/Constants.maccatalyst.cs.in +++ b/src/Constants.maccatalyst.cs.in @@ -4,141 +4,10 @@ namespace ObjCRuntime { internal const string Revision = "@REVISION@"; public const string SdkVersion = "@IOS_SDK_VERSION@"; - public const string AddressBookLibrary = "/System/Library/Frameworks/AddressBook.framework/AddressBook"; - public const string AddressBookUILibrary = "/System/Library/Frameworks/AddressBookUI.framework/AddressBookUI"; - public const string AudioToolboxLibrary = "/System/Library/Frameworks/AudioToolbox.framework/AudioToolbox"; - public const string CoreGraphicsLibrary = "/System/Library/Frameworks/CoreGraphics.framework/CoreGraphics"; - public const string CoreFoundationLibrary = "/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation"; - public const string FoundationLibrary = "/System/Library/Frameworks/Foundation.framework/Foundation"; - public const string CFNetworkLibrary = "/System/Library/Frameworks/CFNetwork.framework/CFNetwork"; - public const string OpenGLESLibrary = "/System/Library/Frameworks/OpenGLES.framework/OpenGLES"; - public const string QuartzLibrary = "/System/Library/Frameworks/QuartzCore.framework/QuartzCore"; - public const string CoreAnimationLibrary = "/System/Library/Frameworks/QuartzCore.framework/QuartzCore"; - public const string UIKitLibrary = "/System/Library/Frameworks/UIKit.framework/UIKit"; - public const string SystemConfigurationLibrary = "/System/Library/Frameworks/SystemConfiguration.framework/SystemConfiguration"; - public const string MediaPlayerLibrary = "/System/Library/Frameworks/MediaPlayer.framework/MediaPlayer"; - public const string AVFoundationLibrary = "/System/Library/Frameworks/AVFoundation.framework/AVFoundation"; - public const string CoreLocationLibrary = "/System/Library/Frameworks/CoreLocation.framework/CoreLocation"; - public const string SecurityLibrary = "/System/Library/Frameworks/Security.framework/Security"; - public const string CoreTextLibrary = "/System/Library/Frameworks/CoreText.framework/CoreText"; - public const string iAdLibrary = "/System/Library/Frameworks/iAd.framework/iAd"; - public const string CoreTelephonyLibrary = "/System/Library/Frameworks/CoreTelephony.framework/CoreTelephony"; - public const string CoreMediaLibrary = "/System/Library/Frameworks/CoreMedia.framework/CoreMedia"; - public const string MapKitLibrary = "/System/Library/Frameworks/MapKit.framework/MapKit"; - public const string GameKitLibrary = "/System/Library/Frameworks/GameKit.framework/GameKit"; - public const string EventKitLibrary = "/System/Library/Frameworks/EventKit.framework/EventKit"; - public const string EventKitUILibrary = "/System/Library/Frameworks/EventKitUI.framework/EventKitUI"; - public const string ImageIOLibrary = "/System/Library/Frameworks/ImageIO.framework/ImageIO"; - public const string AssetsLibraryLibrary = "/System/Library/Frameworks/AssetsLibrary.framework/AssetsLibrary"; - public const string CoreVideoLibrary = "/System/Library/Frameworks/CoreVideo.framework/CoreVideo"; - public const string AccountsLibrary = "/System/Library/Frameworks/Accounts.framework/Accounts"; - public const string CoreDataLibrary = "/System/Library/Frameworks/CoreData.framework/CoreData"; - public const string CoreImageLibrary = "/System/Library/Frameworks/CoreImage.framework/CoreImage"; - public const string GLKitLibrary = "/System/Library/Frameworks/GLKit.framework/GLKit"; - public const string MessageUILibrary = "/System/Library/Frameworks/MessageUI.framework/MessageUI"; - public const string CoreBluetoothLibrary = "/System/Library/Frameworks/CoreBluetooth.framework/CoreBluetooth"; - public const string CoreMidiLibrary = "/System/Library/Frameworks/CoreMIDI.framework/CoreMIDI"; - public const string QuickLookLibrary = "/System/Library/Frameworks/QuickLook.framework/QuickLook"; - public const string NewsstandKitLibrary = "/System/Library/Frameworks/NewsstandKit.framework/NewsstandKit"; - public const string ExternalAccessoryLibrary = "/System/Library/Frameworks/ExternalAccessory.framework/ExternalAccessory"; - public const string MobileCoreServicesLibrary = "/System/Library/Frameworks/MobileCoreServices.framework/MobileCoreServices"; - public const string CoreServicesLibrary = "/System/Library/Frameworks/MobileCoreServices.framework/MobileCoreServices"; - public const string StoreKitLibrary = "/System/Library/Frameworks/StoreKit.framework/StoreKit"; - public const string AudioUnitLibrary = "/System/Library/Frameworks/AudioToolbox.framework/AudioToolbox"; public const string AccelerateImageLibrary = "/System/Library/Frameworks/Accelerate.framework/Frameworks/vImage.framework/vImage"; - // iOS 6 - public const string AdSupportLibrary = "/System/Library/Frameworks/AdSupport.framework/AdSupport"; - public const string MediaToolboxLibrary = "/System/Library/Frameworks/MediaToolbox.framework/MediaToolbox"; - public const string PassKitLibrary = "/System/Library/Frameworks/PassKit.framework/PassKit"; - public const string SocialLibrary = "/System/Library/Frameworks/Social.framework/Social"; - // iOS 7 - public const string JavaScriptCoreLibrary = "/System/Library/Frameworks/JavaScriptCore.framework/JavaScriptCore"; - public const string GameControllerLibrary = "/System/Library/Frameworks/GameController.framework/GameController"; - public const string MultipeerConnectivityLibrary = "/System/Library/Frameworks/MultipeerConnectivity.framework/MultipeerConnectivity"; - public const string SpriteKitLibrary = "/System/Library/Frameworks/SpriteKit.framework/SpriteKit"; - public const string SafariServicesLibrary = "/System/Library/Frameworks/SafariServices.framework/SafariServices"; - public const string MediaAccessibilityLibrary = "/System/Library/Frameworks/MediaAccessibility.framework/MediaAccessibility"; - // iOS 8 - public const string HealthKitLibrary = "/System/Library/Frameworks/HealthKit.framework/HealthKit"; - public const string HomeKitLibrary = "/System/Library/Frameworks/HomeKit.framework/HomeKit"; - public const string PushKitLibrary = "/System/Library/Frameworks/PushKit.framework/PushKit"; - public const string LocalAuthenticationLibrary = "/System/Library/Frameworks/LocalAuthentication.framework/LocalAuthentication"; - public const string PhotosLibrary = "/System/Library/Frameworks/Photos.framework/Photos"; - public const string PhotosUILibrary = "/System/Library/Frameworks/PhotosUI.framework/PhotosUI"; - public const string MetalLibrary = "/System/Library/Frameworks/Metal.framework/Metal"; - public const string CloudKitLibrary = "/System/Library/Frameworks/CloudKit.framework/CloudKit"; - public const string SceneKitLibrary = "/System/Library/Frameworks/SceneKit.framework/SceneKit"; - public const string AVKitLibrary = "/System/Library/Frameworks/AVKit.framework/AVKit"; - public const string CoreAudioKitLibrary = "/System/Library/Frameworks/CoreAudioKit.framework/CoreAudioKit"; - public const string CoreMotionLibrary = "/System/Library/Frameworks/CoreMotion.framework/CoreMotion"; - public const string VideoToolboxLibrary = "/System/Library/Frameworks/VideoToolbox.framework/VideoToolbox"; - public const string NetworkLibrary = "/System/Library/Frameworks/Network.framework/Network"; - public const string NetworkExtensionLibrary = "/System/Library/Frameworks/NetworkExtension.framework/NetworkExtension"; - public const string WebKitLibrary = "/System/Library/Frameworks/WebKit.framework/WebKit"; - // iOS 8.2 - public const string WatchKitLibrary = "/System/Library/Frameworks/WatchKit.framework/WatchKit"; + public const string QuartzLibrary = "/System/Library/Frameworks/QuartzCore.framework/QuartzCore"; + // iOS 9.0 - public const string ReplayKitLibrary = "/System/Library/Frameworks/ReplayKit.framework/ReplayKit"; - public const string ContactsLibrary = "/System/Library/Frameworks/Contacts.framework/Contacts"; - public const string ContactsUILibrary = "/System/Library/Frameworks/ContactsUI.framework/ContactsUI"; - public const string CoreSpotlightLibrary = "/System/Library/Frameworks/CoreSpotlight.framework/CoreSpotlight"; - public const string WatchConnectivityLibrary = "/System/Library/Frameworks/WatchConnectivity.framework/WatchConnectivity"; - public const string MetalPerformanceShadersLibrary = "/System/Library/Frameworks/MetalPerformanceShaders.framework/MetalPerformanceShaders"; - public const string MetalKitLibrary = "/System/Library/Frameworks/MetalKit.framework/MetalKit"; - public const string ModelIOLibrary = "/System/Library/Frameworks/ModelIO.framework/ModelIO"; - public const string GameplayKitLibrary = "/System/Library/Frameworks/GameplayKit.framework/GameplayKit"; public const string libcompressionLibrary = "/usr/lib/libcompression.dylib"; - // iOS 9.3 - public const string HealthKitUILibrary = "/System/Library/Frameworks/HealthKitUI.framework/HealthKitUI"; - // iOS 10.0 - public const string CallKitLibrary = "/System/Library/Frameworks/CallKit.framework/CallKit"; - public const string MessagesLibrary = "/System/Library/Frameworks/Messages.framework/Messages"; - public const string SpeechLibrary = "/System/Library/Frameworks/Speech.framework/Speech"; - public const string VideoSubscriberAccountLibrary = "/System/Library/Frameworks/VideoSubscriberAccount.framework/VideoSubscriberAccount"; - public const string UserNotificationsLibrary = "/System/Library/Frameworks/UserNotifications.framework/UserNotifications"; - public const string UserNotificationsUILibrary = "/System/Library/Frameworks/UserNotificationsUI.framework/UserNotificationsUI"; - public const string IntentsLibrary = "/System/Library/Frameworks/Intents.framework/Intents"; - public const string IntentsUILibrary = "/System/Library/Frameworks/IntentsUI.framework/IntentsUI"; - // iOS 11.0 - public const string ARKitLibrary = "/System/Library/Frameworks/ARKit.framework/ARKit"; - public const string CoreNFCLibrary = "/System/Library/Frameworks/CoreNFC.framework/CoreNFC"; - public const string DeviceCheckLibrary = "/System/Library/Frameworks/DeviceCheck.framework/DeviceCheck"; - public const string IdentityLookupLibrary = "/System/Library/Frameworks/IdentityLookup.framework/IdentityLookup"; - public const string CoreMLLibrary = "/System/Library/Frameworks/CoreML.framework/CoreML"; - public const string VisionLibrary = "/System/Library/Frameworks/Vision.framework/Vision"; - public const string FileProviderLibrary = "/System/Library/Frameworks/FileProvider.framework/FileProvider"; - public const string FileProviderUILibrary = "/System/Library/Frameworks/FileProviderUI.framework/FileProviderUI"; - public const string IOSurfaceLibrary = "/System/Library/Frameworks/IOSurface.framework/IOSurface"; - public const string PdfKitLibrary = "/System/Library/Frameworks/PDFKit.framework/PDFKit"; - // iOS 11.3 - public const string BusinessChatLibrary = "/System/Library/Frameworks/BusinessChat.framework/BusinessChat"; - // iOS 11.4 - public const string ClassKitLibrary = "/System/Library/Frameworks/ClassKit.framework/ClassKit"; - // iOS 12.0 - public const string AuthenticationServicesLibrary = "/System/Library/Frameworks/AuthenticationServices.framework/AuthenticationServices"; - public const string CarPlayLibrary = "/System/Library/Frameworks/CarPlay.framework/CarPlay"; - public const string IdentityLookupUILibrary = "/System/Library/Frameworks/IdentityLookupUI.framework/IdentityLookupUI"; - public const string NaturalLanguageLibrary = "/System/Library/Frameworks/NaturalLanguage.framework/NaturalLanguage"; - // iOS 13.0 - public const string BackgroundTasksLibrary = "/System/Library/Frameworks/BackgroundTasks.framework/BackgroundTasks"; - public const string CoreHapticsLibrary = "/System/Library/Frameworks/CoreHaptics.framework/CoreHaptics"; - public const string LinkPresentationLibrary = "/System/Library/Frameworks/LinkPresentation.framework/LinkPresentation"; - public const string MetricKitLibrary = "/System/Library/Frameworks/MetricKit.framework/MetricKit"; - public const string PencilKitLibrary = "/System/Library/Frameworks/PencilKit.framework/PencilKit"; - public const string QuickLookThumbnailingLibrary = "/System/Library/Frameworks/QuickLookThumbnailing.framework/QuickLookThumbnailing"; - public const string VisionKitLibrary = "/System/Library/Frameworks/VisionKit.framework/VisionKit"; - public const string SoundAnalysisLibrary = "/System/Library/Frameworks/SoundAnalysis.framework/SoundAnalysis"; - // iOS 13.4 - public const string AutomaticAssessmentConfigurationLibrary = "/System/Library/Frameworks/AutomaticAssessmentConfiguration.framework/AutomaticAssessmentConfiguration"; - // iOS 14.0 - public const string AccessibilityLibrary = "/System/Library/Frameworks/Accessibility.framework/Accessibility"; - public const string AppClipLibrary = "/System/Library/Frameworks/AppClip.framework/AppClip"; - public const string AppTrackingTransparencyLibrary = "/System/Library/Frameworks/AppTrackingTransparency.framework/AppTrackingTransparency"; - public const string MediaSetupLibrary = "/System/Library/Frameworks/MediaSetup.framework/MediaSetup"; - public const string MLComputeLibrary = "/System/Library/Frameworks/MLCompute.framework/MLCompute"; - public const string NearbyInteractionLibrary = "/System/Library/Frameworks/NearbyInteraction.framework/NearbyInteraction"; - public const string ScreenTimeLibrary = "/System/Library/Frameworks/ScreenTime.framework/ScreenTime"; - public const string SensorKitLibrary = "/System/Library/Frameworks/SensorKit.framework/SensorKit"; - public const string UniformTypeIdentifiersLibrary = "/System/Library/Frameworks/UniformTypeIdentifiers.framework/UniformTypeIdentifiers"; } } diff --git a/src/Constants.tvos.cs.in b/src/Constants.tvos.cs.in index 336ed1247994..d79e078415e8 100644 --- a/src/Constants.tvos.cs.in +++ b/src/Constants.tvos.cs.in @@ -5,90 +5,11 @@ namespace ObjCRuntime { public const string SdkVersion = "@TVOS_SDK_VERSION@"; // TVOS 9.0 - internal const string CoreServicesLibrary = "/System/Library/Frameworks/MobileCoreServices.framework/MobileCoreServices"; public const string AccelerateImageLibrary = "/System/Library/Frameworks/Accelerate.framework/Frameworks/vImage.framework/vImage"; - public const string AudioToolboxLibrary = "/System/Library/Frameworks/AudioToolbox.framework/AudioToolbox"; - public const string AudioUnitLibrary = "/System/Library/Frameworks/AudioToolbox.framework/AudioToolbox"; - public const string AVFoundationLibrary = "/System/Library/Frameworks/AVFoundation.framework/AVFoundation"; - public const string AVKitLibrary = "/System/Library/Frameworks/AVKit.framework/AVKit"; - public const string CFNetworkLibrary = "/System/Library/Frameworks/CFNetwork.framework/CFNetwork"; - public const string CloudKitLibrary = "/System/Library/Frameworks/CloudKit.framework/CloudKit"; - public const string CoreAnimationLibrary = "/System/Library/Frameworks/QuartzCore.framework/QuartzCore"; - public const string CoreBluetoothLibrary = "/System/Library/Frameworks/CoreBluetooth.framework/CoreBluetooth"; - public const string CoreDataLibrary = "/System/Library/Frameworks/CoreData.framework/CoreData"; - public const string CoreFoundationLibrary = "/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation"; - public const string CoreGraphicsLibrary = "/System/Library/Frameworks/CoreGraphics.framework/CoreGraphics"; - public const string CoreImageLibrary = "/System/Library/Frameworks/CoreImage.framework/CoreImage"; - public const string CoreLocationLibrary = "/System/Library/Frameworks/CoreLocation.framework/CoreLocation"; - public const string CoreMediaLibrary = "/System/Library/Frameworks/CoreMedia.framework/CoreMedia"; - public const string CoreSpotlightLibrary = "/System/Library/Frameworks/CoreSpotlight.framework/CoreSpotlight"; - public const string CoreTextLibrary = "/System/Library/Frameworks/CoreText.framework/CoreText"; - public const string CoreVideoLibrary = "/System/Library/Frameworks/CoreVideo.framework/CoreVideo"; - public const string FoundationLibrary = "/System/Library/Frameworks/Foundation.framework/Foundation"; - public const string GameControllerLibrary = "/System/Library/Frameworks/GameController.framework/GameController"; - public const string GameKitLibrary = "/System/Library/Frameworks/GameKit.framework/GameKit"; - public const string GameplayKitLibrary = "/System/Library/Frameworks/GameplayKit.framework/GameplayKit"; - public const string GLKitLibrary = "/System/Library/Frameworks/GLKit.framework/GLKit"; - public const string HomeKitLibrary = "/System/Library/Frameworks/HomeKit.framework/HomeKit"; - public const string ImageIOLibrary = "/System/Library/Frameworks/ImageIO.framework/ImageIO"; - public const string JavaScriptCoreLibrary = "/System/Library/Frameworks/JavaScriptCore.framework/JavaScriptCore"; - public const string MediaAccessibilityLibrary = "/System/Library/Frameworks/MediaAccessibility.framework/MediaAccessibility"; - public const string MediaPlayerLibrary = "/System/Library/Frameworks/MediaPlayer.framework/MediaPlayer"; - public const string MediaToolboxLibrary = "/System/Library/Frameworks/MediaToolbox.framework/MediaToolbox"; - public const string MetalKitLibrary = "/System/Library/Frameworks/MetalKit.framework/MetalKit"; - public const string MetalLibrary = "/System/Library/Frameworks/Metal.framework/Metal"; - public const string MetalPerformanceShadersLibrary = "/System/Library/Frameworks/MetalPerformanceShaders.framework/MetalPerformanceShaders"; - public const string MobileCoreServicesLibrary = "/System/Library/Frameworks/MobileCoreServices.framework/MobileCoreServices"; - public const string ModelIOLibrary = "/System/Library/Frameworks/ModelIO.framework/ModelIO"; - public const string NetworkLibrary = "/System/Library/Frameworks/Network.framework/Network"; - public const string OpenGLESLibrary = "/System/Library/Frameworks/OpenGLES.framework/OpenGLES"; #if !XAMCORE_4_0 public const string PassKitLibrary = "/System/Library/Frameworks/PassKit.framework/PassKit"; #endif public const string QuartzLibrary = "/System/Library/Frameworks/QuartzCore.framework/QuartzCore"; - public const string SceneKitLibrary = "/System/Library/Frameworks/SceneKit.framework/SceneKit"; - public const string SecurityLibrary = "/System/Library/Frameworks/Security.framework/Security"; - public const string SpriteKitLibrary = "/System/Library/Frameworks/SpriteKit.framework/SpriteKit"; - public const string StoreKitLibrary = "/System/Library/Frameworks/StoreKit.framework/StoreKit"; - public const string SystemConfigurationLibrary = "/System/Library/Frameworks/SystemConfiguration.framework/SystemConfiguration"; - public const string TVMLKitLibrary = "/System/Library/Frameworks/TVMLKit.framework/TVMLKit"; - public const string TVServicesLibrary = "/System/Library/Frameworks/TVServices.framework/TVServices"; - public const string UIKitLibrary = "/System/Library/Frameworks/UIKit.framework/UIKit"; public const string libcompressionLibrary = "/usr/lib/libcompression.dylib"; - - // TVOS 9.2 - public const string MapKitLibrary = "/System/Library/Frameworks/MapKit.framework/MapKit"; - - // TVOS 10.0 - public const string ExternalAccessoryLibrary = "/System/Library/Frameworks/ExternalAccessory.framework/ExternalAccessory"; - public const string MultipeerConnectivityLibrary = "/System/Library/Frameworks/MultipeerConnectivity.framework/MultipeerConnectivity"; - public const string PhotosLibrary = "/System/Library/Frameworks/Photos.framework/Photos"; - public const string ReplayKitLibrary = "/System/Library/Frameworks/ReplayKit.framework/ReplayKit"; - public const string UserNotificationsLibrary = "/System/Library/Frameworks/UserNotifications.framework/UserNotifications"; - public const string VideoSubscriberAccountLibrary = "/System/Library/Frameworks/VideoSubscriberAccount.framework/VideoSubscriberAccount"; - - // tvOS 10.2 - public const string VideoToolboxLibrary = "/System/Library/Frameworks/VideoToolbox.framework/VideoToolbox"; - // tvOS 11.0 - public const string DeviceCheckLibrary = "/System/Library/Frameworks/DeviceCheck.framework/DeviceCheck"; - public const string CoreMLLibrary = "/System/Library/Frameworks/CoreML.framework/CoreML"; - public const string VisionLibrary = "/System/Library/Frameworks/Vision.framework/Vision"; - public const string IOSurfaceLibrary = "/System/Library/Frameworks/IOSurface.framework/IOSurface"; - - // tvOS 12.0 - public const string NaturalLanguageLibrary = "/System/Library/Frameworks/NaturalLanguage.framework/NaturalLanguage"; - // tvOS 13.0 - public const string AuthenticationServicesLibrary = "/System/Library/Frameworks/AuthenticationServices.framework/AuthenticationServices"; - public const string SoundAnalysisLibrary = "/System/Library/Frameworks/SoundAnalysis.framework/SoundAnalysis"; - public const string BackgroundTasksLibrary = "/System/Library/Frameworks/BackgroundTasks.framework/BackgroundTasks"; - - // tvOS 14.0 - public const string AccessibilityLibrary = "/System/Library/Frameworks/Accessibility.framework/Accessibility"; - public const string AppTrackingTransparencyLibrary = "/System/Library/Frameworks/AppTrackingTransparency.framework/AppTrackingTransparency"; - public const string CoreHapticsLibrary = "/System/Library/Frameworks/CoreHaptics.framework/CoreHaptics"; - public const string LinkPresentationLibrary = "/System/Library/Frameworks/LinkPresentation.framework/LinkPresentation"; - public const string MLComputeLibrary = "/System/Library/Frameworks/MLCompute.framework/MLCompute"; - public const string UniformTypeIdentifiersLibrary = "/System/Library/Frameworks/UniformTypeIdentifiers.framework/UniformTypeIdentifiers"; - public const string IntentsLibrary = "/System/Library/Frameworks/Intents.framework/Intents"; } } diff --git a/src/Constants.watch.cs.in b/src/Constants.watch.cs.in index eb3184ade171..adbff778d22b 100644 --- a/src/Constants.watch.cs.in +++ b/src/Constants.watch.cs.in @@ -6,63 +6,15 @@ namespace ObjCRuntime { // WatchOS 2.0 public const string CFNetworkLibrary = "/System/Library/Frameworks/CFNetwork.framework/CFNetwork"; - public const string ClockKitLibrary = "/System/Library/Frameworks/ClockKit.framework/ClockKit"; - public const string ContactsLibrary = "/System/Library/Frameworks/Contacts.framework/Contacts"; - public const string CoreDataLibrary = "/System/Library/Frameworks/CoreData.framework/CoreData"; - public const string CoreFoundationLibrary = "/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation"; - public const string CoreGraphicsLibrary = "/System/Library/Frameworks/CoreGraphics.framework/CoreGraphics"; - public const string CoreLocationLibrary = "/System/Library/Frameworks/CoreLocation.framework/CoreLocation"; - public const string CoreMotionLibrary = "/System/Library/Frameworks/CoreMotion.framework/CoreMotion"; internal const string CoreServicesLibrary = "/System/Library/Frameworks/MobileCoreServices.framework/MobileCoreServices"; - public const string CoreTextLibrary = "/System/Library/Frameworks/CoreText.framework/CoreText"; - public const string EventKitLibrary = "/System/Library/Frameworks/EventKit.framework/EventKit"; - public const string FoundationLibrary = "/System/Library/Frameworks/Foundation.framework/Foundation"; - public const string HealthKitLibrary = "/System/Library/Frameworks/HealthKit.framework/HealthKit"; - public const string HomeKitLibrary = "/System/Library/Frameworks/HomeKit.framework/HomeKit"; - public const string ImageIOLibrary = "/System/Library/Frameworks/ImageIO.framework/ImageIO"; - public const string MapKitLibrary = "/System/Library/Frameworks/MapKit.framework/MapKit"; - public const string MobileCoreServicesLibrary = "/System/Library/Frameworks/MobileCoreServices.framework/MobileCoreServices"; - public const string PassKitLibrary = "/System/Library/Frameworks/PassKit.framework/PassKit"; - public const string SecurityLibrary = "/System/Library/Frameworks/Security.framework/Security"; - public const string UIKitLibrary = "/System/Library/Frameworks/UIKit.framework/UIKit"; - public const string WatchConnectivityLibrary = "/System/Library/Frameworks/WatchConnectivity.framework/WatchConnectivity"; - public const string WatchKitLibrary = "/System/Library/Frameworks/WatchKit.framework/WatchKit"; public const string libcompressionLibrary = "/usr/lib/libcompression.dylib"; - // WatchOS 3.0 - public const string AVFoundationLibrary = "/System/Library/Frameworks/AVFoundation.framework/AVFoundation"; - public const string CloudKitLibrary = "/System/Library/Frameworks/CloudKit.framework/CloudKit"; - public const string GameKitLibrary = "/System/Library/Frameworks/GameKit.framework/GameKit"; - public const string SceneKitLibrary = "/System/Library/Frameworks/SceneKit.framework/SceneKit"; - public const string SpriteKitLibrary = "/System/Library/Frameworks/SpriteKit.framework/SpriteKit"; - public const string UserNotificationsLibrary = "/System/Library/Frameworks/UserNotifications.framework/UserNotifications"; - // WatchOS 3.2 - public const string IntentsLibrary = "/System/Library/Frameworks/Intents.framework/Intents"; + public const string AccelerateImageLibrary = "/System/Library/Frameworks/Accelerate.framework/Frameworks/vImage.framework/vImage"; // WatchOS 4.0 - public const string AccelerateImageLibrary = "/System/Library/Frameworks/Accelerate.framework/Frameworks/vImage.framework/vImage"; - public const string CoreBluetoothLibrary = "/System/Library/Frameworks/CoreBluetooth.framework/CoreBluetooth"; - public const string CoreMLLibrary = "/System/Library/Frameworks/CoreML.framework/CoreML"; - public const string CoreVideoLibrary = "/System/Library/Frameworks/CoreVideo.framework/CoreVideo"; #if !XAMCORE_4_0 public const string VisionLibrary = "/System/Library/Frameworks/Vision.framework/Vision"; #endif - - // WatchOS 5 - public const string NaturalLanguageLibrary = "/System/Library/Frameworks/NaturalLanguage.framework/NaturalLanguage"; - public const string MediaPlayerLibrary = "/System/Library/Frameworks/MediaPlayer.framework/MediaPlayer"; - - // WatchOS 6 - public const string AuthenticationServicesLibrary = "/System/Library/Frameworks/AuthenticationServices.framework/AuthenticationServices"; - public const string NetworkLibrary = "/System/Library/Frameworks/Network.framework/Network"; - public const string PushKitLibrary = "/System/Library/Frameworks/PushKit.framework/PushKit"; - public const string SoundAnalysisLibrary = "/System/Library/Frameworks/SoundAnalysis.framework/SoundAnalysis"; - public const string CoreMediaLibrary = "/System/Library/Frameworks/CoreMedia.framework/CoreMedia"; - public const string StoreKitLibrary = "/System/Library/Frameworks/StoreKit.framework/StoreKit"; - - // watchOS 7 - public const string AccessibilityLibrary = "/System/Library/Frameworks/Accessibility.framework/Accessibility"; - public const string UniformTypeIdentifiersLibrary = "/System/Library/Frameworks/UniformTypeIdentifiers.framework/UniformTypeIdentifiers"; } } diff --git a/src/Foundation/NSObject.mac.cs b/src/Foundation/NSObject.mac.cs index 307068ed32eb..331a800863d5 100644 --- a/src/Foundation/NSObject.mac.cs +++ b/src/Foundation/NSObject.mac.cs @@ -42,7 +42,6 @@ public partial class NSObject : INativeObject // note: the linker will remove the unrequired `dlopen` calls // Used to force the loading of AppKit and Foundation // ** DO NOT rename the fields as mmp's linker can remove them when not required ** - // ** IF YOU ADD ITEMS HERE PLEASE UPDATE linker/ObjCExtensions.cs and mmp/linker/MonoMac.Tuner/MonoMacNamespaces.cs static IntPtr fl = Dlfcn.dlopen (Constants.FoundationLibrary, 1); static IntPtr al = Dlfcn.dlopen (Constants.AppKitLibrary, 1); static IntPtr ab = Dlfcn.dlopen (Constants.AddressBookLibrary, 1); @@ -109,7 +108,6 @@ public partial class NSObject : INativeObject static IntPtr vs = Dlfcn.dlopen (Constants.VideoSubscriberAccountLibrary, 1); static IntPtr un = Dlfcn.dlopen (Constants.UserNotificationsLibrary, 1); static IntPtr il = Dlfcn.dlopen (Constants.iTunesLibraryLibrary, 1); - // ** IF YOU ADD ITEMS HERE PLEASE UPDATE linker/ObjCExtensions.cs and mmp/linker/MonoMac.Tuner/MonoMacNamespaces.cs #if !XAMCORE_4_0 [Obsolete ("Use PlatformAssembly for easier code sharing across platforms.")] diff --git a/src/Makefile b/src/Makefile index e5122d1ba826..cc0c7364ac91 100644 --- a/src/Makefile +++ b/src/Makefile @@ -93,6 +93,7 @@ include ./Makefile.generator include ./generator-diff.mk COMMON_TARGET_DIRS = \ + $(BUILD_DIR) \ $(BUILD_DIR)/common \ $(BUILD_DIR)/common/NativeTypes \ @@ -115,6 +116,7 @@ $(SHARED_DESIGNER_CS): $(SHARED_RESX) IOS_EXTRA_SOURCES = \ $(IOS_OPENTK_1_0_CORE_SOURCES) \ $(IOS_BUILD_DIR)/Constants.cs \ + $(BUILD_DIR)/Constants.ios.generated.cs \ $(IOS_BUILD_DIR)/AssemblyInfo.cs \ $(SHARED_DESIGNER_CS) \ $(SHARED_SYSTEM_DRAWING_SOURCES) \ @@ -432,6 +434,7 @@ SN_KEY = $(PRODUCT_KEY_PATH) MAC_EXTRA_CORE_SOURCES += \ $(MAC_BUILD_DIR)/Constants.cs \ + $(BUILD_DIR)/Constants.macos.generated.cs \ # Add new bindings + source files in frameworks.sources, not here. @@ -725,6 +728,7 @@ WATCHOS_WARNINGS_TO_FIX = -nowarn:219,618,114,414,1635,3021,$(IOS_WARNINGS_THAT_ WATCHOS_EXTRA_CORE_SOURCES = \ $(WATCH_BUILD_DIR)/Constants.cs \ + $(BUILD_DIR)/Constants.watchos.generated.cs \ $(WATCH_BUILD_DIR)/AssemblyInfo.cs \ $(IOS_OPENTK_1_0_CORE_SOURCES) \ AudioToolbox/AudioBuffers.cs \ @@ -1004,6 +1008,7 @@ TVOS_WARNINGS_TO_FIX=-nowarn:219,618,114,414,1635,3021,$(IOS_WARNINGS_THAT_YOU_S TVOS_EXTRA_CORE_SOURCES = \ $(TVOS_BUILD_DIR)/Constants.cs \ + $(BUILD_DIR)/Constants.tvos.generated.cs \ $(TVOS_BUILD_DIR)/AssemblyInfo.cs \ $(IOS_OPENTK_1_0_CORE_SOURCES) \ $(SHARED_SYSTEM_DRAWING_SOURCES) \ @@ -1205,6 +1210,7 @@ MACCATALYST_WARNINGS_TO_FIX=-nowarn:219,618,114,414,1635,3021,$(IOS_WARNINGS_THA MACCATALYST_EXTRA_CORE_SOURCES = \ $(MACCATALYST_BUILD_DIR)/Constants.cs \ + $(BUILD_DIR)/Constants.maccatalyst.generated.cs \ $(MACCATALYST_BUILD_DIR)/AssemblyInfo.cs \ $(IOS_OPENTK_1_0_CORE_SOURCES) \ $(SHARED_SYSTEM_DRAWING_SOURCES) \ @@ -1529,6 +1535,16 @@ $(DOTNET_COMPILER): Makefile $(TOP)/Make.config | $(DOTNET_BUILD_DIR) $(Q) echo "exec $(SYSTEM_CSC) $(DOTNET_FLAGS) \"\$$@\"" >> $@ $(Q) chmod +x $@ +GENERATE_FRAMEWORKS_CONSTANTS=generate-frameworks-constants/bin/Debug/generate-frameworks-constants.exe + +$(GENERATE_FRAMEWORKS_CONSTANTS): $(wildcard generate-frameworks-constants/*.cs*) $(TOP)/tools/common/Frameworks.cs Makefile + $(Q) $(SYSTEM_MSBUILD) /r generate-frameworks-constants/generate-frameworks-constants.csproj $(MSBUILD_VERBOSITY) + +# This rule means: generate a Constants..generated.cs for the frameworks in the variable _FRAMEWORKS +$(BUILD_DIR)/Constants.%.generated.cs: Makefile $(GENERATE_FRAMEWORKS_CONSTANTS) | $(BUILD_DIR) + $(Q) mono --debug $(GENERATE_FRAMEWORKS_CONSTANTS) "$*" "$@.tmp" + $(Q) mv "$@.tmp" "$@" + # This tells NuGet to use the exact same dotnet version we've configured in Make.config global.json: $(TOP)/global6.json $(Q) $(CP) $< $@ diff --git a/src/ObjCRuntime/Dlfcn.cs b/src/ObjCRuntime/Dlfcn.cs index c7d6dab6577e..4f0a8bff473f 100644 --- a/src/ObjCRuntime/Dlfcn.cs +++ b/src/ObjCRuntime/Dlfcn.cs @@ -59,7 +59,7 @@ static public class CoreMidi { static public readonly IntPtr Handle = Dlfcn.dlopen (Constants.CoreMidiLibrary, 0); } #endif -#if !WATCH && !MONOMAC +#if HAS_OPENGLES static public class OpenGLES { static public readonly IntPtr Handle = Dlfcn.dlopen (Constants.OpenGLESLibrary, 0); diff --git a/src/generate-frameworks-constants/Program.cs b/src/generate-frameworks-constants/Program.cs new file mode 100644 index 000000000000..efc8c68ff8b1 --- /dev/null +++ b/src/generate-frameworks-constants/Program.cs @@ -0,0 +1,56 @@ +using System; +using System.IO; +using System.Linq; +using System.Text; + +using Xamarin.Utils; + +namespace GenerateFrameworksConstants { + class MainClass { + public static int Main (string [] args) + { + var platform = args [0]; + var output = args [1]; + return Fix (GetPlatform (platform), output); + } + + static ApplePlatform GetPlatform (string platform) + { + switch (platform.ToLowerInvariant ()) { + case "ios": + return ApplePlatform.iOS; + case "tvos": + return ApplePlatform.TVOS; + case "watchos": + return ApplePlatform.WatchOS; + case "macos": + return ApplePlatform.MacOSX; + case "maccatalyst": + return ApplePlatform.MacCatalyst; + default: + throw new NotImplementedException ($"Unknown platform: {platform}"); + } + } + + static int Fix (ApplePlatform platform, string output) + { + var frameworks = Frameworks.GetFrameworks (platform, false).Values.Where (v => !v.Unavailable); + var sb = new StringBuilder (); + + sb.AppendLine ("namespace ObjCRuntime {"); + sb.AppendLine ("\tpublic static partial class Constants {"); + foreach (var grouped in frameworks.GroupBy (v => v.Version)) { + sb.AppendLine ($"\t\t// {platform} {grouped.Key}"); + foreach (var fw in grouped.OrderBy (v => v.Name)) + sb.AppendLine ($"\t\tpublic const string {fw.Namespace}Library = \"{fw.LibraryPath}\";"); + sb.AppendLine (); + } + sb.AppendLine ("\t}"); + sb.AppendLine ("}"); + + File.WriteAllText (output, sb.ToString ()); + return 0; + } + } +} + diff --git a/src/generate-frameworks-constants/generate-frameworks-constants.csproj b/src/generate-frameworks-constants/generate-frameworks-constants.csproj new file mode 100644 index 000000000000..3b6288deb691 --- /dev/null +++ b/src/generate-frameworks-constants/generate-frameworks-constants.csproj @@ -0,0 +1,45 @@ + + + + Debug + anycpu + {F502F186-49B0-431A-B6B2-CE87AFD711C3} + Exe + generateframeworksconstants + generate-frameworks-constants + v4.7.2 + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + true + + + true + bin\Release + prompt + 4 + true + + + + + + + + Frameworks.cs + + + ApplePlatform.cs + + + StringUtils.cs + + + + diff --git a/src/generate-frameworks-constants/generate-frameworks-constants.sln b/src/generate-frameworks-constants/generate-frameworks-constants.sln new file mode 100644 index 000000000000..e375737b16fa --- /dev/null +++ b/src/generate-frameworks-constants/generate-frameworks-constants.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.808.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "generate-frameworks-constants", "generate-frameworks-constants.csproj", "{F502F186-49B0-431A-B6B2-CE87AFD711C3}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|anycpu = Debug|anycpu + Release|anycpu = Release|anycpu + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {F502F186-49B0-431A-B6B2-CE87AFD711C3}.Debug|anycpu.ActiveCfg = Debug|anycpu + {F502F186-49B0-431A-B6B2-CE87AFD711C3}.Debug|anycpu.Build.0 = Debug|anycpu + {F502F186-49B0-431A-B6B2-CE87AFD711C3}.Release|anycpu.ActiveCfg = Release|anycpu + {F502F186-49B0-431A-B6B2-CE87AFD711C3}.Release|anycpu.Build.0 = Release|anycpu + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {DCAC0510-C3C5-461F-BAB6-9A3D031EB2B9} + EndGlobalSection +EndGlobal diff --git a/tools/common/Frameworks.cs b/tools/common/Frameworks.cs index ce3697872456..4ce9c555b8c0 100644 --- a/tools/common/Frameworks.cs +++ b/tools/common/Frameworks.cs @@ -13,12 +13,23 @@ public class Framework { public string Namespace; - public string Name; + public string Name; // this is the name to pass to the linker when linking. This can be an umbrella framework. + public string SubFramework; // if Name is an umbrella framework, this is the name of the actual sub framework. public Version Version; public Version VersionAvailableInSimulator; public bool AlwaysWeakLinked; public bool Unavailable; + public string LibraryPath { + get { + if (string.IsNullOrEmpty (SubFramework)) { + return $"/System/Library/Frameworks/{Name}.framework/{Name}"; + } else { + return $"/System/Library/Frameworks/{Name}.framework/Versions/A/Frameworks/{SubFramework}.framework/{SubFramework}"; + } + } + } + #if MTOUCH || MMP || BUNDLER public bool IsFrameworkAvailableInSimulator (Application app) { @@ -50,6 +61,11 @@ public void Add (string @namespace, int major_version, int minor_version) Add (@namespace, @namespace, new Version (major_version, minor_version)); } + public void Add (string @namespace, int major_version, int minor_version, string subFramework = null) + { + Add (@namespace, @namespace, new Version (major_version, minor_version), subFramework: subFramework); + } + public void Add (string @namespace, string framework, int major_version, bool alwaysWeakLink) { Add (@namespace, framework, new Version (major_version, 0), null, alwaysWeakLink); @@ -60,12 +76,17 @@ public void Add (string @namespace, string framework, int major_version, int min Add (@namespace, framework, new Version (major_version, minor_version)); } + public void Add (string @namespace, string framework, int major_version, int minor_version, string umbrellaFramework = null) + { + Add (@namespace, framework, new Version (major_version, minor_version), subFramework: umbrellaFramework); + } + public void Add (string @namespace, string framework, int major_version, int minor_version, int build_version) { Add (@namespace, framework, new Version (major_version, minor_version, build_version)); } - public void Add (string @namespace, string framework, Version version, Version version_available_in_simulator = null, bool alwaysWeakLink = false) + public void Add (string @namespace, string framework, Version version, Version version_available_in_simulator = null, bool alwaysWeakLink = false, string subFramework = null) { var fr = new Framework () { Namespace = @namespace, @@ -73,6 +94,7 @@ public void Add (string @namespace, string framework, Version version, Version v Version = version, VersionAvailableInSimulator = version_available_in_simulator ?? version, AlwaysWeakLinked = alwaysWeakLink, + SubFramework = subFramework, }; base.Add (fr.Namespace, fr); } @@ -94,18 +116,25 @@ public static Frameworks MacFrameworks { mac_frameworks = new Frameworks () { { "Accelerate", 10, 0 }, { "AppKit", 10, 0 }, + { "CoreAudio", "CoreAudio", 10, 0 }, { "CoreFoundation", "CoreFoundation", 10, 0 }, - { "CoreGraphics", "QuartzCore", 10, 0 }, - { "CoreImage", "QuartzCore", 10, 0 }, + { "CoreGraphics", "ApplicationServices", 10, 0, "CoreGraphics" }, + // The CoreImage framework by itself was introduced in 10.11 + // Up until 10.10 it was a sub framework in the QuartzCore umbrella framework + // They both existed until 10.13, when the sub framework was removed. + { "CoreImage", 10, 0 }, { "Foundation", 10, 0 }, - { "ImageKit", "Quartz", 10, 0 }, - { "PdfKit", "Quartz", 10, 0 }, + { "ImageKit", "Quartz", 10, 0, "ImageKit" }, + { "PdfKit", "Quartz", 10, 0, "PDFKit" }, { "Security", 10, 0 }, { "GSS", "GSS", 10, 1 }, + { "AddressBook", 10, 2 }, { "AudioUnit", 10, 2 }, { "CoreMidi", "CoreMIDI", 10, 2 }, + { "IOBluetooth", 10, 2 }, + { "IOBluetoothUI", 10, 2 }, { "WebKit", 10, 2}, { "AudioToolbox", 10, 3 }, @@ -113,27 +142,27 @@ public static Frameworks MacFrameworks { { "CoreVideo", 10, 3 }, { "MobileCoreServices", "CoreServices", 10, 3 }, { "OpenGL", 10, 3 }, - { "SearchKit", "CoreServices", 10,3 }, + { "SearchKit", "CoreServices", 10,3, "SearchKit" }, { "SystemConfiguration", 10, 3 }, { "CoreData", 10, 4 }, - { "ImageIO", 10, 4 }, + { "ImageIO", 10, 4 }, // it's own framework since at least 10.9 { "OpenAL", 10, 4 }, { "CoreAnimation", "QuartzCore", 10, 5 }, - { "CoreText", 10, 5 }, - { "PrintCore", "CoreServices", 10,5 }, + { "CoreText", 10, 5 }, // it's own framework since at least 10.9 + { "InputMethodKit", 10, 5 }, + { "PrintCore", "ApplicationServices", 10,5, "PrintCore" }, { "ScriptingBridge", 10, 5 }, { "QuickLook", 10, 5 }, - { "QuartzComposer", "Quartz", 10, 5 }, + { "QuartzComposer", "Quartz", 10, 5, "QuartzComposer" }, { "ImageCaptureCore", "ImageCaptureCore", 10,5 }, { "QTKit", 10, 6 }, - { "QuickLookUI", "Quartz", 10, 6 }, + { "QuickLookUI", "Quartz", 10, 6, "QuickLookUI" }, { "MediaToolbox", 10, 9 }, { "AVFoundation", 10, 7 }, - { "CoreBluetooth", "IOBluetooth", 10, 7 }, { "CoreLocation", 10, 7 }, { "CoreMedia", 10, 7 }, { "CoreWlan", "CoreWLAN", 10, 7 }, @@ -150,6 +179,10 @@ public static Frameworks MacFrameworks { { "VideoToolbox", 10, 8 }, { "AVKit", 10, 9 }, + // The CoreBluetooth framework was added as a sub framework of the IOBluetooth framework in 10.7 + // Then it was moved to its own top-level framework in 10.10 + // and the sub framework was deleted in 10.12 + { "CoreBluetooth", 10, 9 }, { "GameController", 10, 9 }, { "MapKit", 10, 9 }, { "MediaAccessibility", 10, 9 }, @@ -218,6 +251,7 @@ public static Frameworks MacFrameworks { { "CallKit", "CallKit", 11,0 }, { "ClassKit", "ClassKit", 11,0 }, { "MLCompute", "MLCompute", 11,0 }, + { "NearbyInteraction", "NearbyInteraction", 11,0 }, { "OSLog", "OSLog", 11,0 }, { "PassKit", "PassKit", 11,0 }, { "ReplayKit", "ReplayKit", 11,0 }, @@ -249,6 +283,7 @@ public static Frameworks CreateiOSFrameworks (bool is_simulator_build) { "AVFoundation", "AVFoundation", 3 }, { "CFNetwork", "CFNetwork", 3 }, { "CoreAnimation", "QuartzCore", 3 }, + { "CoreAudio", "CoreAudio", 3 }, { "CoreData", "CoreData", 3 }, { "CoreFoundation", "CoreFoundation", 3 }, { "CoreGraphics", "CoreGraphics", 3 }, @@ -353,6 +388,7 @@ public static Frameworks CreateiOSFrameworks (bool is_simulator_build) { "AuthenticationServices", "AuthenticationServices", 12,0 }, { "CarPlay", "CarPlay", 12,0 }, + { "CoreServices", "MobileCoreServices", 12, 0 }, { "IdentityLookupUI", "IdentityLookupUI", 12,0 }, { "NaturalLanguage", "NaturalLanguage", 12,0 }, { "Network", "Network", 12, 0 }, @@ -398,6 +434,7 @@ public static Frameworks GetwatchOSFrameworks (bool is_simulator_build) // { "CFNetwork", "CFNetwork", 2 }, { "ClockKit", "ClockKit", 2 }, { "Contacts", "Contacts", 2 }, + { "CoreAudio", "CoreAudio", 2 }, { "CoreData", "CoreData", 2 }, { "CoreFoundation", "CoreFoundation", 2 }, { "CoreGraphics", "CoreGraphics", 2 }, @@ -470,6 +507,7 @@ public static Frameworks TVOSFrameworks { { "CoreImage", "CoreImage", 9 }, { "CoreLocation", "CoreLocation", 9 }, { "CoreMedia", "CoreMedia", 9 }, + { "CoreSpotlight", "CoreSpotlight", 9 }, { "CoreText", "CoreText", 9 }, { "CoreVideo", "CoreVideo", 9 }, { "Foundation", "Foundation", 9 }, @@ -485,7 +523,6 @@ public static Frameworks TVOSFrameworks { { "Metal", "Metal", 9 }, { "MetalKit", "MetalKit", new Version (9, 0), new Version (10, 0) }, { "MetalPerformanceShaders", "MetalPerformanceShaders", new Version (9, 0), NotAvailableInSimulator /* not available in the simulator */ }, - { "CoreServices", "CFNetwork", 9 }, { "MobileCoreServices", "MobileCoreServices", 9 }, { "ModelIO", "ModelIO", 9 }, { "OpenGLES", "OpenGLES", 9 }, @@ -515,6 +552,7 @@ public static Frameworks TVOSFrameworks { { "IOSurface", "IOSurface", new Version (11, 0), NotAvailableInSimulator /* Not available in the simulator (the header is there, but broken) */ }, { "Vision", "Vision", 11 }, + { "CoreServices", "MobileCoreServices", 12 }, { "NaturalLanguage", "NaturalLanguage", 12,0 }, { "Network", "Network", 12, 0 } , { "TVUIKit", "TVUIKit", 12,0 }, diff --git a/tools/mmp/linker/MonoMac.Tuner/MonoMacNamespaces.cs b/tools/mmp/linker/MonoMac.Tuner/MonoMacNamespaces.cs index 5e4a21ec837c..6874018e3b64 100644 --- a/tools/mmp/linker/MonoMac.Tuner/MonoMacNamespaces.cs +++ b/tools/mmp/linker/MonoMac.Tuner/MonoMacNamespaces.cs @@ -2,6 +2,7 @@ //#define DEBUG using System; using System.Collections.Generic; +using System.Linq; using Mono.Cecil; using Mono.Cecil.Cil; @@ -10,79 +11,11 @@ using Mono.Tuner; using Xamarin.Linker; -using Xamarin.Bundler; +using Xamarin.Tuner; namespace MonoMac.Tuner { public class MonoMacNamespaces : IStep { - - Dictionary NamespaceMapping = new Dictionary { - { Constants.FoundationLibrary, Namespaces.Foundation }, - { Constants.AppKitLibrary, Namespaces.AppKit }, - { Constants.AddressBookLibrary, Namespaces.AddressBook }, - { Constants.CoreTextLibrary, Namespaces.CoreText }, - { Constants.WebKitLibrary, Namespaces.WebKit }, - { Constants.QuartzLibrary, Namespaces.CoreAnimation }, - { Constants.QTKitLibrary, Namespaces.QTKit }, - { Constants.CoreLocationLibrary, Namespaces.CoreLocation }, - { Constants.SecurityLibrary, Namespaces.Security }, - { Constants.QuartzComposerLibrary, Namespaces.QuartzComposer }, - { Constants.CoreWlanLibrary, Namespaces.CoreWlan }, - { Constants.PdfKitLibrary, Namespaces.PdfKit }, - { Constants.ImageKitLibrary, Namespaces.ImageKit }, - { Constants.ScriptingBridgeLibrary, Namespaces.ScriptingBridge }, - { Constants.AVFoundationLibrary, Namespaces.AVFoundation }, - { Constants.CoreBluetoothLibrary, Namespaces.CoreBluetooth }, - { Constants.GameKitLibrary, Namespaces.GameKit }, - { Constants.GameControllerLibrary, Namespaces.GameController }, - { Constants.JavaScriptCoreLibrary, Namespaces.JavaScriptCore }, - { Constants.CoreAudioKitLibrary, Namespaces.CoreAudioKit }, - { Constants.InputMethodKitLibrary, Namespaces.InputMethodKit }, - { Constants.OpenALLibrary, Namespaces.OpenAL }, - { Constants.MediaAccessibilityLibrary, Namespaces.MediaAccessibility }, - { Constants.CoreMidiLibrary, Namespaces.CoreMIDI }, - { Constants.MediaLibraryLibrary, Namespaces.MediaLibrary }, - { Constants.GLKitLibrary, Namespaces.GLKit }, - { Constants.SpriteKitLibrary, Namespaces.SpriteKit }, - { Constants.CloudKitLibrary, Namespaces.CloudKit }, - { Constants.LocalAuthenticationLibrary, Namespaces.LocalAuthentication }, - { Constants.AccountsLibrary, Namespaces.Accounts }, - { Constants.ContactsLibrary, Namespaces.Contacts }, - { Constants.ContactsUILibrary, Namespaces.ContactsUI }, - { Constants.MapKitLibrary, Namespaces.MapKit }, - { Constants.EventKitLibrary, Namespaces.EventKit }, - { Constants.SocialLibrary, Namespaces.Social }, - { Constants.AVKitLibrary, Namespaces.AVKit }, - { Constants.VideoToolboxLibrary, Namespaces.VideoToolbox }, - { Constants.GameplayKitLibrary, Namespaces.GameplayKit }, - { Constants.NetworkExtensionLibrary, Namespaces.NetworkExtension }, - { Constants.MultipeerConnectivityLibrary, Namespaces.MultipeerConnectivity }, - { Constants.MetalKitLibrary, Namespaces.MetalKit }, - { Constants.ModelIOLibrary, Namespaces.ModelIO }, - { Constants.IOBluetoothLibrary, Namespaces.IOBluetooth }, - { Constants.IOBluetoothUILibrary, Namespaces.IOBluetoothUI }, - { Constants.FinderSyncLibrary, Namespaces.FinderSync }, - { Constants.NotificationCenterLibrary, Namespaces.NotificationCenter }, - { Constants.SceneKitLibrary, Namespaces.SceneKit }, - { Constants.StoreKitLibrary, Namespaces.StoreKit }, - { Constants.MediaPlayerLibrary, Namespaces.MediaPlayer }, - { Constants.IntentsLibrary, Namespaces.Intents }, - { Constants.PhotosLibrary, Namespaces.Photos }, - { Constants.PhotosUILibrary, Namespaces.PhotosUI }, - { Constants.PrintCoreLibrary, Namespaces.PrintCore }, - { Constants.CoreMLLibrary, Namespaces.CoreML }, - { Constants.VisionLibrary, Namespaces.Vision }, - { Constants.IOSurfaceLibrary, Namespaces.IOSurface }, - { Constants.ExternalAccessoryLibrary, Namespaces.ExternalAccessory }, - { Constants.MetalPerformanceShadersLibrary, Namespaces.MetalPerformanceShaders }, - { Constants.AdSupportLibrary, Namespaces.AdSupport }, - { Constants.NaturalLanguageLibrary, Namespaces.NaturalLanguage}, - { Constants.NetworkLibrary, Namespaces.Network}, - { Constants.VideoSubscriberAccountLibrary, Namespaces.VideoSubscriberAccount }, - { Constants.ImageCaptureCoreLibrary, Namespaces.ImageCaptureCore }, - { Constants.iTunesLibraryLibrary, Namespaces.iTunesLibrary }, - }; - public void Process (LinkContext context) { var profile = (Profile.Current as BaseProfile); @@ -96,6 +29,16 @@ public void Process (LinkContext context) namespaces.Add (type.Namespace); } + // Compute our map + // there can be multiple namespaces for the same library + var frameworks = Frameworks.GetFrameworks (((DerivedLinkContext) context).App.Platform, false); + var map = new Dictionary> (); + foreach (var fw in frameworks.Values) { + if (!map.TryGetValue (fw.LibraryPath, out var list)) + map [fw.LibraryPath] = list = new List (); + list.Add (fw.Namespace); + } + // clean NSObject from loading them var nsobject = assembly.MainModule.GetType (Namespaces.Foundation + ".NSObject"); @@ -112,9 +55,8 @@ public void Process (LinkContext context) // Based on the list from xamcore/src/Foundation/NSObjectMac.cs bool remove_dlopen = false; - string targetNamespace; - if (NamespaceMapping.TryGetValue (ins.Operand as string, out targetNamespace)) { - remove_dlopen = !namespaces.Contains (targetNamespace); + if (map.TryGetValue (ins.Operand as string, out var targetNamespaces)) { + remove_dlopen = !targetNamespaces.Any (v => namespaces.Contains (v)); } #if DEBUG else {