From bfc98f80593aaa8b9de67c98f607a4a6af4e8a4f Mon Sep 17 00:00:00 2001 From: Alex Soto Date: Wed, 16 Sep 2020 05:41:44 -0400 Subject: [PATCH] [xcode12] Initial bump for Xcode 12 GM (#9644) * [xcode12] Initial bump for Xcode 12 GM * [tests][intro] We cannot load CoreNFC framework on iOS simulator anymore * [tests][xtro] New Metal API are not abstract (before XAMCORE_4_0) * [tests][intro] Fix crash when CSLocalizedString 'description' selector is called * [tests][xtro] Add support for excluding platforms Based on `Make.config` variables `INCLUDE_[IOS|TVOS|WATCH|MAC]` This required moving some entries (common -> macOS) to keep the sanitizer happy. * [xtro] Ignore Intents watchOS differences since they will likely match iOS in the future * Update to use Xcode 12 GMb instead of the old GM * [tests][xtro] Remove OSLog for iOS and tvOS (changed in GM) * [tests][msbuild] Disable FrameworkListTest based on the active/disabled platforms * [tests][msbuild] Track new directory/file inside CoreML projects * [mlaunch] Bump maccore and disable mlaunch if mac build is disabled New commits in xamarin/maccore: * xamarin/maccore@ba332d4d07 Disable mlaunch if Mac is not built (#2314) Diff: https://github.com/xamarin/maccore/compare/87a96d21c9fd8e15fd157201e6836db97c8b6e67..ba332d4d072e9addaad1d7c66adb13dbf42a6c7c Co-authored-by: Sebastien Pouliot --- Make.config | 8 +-- Versions-mac.plist.in | 4 +- mk/xamarin.mk | 2 +- .../FrameworkListTest.cs | 18 ++++++ .../ProjectsTests/CoreMLCompiler.cs | 2 + src/AVFoundation/Enums.cs | 37 ++++++++++++- src/Metal/MTLEnums.cs | 13 +++-- src/gamecontroller.cs | 8 +++ src/gamekit.cs | 2 +- src/healthkit.cs | 44 +++++++++++++-- src/intents.cs | 25 +-------- src/metal.cs | 10 ++-- src/watchkit.cs | 1 + tests/introspection/ApiTypoTest.cs | 11 +++- tests/introspection/iOS/iOSApiCtorInitTest.cs | 2 + tests/xtro-sharpie/Makefile | 38 ++++++++++++- .../xtro-sharpie/common-CoreFoundation.ignore | 3 - tests/xtro-sharpie/common-CoreMIDI.ignore | 1 - tests/xtro-sharpie/common-Metal.ignore | 1 - tests/xtro-sharpie/common-PDFKit.ignore | 39 ------------- tests/xtro-sharpie/iOS-Metal.ignore | 6 +- tests/xtro-sharpie/iOS-OSLog.ignore | 43 --------------- .../xtro-sharpie/macOS-CoreFoundation.ignore | 4 ++ tests/xtro-sharpie/macOS-CoreMIDI.ignore | 1 + tests/xtro-sharpie/macOS-Metal.ignore | 1 + tests/xtro-sharpie/macOS-PDFKit.ignore | 38 +++++++++++++ tests/xtro-sharpie/tvOS-OSLog.ignore | 43 --------------- tests/xtro-sharpie/watchOS-Intents.ignore | 10 ++++ tests/xtro-sharpie/xtro-sanity/Sanitizer.cs | 55 ++++++++++++++++++- tools/common/Frameworks.cs | 4 +- tools/mlaunch/Makefile | 8 ++- 31 files changed, 292 insertions(+), 190 deletions(-) delete mode 100644 tests/xtro-sharpie/iOS-OSLog.ignore delete mode 100644 tests/xtro-sharpie/tvOS-OSLog.ignore diff --git a/Make.config b/Make.config index c775f1a566..f4ca09217f 100644 --- a/Make.config +++ b/Make.config @@ -60,8 +60,8 @@ IOS_PACKAGE_UPDATE_ID=$(shell printf "2%02d%02d%02d%03d" $(IOS_PACKAGE_VERSION_M # Xcode version should have both a major and a minor version (even if the minor version is 0) XCODE_VERSION=12.0 -XCODE_URL=http://xamarin-storage/bot-provisioning/xcodes/Xcode_12_beta_6.xip -XCODE_DEVELOPER_ROOT=/Applications/Xcode_12.0.0-beta6.app/Contents/Developer +XCODE_URL=http://xamarin-storage/bot-provisioning/xcodes/Xcode_12_GM_seed.xip +XCODE_DEVELOPER_ROOT=/Applications/Xcode_12.0.0-GMb.app/Contents/Developer XCODE_PRODUCT_BUILD_VERSION:=$(shell /usr/libexec/PlistBuddy -c 'Print :ProductBuildVersion' $(XCODE_DEVELOPER_ROOT)/../version.plist) # Mono version embedded in XI/XM (NEEDED_MONO_VERSION/BRANCH) are specified in mk/mono.mk @@ -100,7 +100,7 @@ MIN_OSX_VERSION_FOR_MAC=10.11 # WARNING: Do **not** use versions higher than the available Xcode SDK or else we will have issues with mtouch (See https://github.com/xamarin/xamarin-macios/issues/7705) IOS_SDK_VERSION=14.0 # When bumping OSX_SDK_VERSION also update the macOS version where we execute on bots in jenkins/Jenkinsfile (in the 'node' element) -OSX_SDK_VERSION=11.0 +OSX_SDK_VERSION=10.15 WATCH_SDK_VERSION=7.0 TVOS_SDK_VERSION=14.0 @@ -130,7 +130,7 @@ MIN_TVOS_SIMULATOR_VERSION=10.2 EXTRA_SIMULATORS=com.apple.pkg.iPhoneSimulatorSDK10_3 com.apple.pkg.AppleTVSimulatorSDK10_2 com.apple.pkg.WatchSimulatorSDK3_2 INCLUDE_IOS=1 -INCLUDE_MAC=1 +#INCLUDE_MAC=1 INCLUDE_WATCH=1 INCLUDE_TVOS=1 INCLUDE_DEVICE=1 diff --git a/Versions-mac.plist.in b/Versions-mac.plist.in index cfba30391e..be4d035b85 100644 --- a/Versions-mac.plist.in +++ b/Versions-mac.plist.in @@ -17,8 +17,8 @@ 10.13 10.14 10.15 - 10.16 - 11.0 + + RecommendedXcodeVersion diff --git a/mk/xamarin.mk b/mk/xamarin.mk index 65a7dfbd74..cc58f9fd84 100644 --- a/mk/xamarin.mk +++ b/mk/xamarin.mk @@ -7,7 +7,7 @@ MONO_BRANCH := $(shell cd $(MONO_PATH) 2> /dev/null && git symbolic-ref --sho endif ifdef ENABLE_XAMARIN -NEEDED_MACCORE_VERSION := 87a96d21c9fd8e15fd157201e6836db97c8b6e67 +NEEDED_MACCORE_VERSION := ba332d4d072e9addaad1d7c66adb13dbf42a6c7c NEEDED_MACCORE_BRANCH := xcode12 MACCORE_DIRECTORY := maccore diff --git a/msbuild/tests/Xamarin.iOS.Tasks.Tests/FrameworkListTest.cs b/msbuild/tests/Xamarin.iOS.Tasks.Tests/FrameworkListTest.cs index c1ff5f2dc1..dd6852d256 100644 --- a/msbuild/tests/Xamarin.iOS.Tasks.Tests/FrameworkListTest.cs +++ b/msbuild/tests/Xamarin.iOS.Tasks.Tests/FrameworkListTest.cs @@ -22,6 +22,24 @@ namespace Xamarin.iOS.Tasks { var fameworkListFileParts = frameworkListFile.Split ('-'); string frameworkName = fameworkListFileParts[0]; + switch (frameworkName) { + case "Xamarin.iOS": + if (!Configuration.include_ios) + Assert.Inconclusive ("include_ios is disabled"); + break; + case "Xamarin.TVOS": + if (!Configuration.include_tvos) + Assert.Inconclusive ("include_tvos is disabled"); + break; + case "Xamarin.WatchOS": + if (!Configuration.include_watchos) + Assert.Inconclusive ("include_watchos is disabled"); + break; + case "Xamarin.Mac": + if (!Configuration.include_mac) + Assert.Inconclusive ("include_mac is disabled"); + break; + } var isMac = frameworkName == "Xamarin.Mac"; var isFull = fameworkListFileParts[1] == "Full"; var frameworkListAssemblies = ScanFrameworkListXml (frameworkListFile, isMac); diff --git a/msbuild/tests/Xamarin.iOS.Tasks.Tests/ProjectsTests/CoreMLCompiler.cs b/msbuild/tests/Xamarin.iOS.Tasks.Tests/ProjectsTests/CoreMLCompiler.cs index 8e533b16c9..3828b139a1 100644 --- a/msbuild/tests/Xamarin.iOS.Tasks.Tests/ProjectsTests/CoreMLCompiler.cs +++ b/msbuild/tests/Xamarin.iOS.Tasks.Tests/ProjectsTests/CoreMLCompiler.cs @@ -34,6 +34,8 @@ namespace Xamarin.iOS.Tasks if (Configuration.XcodeVersion.Major >= 12) { Assert.IsTrue (files.Contains (Path.Combine (mlmodelc, "metadata.json")), " metadata.json not found"); expected_length++; + Assert.IsTrue (files.Contains (Path.Combine (mlmodelc, "analytics", "coremldata.bin")), "analytics/coremldata.bin not found"); + expected_length++; } Assert.AreEqual (expected_length, files.Count, "File count"); } diff --git a/src/AVFoundation/Enums.cs b/src/AVFoundation/Enums.cs index a4ec31f6b7..d57acd834d 100644 --- a/src/AVFoundation/Enums.cs +++ b/src/AVFoundation/Enums.cs @@ -332,6 +332,12 @@ namespace AVFoundation { public enum AVAudioSessionPortOverride : ulong { None = 0, [NoTV] +#if XAMCORE_4_0 // Removed in Xcode 12 GM + [NoMac, NoWatch] +#else + [Obsoleted (PlatformName.WatchOS, 2,0, message : "Unavailable and will be removed in the future.")] + [Obsoleted (PlatformName.MacOSX, 10,7, message : "Unavailable and will be removed in the future.")] +#endif Speaker = 0x73706b72 // 'spkr' } @@ -354,15 +360,42 @@ namespace AVFoundation { public enum AVAudioSessionCategoryOptions : ulong { MixWithOthers = 1, DuckOthers = 2, +#if XAMCORE_4_0 // Removed in Xcode 12 GM + [NoMac, NoWatch] +#else + [Obsoleted (PlatformName.WatchOS, 2,0, message : "Unavailable and will be removed in the future.")] + [Obsoleted (PlatformName.MacOSX, 10,7, message : "Unavailable and will be removed in the future.")] +#endif [NoTV] AllowBluetooth = 4, +#if XAMCORE_4_0 // Removed in Xcode 12 GM + [NoMac, NoWatch] +#else + [Obsoleted (PlatformName.WatchOS, 2,0, message : "Unavailable and will be removed in the future.")] + [Obsoleted (PlatformName.MacOSX, 10,7, message : "Unavailable and will be removed in the future.")] +#endif [NoTV] DefaultToSpeaker = 8, +#if XAMCORE_4_0 // Removed in Xcode 12 GM + [NoMac] +#else + [Obsoleted (PlatformName.MacOSX, 10,7, message : "Unavailable and will be removed in the future.")] +#endif [iOS (9,0)] InterruptSpokenAudioAndMixWithOthers = 17, +#if XAMCORE_4_0 // Removed in Xcode 12 GM + [NoMac] +#else + [Obsoleted (PlatformName.MacOSX, 10,7, message : "Unavailable and will be removed in the future.")] +#endif [NoWatch, iOS (10,0), TV (10,0)] AllowBluetoothA2DP = 32, +#if XAMCORE_4_0 // Removed in Xcode 12 GM + [NoMac] +#else + [Obsoleted (PlatformName.MacOSX, 10,7, message : "Unavailable and will be removed in the future.")] +#endif [NoWatch, iOS (10,0), TV (10,0)] AllowAirPlay = 64, } @@ -874,7 +907,9 @@ namespace AVFoundation { public enum AVAudioSessionRouteSharingPolicy : ulong { Default = 0, LongForm = 1, - Independent = 2 + Independent = 2, + [iOS (14,0), NoWatch, NoTV, NoMac] + LongFormVideo = 3, } [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] diff --git a/src/Metal/MTLEnums.cs b/src/Metal/MTLEnums.cs index 1af85d8112..548e53a25e 100644 --- a/src/Metal/MTLEnums.cs +++ b/src/Metal/MTLEnums.cs @@ -131,14 +131,13 @@ namespace Metal { [Native] public enum MTLSamplerAddressMode : ulong { ClampToEdge = 0, -#if MONOMAC + [iOS (14,0)] MirrorClampToEdge = 1, -#endif Repeat = 2, MirrorRepeat = 3, ClampToZero = 4, - [Mac (10,12)] + [Mac (10,12), iOS (14,0)] ClampToBorderColor = 5, } @@ -773,9 +772,9 @@ namespace Metal { } #if XAMCORE_4_0 - [NoiOS][NoTV] + [NoTV] #endif - [Mac (10,12)] + [Mac (10,12), iOS (14,0)] [Native] public enum MTLSamplerBorderColor : ulong { TransparentBlack = 0, @@ -1044,6 +1043,10 @@ namespace Metal { Apple3 = 1003, Apple4 = 1004, Apple5 = 1005, + [NoTV, NoMac, iOS (14,0)] // Yep just available in iOS + Apple6 = 1006, + [NoTV, NoMac, iOS (14,0)] // Yep just available in iOS + Apple7 = 1007, Mac1 = 2001, Mac2 = 2002, Common1 = 3001, diff --git a/src/gamecontroller.cs b/src/gamecontroller.cs index eae3c71aa2..b44fd1afbe 100644 --- a/src/gamecontroller.cs +++ b/src/gamecontroller.cs @@ -50,6 +50,14 @@ namespace GameController { [NullAllowed, Export ("localizedName", ArgumentSemantic.Strong)] string LocalizedName { get; set; } + [NoTV, NoMac, iOS (14, 0)] + [NullAllowed, Export ("unmappedSfSymbolsName", ArgumentSemantic.Strong)] + string UnmappedSfSymbolsName { get; set; } + + [NoTV, NoMac, iOS (14, 0)] + [NullAllowed, Export ("unmappedLocalizedName", ArgumentSemantic.Strong)] + string UnmappedLocalizedName { get; set; } + [TV (14, 0), Mac (11, 0), iOS (14, 0)] [Export ("aliases")] NSSet Aliases { get; } diff --git a/src/gamekit.cs b/src/gamekit.cs index 768acf38b8..dfdb8d61ea 100644 --- a/src/gamekit.cs +++ b/src/gamekit.cs @@ -607,7 +607,7 @@ namespace GameKit { [Field ("GKPlayerIDNoLongerAvailable")] NSString IdNoLongerAvailable { get; } - [TV (14, 0), Watch(7, 0), Mac (11, 0), iOS (14, 0)] + [TV (14, 0), NoWatch, Mac (11, 0), iOS (14, 0)] [Export ("isInvitable")] bool IsInvitable { get; } } diff --git a/src/healthkit.cs b/src/healthkit.cs index 3b0f31c172..b79187e891 100644 --- a/src/healthkit.cs +++ b/src/healthkit.cs @@ -73,6 +73,13 @@ namespace HealthKit { Active, } + [Watch (7,0), iOS (14,0)] + [Native] + public enum HKActivityMoveMode : long { + ActiveEnergy = 1, + AppleMoveTime = 2, + } + delegate void HKAnchoredObjectResultHandler2 (HKAnchoredObjectQuery query, HKSample[] results, nuint newAnchor, NSError error); [Obsolete ("Use HKAnchoredObjectResultHandler2 instead")] @@ -466,6 +473,11 @@ namespace HealthKit { [return: NullAllowed] HKWheelchairUseObject GetWheelchairUse (out NSError error); + [Watch (7,0), iOS (14,0)] + [Export ("activityMoveModeWithError:")] + [return: NullAllowed] + HKActivityMoveModeObject GetActivityMoveMode ([NullAllowed] out NSError error); + // FIXME NS_EXTENSION_UNAVAILABLE("Not available to extensions") ; [Export ("stopQuery:")] void StopQuery (HKQuery query); @@ -913,6 +925,10 @@ namespace HealthKit { [Field ("HKMetadataKeyDevicePlacementSide")] NSString DevicePlacementSide { get; } + [Watch (7, 0), iOS (14, 0)] + [Field ("HKMetadataKeyBarometricPressure")] + NSString BarometricPressure { get; } + [Watch (7, 0), iOS (14, 0)] [Field ("HKMetadataKeyAppleECGAlgorithmVersion")] NSString AppleEcgAlgorithmVersion { get; } @@ -2129,10 +2145,9 @@ namespace HealthKit { [Field ("HKCharacteristicTypeIdentifierWheelchairUse")] WheelchairUse, - // API unavailable https://github.com/xamarin/maccore/issues/1899 - // [Watch (6, 0), iOS (13, 0)] - // [Field ("HKCharacteristicTypeIdentifierActivityMoveMode")] - // ActivityMoveMode, + [Watch (7,0), iOS (14,0)] + [Field ("HKCharacteristicTypeIdentifierActivityMoveMode")] + ActivityMoveMode, } [Watch (2,0)] @@ -2879,9 +2894,17 @@ namespace HealthKit { [Export ("dateComponentsForCalendar:")] NSDateComponents DateComponentsForCalendar (NSCalendar calendar); + [Watch (7, 0), iOS (14, 0)] + [Export ("activityMoveMode", ArgumentSemantic.Assign)] + HKActivityMoveMode ActivityMoveMode { get; set; } + [Export ("activeEnergyBurned", ArgumentSemantic.Strong)] HKQuantity ActiveEnergyBurned { get; set; } + [Watch (7, 0), iOS (14, 0)] + [Export ("appleMoveTime", ArgumentSemantic.Strong)] + HKQuantity AppleMoveTime { get; set; } + [Export ("appleExerciseTime", ArgumentSemantic.Strong)] HKQuantity AppleExerciseTime { get; set; } @@ -2891,6 +2914,10 @@ namespace HealthKit { [Export ("activeEnergyBurnedGoal", ArgumentSemantic.Strong)] HKQuantity ActiveEnergyBurnedGoal { get; set; } + [Watch (7, 0), iOS (14, 0)] + [Export ("appleMoveTimeGoal", ArgumentSemantic.Strong)] + HKQuantity AppleMoveTimeGoal { get; set; } + [Export ("appleExerciseTimeGoal", ArgumentSemantic.Strong)] HKQuantity AppleExerciseTimeGoal { get; set; } @@ -3454,4 +3481,13 @@ namespace HealthKit { HKFhirVersion PrimaryR4Version { get; } } + [Watch (7,0), iOS (14,0)] + [BaseType (typeof (NSObject))] + [DisableDefaultCtor] + interface HKActivityMoveModeObject : NSCopying, NSSecureCoding { + + [Export ("activityMoveMode")] + HKActivityMoveMode ActivityMoveMode { get; } + } + } diff --git a/src/intents.cs b/src/intents.cs index a6dd4a6f49..e8fdbce2d6 100644 --- a/src/intents.cs +++ b/src/intents.cs @@ -2329,7 +2329,7 @@ namespace Intents { [iOS (14,0), NoMac, NoTV, Watch (7,0)] enum INCarChargingConnectorType { [DefaultEnumValue] - [Field ("INCarChargingConnectorTypeNone")] + [Field (null)] None, [Field ("INCarChargingConnectorTypeJ1772")] @@ -13739,7 +13739,7 @@ namespace Intents { [Export ("initWithCarIdentifier:displayName:year:make:model:color:headUnit:supportedChargingConnectors:")] [DesignatedInitializer] - IntPtr Constructor (string carIdentifier, [NullAllowed] string displayName, [NullAllowed] string year, [NullAllowed] string make, [NullAllowed] string model, [NullAllowed] CGColor color, [NullAllowed] INCarHeadUnit headUnit, [NullAllowed] [BindAs (typeof (INCarChargingConnectorType []))] NSString [] supportedChargingConnectors); + IntPtr Constructor (string carIdentifier, [NullAllowed] string displayName, [NullAllowed] string year, [NullAllowed] string make, [NullAllowed] string model, [NullAllowed] CGColor color, [NullAllowed] INCarHeadUnit headUnit, [BindAs (typeof (INCarChargingConnectorType []))] NSString [] supportedChargingConnectors); [Export ("carIdentifier")] string CarIdentifier { get; } @@ -13763,7 +13763,7 @@ namespace Intents { INCarHeadUnit HeadUnit { get; } [BindAs (typeof (INCarChargingConnectorType []))] - [NullAllowed, Export ("supportedChargingConnectors", ArgumentSemantic.Copy)] + [Export ("supportedChargingConnectors", ArgumentSemantic.Copy)] NSString [] SupportedChargingConnectors { get; } [Export ("setMaximumPower:forChargingConnectorType:")] @@ -13790,25 +13790,6 @@ namespace Intents { string Iap2Identifier { get; } } - [Watch (7,0), NoTV, NoMac, iOS (14,0)] - [BaseType (typeof (NSObject))] - [DisableDefaultCtor] - interface INColor : NSCopying, NSSecureCoding { - - [Export ("initWithRed:green:blue:")] - [DesignatedInitializer] - IntPtr Constructor (double red, double green, double blue); - - [Export ("red")] - double Red { get; } - - [Export ("green")] - double Green { get; } - - [Export ("blue")] - double Blue { get; } - } - [Watch (7,0), NoTV, NoMac, iOS (14,0)] [BaseType (typeof (INIntent))] [DesignatedDefaultCtor] diff --git a/src/metal.cs b/src/metal.cs index 6b1b3208f0..56d266740d 100644 --- a/src/metal.cs +++ b/src/metal.cs @@ -1421,14 +1421,14 @@ namespace Metal { #if XAMCORE_4_0 [Abstract] #endif - [NoiOS, NoTV, Mac (10, 15)] + [iOS (14,0), NoTV, Mac (10, 15)] [Export ("barycentricCoordsSupported")] bool BarycentricCoordsSupported { [Bind ("areBarycentricCoordsSupported")] get; } #if XAMCORE_4_0 [Abstract] #endif - [NoiOS, NoTV, Mac (10, 15)] + [iOS (14,0), NoTV, Mac (10, 15)] [Export ("supportsShaderBarycentricCoordinates")] bool SupportsShaderBarycentricCoordinates { get; } @@ -1979,7 +1979,7 @@ namespace Metal { [Export ("lodAverage")] bool LodAverage { get; set; } - [NoiOS, NoTV, NoWatch, Mac (10,12)] + [iOS (14,0), NoTV, NoWatch, Mac (10,12)] [Export ("borderColor", ArgumentSemantic.Assign)] MTLSamplerBorderColor BorderColor { get; set; } @@ -4822,7 +4822,7 @@ namespace Metal { [Mac (11,0), iOS (14,0), NoTV] [DisableDefaultCtor] [BaseType (typeof (NSObject))] - interface MTLIntersectionFunctionTableDescriptor { + interface MTLIntersectionFunctionTableDescriptor : NSCopying { [Static] [Export ("intersectionFunctionTableDescriptor")] MTLIntersectionFunctionTableDescriptor Create (); @@ -4931,7 +4931,7 @@ namespace Metal { [Mac (11,0), iOS (14,0), NoTV] [DisableDefaultCtor] [BaseType (typeof (NSObject))] - interface MTLVisibleFunctionTableDescriptor { + interface MTLVisibleFunctionTableDescriptor : NSCopying { [Static] [Export ("visibleFunctionTableDescriptor")] MTLVisibleFunctionTableDescriptor Create (); diff --git a/src/watchkit.cs b/src/watchkit.cs index 627dc6fada..d3addac656 100644 --- a/src/watchkit.cs +++ b/src/watchkit.cs @@ -1625,6 +1625,7 @@ namespace WatchKit { SessionInProgress, Expired, ResignedFrontmost, + SuppressedBySystem, Error = -1, } diff --git a/tests/introspection/ApiTypoTest.cs b/tests/introspection/ApiTypoTest.cs index c2f43c2b1b..45b185262e 100644 --- a/tests/introspection/ApiTypoTest.cs +++ b/tests/introspection/ApiTypoTest.cs @@ -1041,9 +1041,14 @@ namespace Introspection default: if (fi.Name.EndsWith ("Library", StringComparison.Ordinal)) { #if __IOS__ - // NFC is currently not available on iPad - if (fi.Name == "CoreNFCLibrary" && UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Pad) - continue; + if (fi.Name == "CoreNFCLibrary") { + // NFC is currently not available on iPad + if (UIDevice.CurrentDevice.UserInterfaceIdiom == UIUserInterfaceIdiom.Pad) + continue; + // Phone works unless Xcode 12 on simulator + if ((Runtime.Arch == Arch.SIMULATOR) && TestRuntime.CheckXcodeVersion (12, 0)) + continue; + } #endif #if __MACOS__ // Only available in macOS 10.15.4+ diff --git a/tests/introspection/iOS/iOSApiCtorInitTest.cs b/tests/introspection/iOS/iOSApiCtorInitTest.cs index 73b17a4090..7380fe7b0b 100644 --- a/tests/introspection/iOS/iOSApiCtorInitTest.cs +++ b/tests/introspection/iOS/iOSApiCtorInitTest.cs @@ -374,6 +374,8 @@ namespace Introspection { case "AVMutableMediaSelection": // crash with xcode 12 beta 3 case "GKTurnBasedMatch": + // crash with xcode 12 GM + case "CSLocalizedString": if (TestRuntime.CheckXcodeVersion (12, 0)) return; break; diff --git a/tests/xtro-sharpie/Makefile b/tests/xtro-sharpie/Makefile index 259f815c6c..5827892eb5 100644 --- a/tests/xtro-sharpie/Makefile +++ b/tests/xtro-sharpie/Makefile @@ -24,7 +24,7 @@ XIOS_ARCH = arm64 XIOS_PCH = iphoneos$(IOS_SDK_VERSION)-$(XIOS_ARCH).pch $(XIOS_PCH): .stamp-check-sharpie - sharpie sdk-db --xcode $(XCODE) -s iphoneos$(IOS_SDK_VERSION) -a $(XIOS_ARCH) + sharpie sdk-db --xcode $(XCODE) -s iphoneos$(IOS_SDK_VERSION) -a $(XIOS_ARCH) -exclude OSLog XWATCHOS ?= $(TOP)/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/lib/32bits/Xamarin.WatchOS.dll @@ -32,7 +32,7 @@ XWATCHOS_ARCH = armv7 XWATCHOS_PCH = watchos$(WATCH_SDK_VERSION)-$(XWATCHOS_ARCH).pch $(XWATCHOS_PCH): .stamp-check-sharpie - sharpie sdk-db --xcode $(XCODE) -s watchos$(WATCH_SDK_VERSION) -a $(XWATCHOS_ARCH) + sharpie sdk-db --xcode $(XCODE) -s watchos$(WATCH_SDK_VERSION) -a $(XWATCHOS_ARCH) -exclude OSLog XTVOS ?= $(TOP)/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/lib/mono/Xamarin.TVOS/Xamarin.TVOS.dll XTVOS_GL ?= $(TOP)/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/lib/mono/Xamarin.TVOS/OpenTK-1.0.dll @@ -40,7 +40,7 @@ XTVOS_ARCH = arm64 XTVOS_PCH = appletvos$(TVOS_SDK_VERSION)-$(XTVOS_ARCH).pch $(XTVOS_PCH): .stamp-check-sharpie - sharpie sdk-db --xcode $(XCODE) -s appletvos$(TVOS_SDK_VERSION) -a $(XTVOS_ARCH) + sharpie sdk-db --xcode $(XCODE) -s appletvos$(TVOS_SDK_VERSION) -a $(XTVOS_ARCH) -exclude OSLog XMAC ?= $(TOP)/_mac-build/Library/Frameworks/Xamarin.Mac.framework/Versions/git/lib/$(XMAC_ARCH)/mobile/Xamarin.Mac.dll @@ -54,23 +54,39 @@ $(XMAC_PCH): .stamp-check-sharpie ios-$(IOS_SDK_VERSION).g.cs: $(XIOS_PCH) +ifdef INCLUDE_IOS gen-ios: ios-$(IOS_SDK_VERSION).g.cs .stamp-check-sharpie sharpie query -bind $(XIOS_PCH) > ios-$(IOS_SDK_VERSION).g.cs +else +gen-ios: ; @true +endif tvos-$(TVOS_SDK_VERSION).g.cs: $(XTVOS_PCH) +ifdef INCLUDE_TVOS gen-tvos: tvos-$(TVOS_SDK_VERSION).g.cs .stamp-check-sharpie sharpie query -bind $(XTVOS_PCH) > tvos-$(TVOS_SDK_VERSION).g.cs +else +gen-tvos: ; @true +endif watchos-$(WATCH_SDK_VERSION).g.cs: $(XWATCHOS_PCH) +ifdef INCLUDE_WATCH gen-watchos: watchos-$(WATCH_SDK_VERSION).g.cs .stamp-check-sharpie sharpie query -bind $(XWATCHOS_PCH) > watchos-$(WATCH_SDK_VERSION).g.cs +else +gen-watchos: ; @true +endif macos-$(OSX_SDK_VERSION).g.cs: $(XMAC_PCH) +ifdef INCLUDE_MAC gen-macos: macos-$(OSX_SDK_VERSION).g.cs .stamp-check-sharpie sharpie query -bind $(XMAC_PCH) > macos-$(OSX_SDK_VERSION).g.cs +else +gen-macos: ; @true +endif gen-all: gen-ios gen-tvos gen-watchos gen-macos @@ -84,17 +100,33 @@ report: build report-short: JENKINS_SERVER_COOKIE=1 make report +ifdef INCLUDE_IOS classify-ios: $(MONO) bin/Debug/xtro-sharpie.exe $(XIOS_PCH) $(XIOS) $(XIOS_GL) +else +classify-ios: ; @true +endif +ifdef INCLUDE_TVOS classify-tvos: $(MONO) bin/Debug/xtro-sharpie.exe $(XTVOS_PCH) $(XTVOS) $(XTVOS_GL) +else +classify-tvos: ; @true +endif +ifdef INCLUDE_WATCH classify-watchos: $(MONO) bin/Debug/xtro-sharpie.exe $(XWATCHOS_PCH) $(XWATCHOS) +else +classify-watchos: ; @true +endif +ifdef INCLUDE_MAC classify-macos: $(MONO) bin/Debug/xtro-sharpie.exe $(XMAC_PCH) $(XMAC) +else +classify-macos: ; @true +endif classify: build $(XIOS_PCH) $(XWATCHOS_PCH) $(XTVOS_PCH) $(XMAC_PCH) rm -f *.unclassified diff --git a/tests/xtro-sharpie/common-CoreFoundation.ignore b/tests/xtro-sharpie/common-CoreFoundation.ignore index 77c3e8a19f..1f32d04765 100644 --- a/tests/xtro-sharpie/common-CoreFoundation.ignore +++ b/tests/xtro-sharpie/common-CoreFoundation.ignore @@ -423,7 +423,6 @@ !missing-pinvoke! CFBitVectorSetBitAtIndex is not bound !missing-pinvoke! CFBitVectorSetBits is not bound !missing-pinvoke! CFBitVectorSetCount is not bound -!missing-pinvoke! CFBundleCloseBundleResourceMap is not bound !missing-pinvoke! CFBundleCopyBundleLocalizations is not bound !missing-pinvoke! CFBundleCopyExecutableArchitecturesForURL is not bound !missing-pinvoke! CFBundleCopyInfoDictionaryInDirectory is not bound @@ -437,8 +436,6 @@ !missing-pinvoke! CFBundleGetValueForInfoDictionaryKey is not bound !missing-pinvoke! CFBundleGetVersionNumber is not bound !missing-pinvoke! CFBundleLoadExecutable is not bound -!missing-pinvoke! CFBundleOpenBundleResourceFiles is not bound -!missing-pinvoke! CFBundleOpenBundleResourceMap is not bound !missing-pinvoke! CFCalendarAddComponents is not bound !missing-pinvoke! CFCalendarComposeAbsoluteTime is not bound !missing-pinvoke! CFCalendarCopyCurrent is not bound diff --git a/tests/xtro-sharpie/common-CoreMIDI.ignore b/tests/xtro-sharpie/common-CoreMIDI.ignore index 9ec2592b73..9e654dcb53 100644 --- a/tests/xtro-sharpie/common-CoreMIDI.ignore +++ b/tests/xtro-sharpie/common-CoreMIDI.ignore @@ -56,7 +56,6 @@ !missing-pinvoke! MIDIDeviceCreate is not bound !missing-pinvoke! MIDIDeviceDispose is not bound !missing-pinvoke! MIDIDeviceRemoveEntity is not bound -!missing-pinvoke! MIDIDriverEnableMonitoring is not bound !missing-pinvoke! MIDIEntityAddOrRemoveEndpoints is not bound !missing-pinvoke! MIDIExternalDeviceCreate is not bound !missing-pinvoke! MIDIGetDriverDeviceList is not bound diff --git a/tests/xtro-sharpie/common-Metal.ignore b/tests/xtro-sharpie/common-Metal.ignore index b18f8299d3..62e6453d58 100644 --- a/tests/xtro-sharpie/common-Metal.ignore +++ b/tests/xtro-sharpie/common-Metal.ignore @@ -36,7 +36,6 @@ !incorrect-protocol-member! MTLDevice::getDefaultSamplePositions:count: is REQUIRED and should be abstract !incorrect-protocol-member! MTLDevice::heapBufferSizeAndAlignWithLength:options: is REQUIRED and should be abstract !incorrect-protocol-member! MTLDevice::heapTextureSizeAndAlignWithDescriptor: is REQUIRED and should be abstract -!incorrect-protocol-member! MTLDevice::isRemovable is REQUIRED and should be abstract !incorrect-protocol-member! MTLDevice::maxThreadgroupMemoryLength is REQUIRED and should be abstract !incorrect-protocol-member! MTLDevice::minimumLinearTextureAlignmentForPixelFormat: is REQUIRED and should be abstract !incorrect-protocol-member! MTLDevice::newArgumentEncoderWithArguments: is REQUIRED and should be abstract diff --git a/tests/xtro-sharpie/common-PDFKit.ignore b/tests/xtro-sharpie/common-PDFKit.ignore index ed448e9437..0dccdd9898 100644 --- a/tests/xtro-sharpie/common-PDFKit.ignore +++ b/tests/xtro-sharpie/common-PDFKit.ignore @@ -1,41 +1,2 @@ # Field used in an EventArg based structure that are in documentation but not in headers !unknown-field! PDFAnnotationHit bound - -# Deprecated -!missing-selector! PDFAnnotation::initWithDictionary:forPage: not bound -!missing-field! kPDFAnnotationKey_Action not bound -!missing-field! kPDFAnnotationKey_AdditionalActions not bound -!missing-field! kPDFAnnotationKey_AppearanceDictionary not bound -!missing-field! kPDFAnnotationKey_AppearanceState not bound -!missing-field! kPDFAnnotationKey_Border not bound -!missing-field! kPDFAnnotationKey_BorderStyle not bound -!missing-field! kPDFAnnotationKey_Color not bound -!missing-field! kPDFAnnotationKey_Contents not bound -!missing-field! kPDFAnnotationKey_Date not bound -!missing-field! kPDFAnnotationKey_DefaultAppearance not bound -!missing-field! kPDFAnnotationKey_Destination not bound -!missing-field! kPDFAnnotationKey_Flags not bound -!missing-field! kPDFAnnotationKey_HighlightingMode not bound -!missing-field! kPDFAnnotationKey_IconName not bound -!missing-field! kPDFAnnotationKey_Inklist not bound -!missing-field! kPDFAnnotationKey_InteriorColor not bound -!missing-field! kPDFAnnotationKey_LineEndingStyles not bound -!missing-field! kPDFAnnotationKey_LinePoints not bound -!missing-field! kPDFAnnotationKey_Name not bound -!missing-field! kPDFAnnotationKey_Open not bound -!missing-field! kPDFAnnotationKey_Page not bound -!missing-field! kPDFAnnotationKey_Parent not bound -!missing-field! kPDFAnnotationKey_Popup not bound -!missing-field! kPDFAnnotationKey_Quadding not bound -!missing-field! kPDFAnnotationKey_QuadPoints not bound -!missing-field! kPDFAnnotationKey_Rect not bound -!missing-field! kPDFAnnotationKey_Subtype not bound -!missing-field! kPDFAnnotationKey_TextLabel not bound -!missing-field! kPDFAnnotationKey_WidgetAppearanceDictionary not bound -!missing-field! kPDFAnnotationKey_WidgetDefaultValue not bound -!missing-field! kPDFAnnotationKey_WidgetFieldFlags not bound -!missing-field! kPDFAnnotationKey_WidgetFieldType not bound -!missing-field! kPDFAnnotationKey_WidgetMaxLen not bound -!missing-field! kPDFAnnotationKey_WidgetOptions not bound -!missing-field! kPDFAnnotationKey_WidgetTextLabelUI not bound -!missing-field! kPDFAnnotationKey_WidgetValue not bound \ No newline at end of file diff --git a/tests/xtro-sharpie/iOS-Metal.ignore b/tests/xtro-sharpie/iOS-Metal.ignore index f82e2995c3..5320b0cdd1 100644 --- a/tests/xtro-sharpie/iOS-Metal.ignore +++ b/tests/xtro-sharpie/iOS-Metal.ignore @@ -1,7 +1,3 @@ -## only on macOS (but removing would be a breaking change) -!unknown-native-enum! MTLSamplerBorderColor bound - - ## unsorted !incorrect-protocol-member! MTLComputeCommandEncoder::setImageblockWidth:height: is REQUIRED and should be abstract @@ -174,3 +170,5 @@ !incorrect-protocol-member! MTLFunction::options is REQUIRED and should be abstract !incorrect-protocol-member! MTLRenderCommandEncoder::sampleCountersInBuffer:atSampleIndex:withBarrier: is REQUIRED and should be abstract !incorrect-protocol-member! MTLIndirectComputeCommand::setImageblockWidth:height: is REQUIRED and should be abstract +!incorrect-protocol-member! MTLDevice::areBarycentricCoordsSupported is REQUIRED and should be abstract +!incorrect-protocol-member! MTLDevice::supportsShaderBarycentricCoordinates is REQUIRED and should be abstract diff --git a/tests/xtro-sharpie/iOS-OSLog.ignore b/tests/xtro-sharpie/iOS-OSLog.ignore deleted file mode 100644 index ab314228ca..0000000000 --- a/tests/xtro-sharpie/iOS-OSLog.ignore +++ /dev/null @@ -1,43 +0,0 @@ -## Will save these bindings for later - https://github.com/xamarin/xamarin-macios/issues/9480 - -!missing-enum! OSLogEntryLogLevel not bound -!missing-enum! OSLogEntrySignpostType not bound -!missing-enum! OSLogEntryStoreCategory not bound -!missing-enum! OSLogEnumeratorOptions not bound -!missing-enum! OSLogMessageComponentArgumentCategory not bound -!missing-enum! OSLogStoreScope not bound -!missing-protocol! OSLogEntryFromProcess not bound -!missing-protocol! OSLogEntryWithPayload not bound -!missing-selector! +OSLogStore::storeWithScope:error: not bound -!missing-selector! +OSLogStore::storeWithURL:error: not bound -!missing-selector! OSLogEntry::composedMessage not bound -!missing-selector! OSLogEntry::date not bound -!missing-selector! OSLogEntry::storeCategory not bound -!missing-selector! OSLogEntryActivity::parentActivityIdentifier not bound -!missing-selector! OSLogEntryLog::level not bound -!missing-selector! OSLogEntrySignpost::signpostIdentifier not bound -!missing-selector! OSLogEntrySignpost::signpostName not bound -!missing-selector! OSLogEntrySignpost::signpostType not bound -!missing-selector! OSLogMessageComponent::argumentCategory not bound -!missing-selector! OSLogMessageComponent::argumentDataValue not bound -!missing-selector! OSLogMessageComponent::argumentDoubleValue not bound -!missing-selector! OSLogMessageComponent::argumentInt64Value not bound -!missing-selector! OSLogMessageComponent::argumentNumberValue not bound -!missing-selector! OSLogMessageComponent::argumentStringValue not bound -!missing-selector! OSLogMessageComponent::argumentUInt64Value not bound -!missing-selector! OSLogMessageComponent::formatSubstring not bound -!missing-selector! OSLogMessageComponent::placeholder not bound -!missing-selector! OSLogStore::entriesEnumeratorAndReturnError: not bound -!missing-selector! OSLogStore::entriesEnumeratorWithOptions:position:predicate:error: not bound -!missing-selector! OSLogStore::positionWithDate: not bound -!missing-selector! OSLogStore::positionWithTimeIntervalSinceEnd: not bound -!missing-selector! OSLogStore::positionWithTimeIntervalSinceLatestBoot: not bound -!missing-type! OSLogEntry not bound -!missing-type! OSLogEntryActivity not bound -!missing-type! OSLogEntryBoundary not bound -!missing-type! OSLogEntryLog not bound -!missing-type! OSLogEntrySignpost not bound -!missing-type! OSLogEnumerator not bound -!missing-type! OSLogMessageComponent not bound -!missing-type! OSLogPosition not bound -!missing-type! OSLogStore not bound diff --git a/tests/xtro-sharpie/macOS-CoreFoundation.ignore b/tests/xtro-sharpie/macOS-CoreFoundation.ignore index 23e7fe2a1c..732af966c9 100644 --- a/tests/xtro-sharpie/macOS-CoreFoundation.ignore +++ b/tests/xtro-sharpie/macOS-CoreFoundation.ignore @@ -4,6 +4,10 @@ ## dlfcn.h !unknown-pinvoke! dladdr bound +## deprecated in macOS 10.15 +!missing-pinvoke! CFBundleCloseBundleResourceMap is not bound +!missing-pinvoke! CFBundleOpenBundleResourceFiles is not bound +!missing-pinvoke! CFBundleOpenBundleResourceMap is not bound ## unsorted diff --git a/tests/xtro-sharpie/macOS-CoreMIDI.ignore b/tests/xtro-sharpie/macOS-CoreMIDI.ignore index 84e215098a..df0aa7387e 100644 --- a/tests/xtro-sharpie/macOS-CoreMIDI.ignore +++ b/tests/xtro-sharpie/macOS-CoreMIDI.ignore @@ -11,6 +11,7 @@ !missing-pinvoke! MIDISetSerialPortOwner is not bound !missing-pinvoke! MIDIGetSerialPortOwner is not bound !missing-pinvoke! MIDIGetSerialPortDrivers is not bound +!missing-pinvoke! MIDIDriverEnableMonitoring is not bound !missing-field! kMIDIDriverPropertyUsesSerial not bound !missing-field! kMIDIPropertyFactoryPatchNameFile not bound diff --git a/tests/xtro-sharpie/macOS-Metal.ignore b/tests/xtro-sharpie/macOS-Metal.ignore index fa5e0a9a32..9f85ae5099 100644 --- a/tests/xtro-sharpie/macOS-Metal.ignore +++ b/tests/xtro-sharpie/macOS-Metal.ignore @@ -192,3 +192,4 @@ !incorrect-protocol-member! MTLRenderPipelineState::maxTotalThreadsPerThreadgroup is REQUIRED and should be abstract !incorrect-protocol-member! MTLRenderPipelineState::threadgroupSizeMatchesTileSize is REQUIRED and should be abstract !incorrect-protocol-member! MTLIndirectComputeCommand::setImageblockWidth:height: is REQUIRED and should be abstract +!incorrect-protocol-member! MTLDevice::isRemovable is REQUIRED and should be abstract diff --git a/tests/xtro-sharpie/macOS-PDFKit.ignore b/tests/xtro-sharpie/macOS-PDFKit.ignore index 254902805d..1c9ef386e9 100644 --- a/tests/xtro-sharpie/macOS-PDFKit.ignore +++ b/tests/xtro-sharpie/macOS-PDFKit.ignore @@ -1,3 +1,41 @@ +# Deprecated +!missing-selector! PDFAnnotation::initWithDictionary:forPage: not bound +!missing-field! kPDFAnnotationKey_Action not bound +!missing-field! kPDFAnnotationKey_AdditionalActions not bound +!missing-field! kPDFAnnotationKey_AppearanceDictionary not bound +!missing-field! kPDFAnnotationKey_AppearanceState not bound +!missing-field! kPDFAnnotationKey_Border not bound +!missing-field! kPDFAnnotationKey_BorderStyle not bound +!missing-field! kPDFAnnotationKey_Color not bound +!missing-field! kPDFAnnotationKey_Contents not bound +!missing-field! kPDFAnnotationKey_Date not bound +!missing-field! kPDFAnnotationKey_DefaultAppearance not bound +!missing-field! kPDFAnnotationKey_Destination not bound +!missing-field! kPDFAnnotationKey_Flags not bound +!missing-field! kPDFAnnotationKey_HighlightingMode not bound +!missing-field! kPDFAnnotationKey_IconName not bound +!missing-field! kPDFAnnotationKey_Inklist not bound +!missing-field! kPDFAnnotationKey_InteriorColor not bound +!missing-field! kPDFAnnotationKey_LineEndingStyles not bound +!missing-field! kPDFAnnotationKey_LinePoints not bound +!missing-field! kPDFAnnotationKey_Name not bound +!missing-field! kPDFAnnotationKey_Open not bound +!missing-field! kPDFAnnotationKey_Page not bound +!missing-field! kPDFAnnotationKey_Parent not bound +!missing-field! kPDFAnnotationKey_Popup not bound +!missing-field! kPDFAnnotationKey_Quadding not bound +!missing-field! kPDFAnnotationKey_QuadPoints not bound +!missing-field! kPDFAnnotationKey_Rect not bound +!missing-field! kPDFAnnotationKey_Subtype not bound +!missing-field! kPDFAnnotationKey_TextLabel not bound +!missing-field! kPDFAnnotationKey_WidgetAppearanceDictionary not bound +!missing-field! kPDFAnnotationKey_WidgetDefaultValue not bound +!missing-field! kPDFAnnotationKey_WidgetFieldFlags not bound +!missing-field! kPDFAnnotationKey_WidgetFieldType not bound +!missing-field! kPDFAnnotationKey_WidgetMaxLen not bound +!missing-field! kPDFAnnotationKey_WidgetOptions not bound +!missing-field! kPDFAnnotationKey_WidgetTextLabelUI not bound +!missing-field! kPDFAnnotationKey_WidgetValue not bound # Initial result from new rule missing-null-allowed !missing-null-allowed! 'AppKit.NSView PdfKit.PdfView::get_DocumentView()' is missing an [NullAllowed] on return type diff --git a/tests/xtro-sharpie/tvOS-OSLog.ignore b/tests/xtro-sharpie/tvOS-OSLog.ignore deleted file mode 100644 index ab314228ca..0000000000 --- a/tests/xtro-sharpie/tvOS-OSLog.ignore +++ /dev/null @@ -1,43 +0,0 @@ -## Will save these bindings for later - https://github.com/xamarin/xamarin-macios/issues/9480 - -!missing-enum! OSLogEntryLogLevel not bound -!missing-enum! OSLogEntrySignpostType not bound -!missing-enum! OSLogEntryStoreCategory not bound -!missing-enum! OSLogEnumeratorOptions not bound -!missing-enum! OSLogMessageComponentArgumentCategory not bound -!missing-enum! OSLogStoreScope not bound -!missing-protocol! OSLogEntryFromProcess not bound -!missing-protocol! OSLogEntryWithPayload not bound -!missing-selector! +OSLogStore::storeWithScope:error: not bound -!missing-selector! +OSLogStore::storeWithURL:error: not bound -!missing-selector! OSLogEntry::composedMessage not bound -!missing-selector! OSLogEntry::date not bound -!missing-selector! OSLogEntry::storeCategory not bound -!missing-selector! OSLogEntryActivity::parentActivityIdentifier not bound -!missing-selector! OSLogEntryLog::level not bound -!missing-selector! OSLogEntrySignpost::signpostIdentifier not bound -!missing-selector! OSLogEntrySignpost::signpostName not bound -!missing-selector! OSLogEntrySignpost::signpostType not bound -!missing-selector! OSLogMessageComponent::argumentCategory not bound -!missing-selector! OSLogMessageComponent::argumentDataValue not bound -!missing-selector! OSLogMessageComponent::argumentDoubleValue not bound -!missing-selector! OSLogMessageComponent::argumentInt64Value not bound -!missing-selector! OSLogMessageComponent::argumentNumberValue not bound -!missing-selector! OSLogMessageComponent::argumentStringValue not bound -!missing-selector! OSLogMessageComponent::argumentUInt64Value not bound -!missing-selector! OSLogMessageComponent::formatSubstring not bound -!missing-selector! OSLogMessageComponent::placeholder not bound -!missing-selector! OSLogStore::entriesEnumeratorAndReturnError: not bound -!missing-selector! OSLogStore::entriesEnumeratorWithOptions:position:predicate:error: not bound -!missing-selector! OSLogStore::positionWithDate: not bound -!missing-selector! OSLogStore::positionWithTimeIntervalSinceEnd: not bound -!missing-selector! OSLogStore::positionWithTimeIntervalSinceLatestBoot: not bound -!missing-type! OSLogEntry not bound -!missing-type! OSLogEntryActivity not bound -!missing-type! OSLogEntryBoundary not bound -!missing-type! OSLogEntryLog not bound -!missing-type! OSLogEntrySignpost not bound -!missing-type! OSLogEnumerator not bound -!missing-type! OSLogMessageComponent not bound -!missing-type! OSLogPosition not bound -!missing-type! OSLogStore not bound diff --git a/tests/xtro-sharpie/watchOS-Intents.ignore b/tests/xtro-sharpie/watchOS-Intents.ignore index 5de1a6b207..d5f0863e09 100644 --- a/tests/xtro-sharpie/watchOS-Intents.ignore +++ b/tests/xtro-sharpie/watchOS-Intents.ignore @@ -29,3 +29,13 @@ !unknown-native-enum! INRelativeReference bound !unknown-native-enum! INRelativeSetting bound !unknown-type! INParameter bound + +## Changes introduced in Xcode 12 GM for iOS but not reflected in WatchOS we can bring them in later if needed +!missing-field! INCarChargingConnectorTypeNone not bound +!missing-null-allowed! 'Intents.INCarChargingConnectorType[] Intents.INCar::get_SupportedChargingConnectors()' is missing an [NullAllowed] on return type +!missing-null-allowed! 'System.Void Intents.INCar::.ctor(System.String,System.String,System.String,System.String,System.String,CoreGraphics.CGColor,Intents.INCarHeadUnit,Intents.INCarChargingConnectorType[])' is missing an [NullAllowed] on parameter #7 +!missing-selector! INColor::blue not bound +!missing-selector! INColor::green not bound +!missing-selector! INColor::initWithRed:green:blue: not bound +!missing-selector! INColor::red not bound +!missing-type! INColor not bound diff --git a/tests/xtro-sharpie/xtro-sanity/Sanitizer.cs b/tests/xtro-sharpie/xtro-sanity/Sanitizer.cs index b1a1720b20..63d0c34eef 100644 --- a/tests/xtro-sharpie/xtro-sanity/Sanitizer.cs +++ b/tests/xtro-sharpie/xtro-sanity/Sanitizer.cs @@ -5,7 +5,39 @@ using System.IO; namespace Extrospection { class Sanitizer { - static readonly string [] Platforms = new [] { "iOS", "tvOS", "watchOS", "macOS" }; + static List platforms; + + static List Platforms { + get { + if (platforms != null) + return platforms; + + platforms = new List (4); + foreach (var line in File.ReadAllLines ("../../Make.config")) { + var eq = line.IndexOf ('='); + if (eq == -1) + continue; + if (!line.StartsWith ("INCLUDE_", StringComparison.Ordinal)) + continue; + + switch (line.Substring (0, eq)) { + case "INCLUDE_IOS": + platforms.Add ("iOS"); + break; + case "INCLUDE_TVOS": + platforms.Add ("tvOS"); + break; + case "INCLUDE_WATCH": + platforms.Add ("watchOS"); + break; + case "INCLUDE_MAC": + platforms.Add ("macOS"); + break; + } + } + return platforms; + } + } static bool IsEntry (string line) { @@ -71,6 +103,8 @@ namespace Extrospection { static void NoIgnoredTodo () { foreach (var file in Directory.GetFiles (directory, "*.todo")) { + if (!IsIncluded (file)) + continue; var last = file.LastIndexOf ('-'); var fx = file.Substring (last + 1, file.Length - last - 6); // check if it's in common or in the same platform @@ -95,9 +129,21 @@ namespace Extrospection { } } + static bool IsIncluded (string file) + { + var name = Path.GetFileName (file); + foreach (var p in Platforms) { + if (name.StartsWith (p, StringComparison.Ordinal)) + return true; + } + return false; + } + static void NoFixedTodo () { foreach (var file in Directory.GetFiles (directory, "*.todo")) { + if (!IsIncluded (file)) + continue; var last = file.LastIndexOf ('-'); var fx = file.Substring (last + 1, file.Length - last - 6); var raw = Path.ChangeExtension (file, ".raw"); @@ -133,6 +179,7 @@ namespace Extrospection { public static int Main (string [] args) { directory = args.Length == 0 ? "." : args [0]; + Environment.CurrentDirectory = directory; // cache stuff foreach (var file in Directory.GetFiles (directory, "common-*.ignore")) { @@ -151,6 +198,8 @@ namespace Extrospection { CorrectEntries (common, $"common-{fx}.ignore"); } foreach (var file in Directory.GetFiles (directory, "*.ignore")) { + if (!IsIncluded (file)) + continue; var filename = Path.GetFileName (file); // already processed from cache - don't reload them if (filename.StartsWith ("common-", StringComparison.Ordinal)) @@ -181,7 +230,7 @@ namespace Extrospection { var fx = kvp.Key; var common = kvp.Value; //ExistingCommonEntries (common, $"common-{fx}.ignore"); - List [] raws = new List [Platforms.Length]; + List [] raws = new List [Platforms.Count]; for (int i=0; i < raws.Length; i++) { var fname = Path.Combine (directory, $"{Platforms[i]}-{fx}.raw"); if (File.Exists (fname)) @@ -213,6 +262,8 @@ namespace Extrospection { } // * a platform ignore must existing in it's corresponding raw file foreach (var file in Directory.GetFiles (directory, "*.ignore")) { + if (!IsIncluded (file)) + continue; var shortname = Path.GetFileName (file); if (shortname.StartsWith ("common-", StringComparison.Ordinal)) continue; diff --git a/tools/common/Frameworks.cs b/tools/common/Frameworks.cs index 1d2d6c01ac..ea142e0a6e 100644 --- a/tools/common/Frameworks.cs +++ b/tools/common/Frameworks.cs @@ -547,7 +547,7 @@ public class Frameworks : Dictionary // This checks if a framework is unavailable due to bugs in Xcode (such as Apple forgetting to ship a library or headers for a framework, which seems to happen at least once a year). public static bool IsFrameworkBroken (Application app, string framework) { - if (app.IsSimulatorBuild && Driver.XcodeProductVersion == "12A8189n" /* Xcode 12 beta 6 */) { + if (app.IsSimulatorBuild) { switch (framework) { // Apple seems to have forgotten to ship the several libraries for the simulator in Xcode 12 betas (it's still available for device builds). // https://github.com/xamarin/maccore/issues/2266 @@ -563,7 +563,7 @@ public class Frameworks : Dictionary default: return false; } - Driver.Log (1, $"Can't use '{framework}' in the simulator because Apple didn't ship it with Xcode 12 beta {Driver.XcodeProductVersion}"); + Driver.Log (1, $"Can't use '{framework}' in the simulator because Apple didn't ship it with Xcode 12 {Driver.XcodeProductVersion}"); return true; } return false; diff --git a/tools/mlaunch/Makefile b/tools/mlaunch/Makefile index 324e9a59e3..a83fa00d37 100644 --- a/tools/mlaunch/Makefile +++ b/tools/mlaunch/Makefile @@ -6,6 +6,12 @@ COLOR_GREEN:=$(shell tput setaf 120 2>/dev/null) COLOR_CLEAR:=$(shell tput sgr0 2>/dev/null) ifdef ENABLE_XAMARIN +ifdef INCLUDE_MAC +ENABLE_MLAUNCH=1 +endif +endif + +ifdef ENABLE_MLAUNCH all-local install-local clean-local:: $(MAKE) -C $(MACCORE_PATH)/tools/mlaunch $@ else @@ -14,7 +20,7 @@ all-local install-local:: $(Q) $(CP) -R $(MACIOS_BINARIES_PATH)/mlaunch/lib/mlaunch $(IOS_DESTDIR)/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/lib endif -ifdef ENABLE_XAMARIN +ifdef ENABLE_MLAUNCH publish: $(Q) mkdir -p $(MACIOS_BINARIES_PATH)/mlaunch/bin $(Q) mkdir -p $(MACIOS_BINARIES_PATH)/mlaunch/lib