[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: 87a96d21c9..ba332d4d07

Co-authored-by: Sebastien Pouliot <sebastien.pouliot@microsoft.com>
This commit is contained in:
Alex Soto 2020-09-16 05:41:44 -04:00 коммит произвёл GitHub
Родитель a0797eb822
Коммит bfc98f8059
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
31 изменённых файлов: 292 добавлений и 190 удалений

Просмотреть файл

@ -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

Просмотреть файл

@ -17,8 +17,8 @@
<string>10.13</string>
<string>10.14</string>
<string>10.15</string>
<string>10.16</string>
<string>11.0</string>
<!-- <string>10.16</string> --> <!-- Reverted by Xcode 12 GM -->
<!-- <string>11.0</string> -->
</array>
</dict>
<key>RecommendedXcodeVersion</key>

Просмотреть файл

@ -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

Просмотреть файл

@ -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);

Просмотреть файл

@ -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");
}

Просмотреть файл

@ -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)]

Просмотреть файл

@ -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,

Просмотреть файл

@ -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<NSString> Aliases { get; }

Просмотреть файл

@ -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; }
}

Просмотреть файл

@ -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; }
}
}

Просмотреть файл

@ -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]

Просмотреть файл

@ -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 ();

Просмотреть файл

@ -1625,6 +1625,7 @@ namespace WatchKit {
SessionInProgress,
Expired,
ResignedFrontmost,
SuppressedBySystem,
Error = -1,
}

Просмотреть файл

@ -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+

Просмотреть файл

@ -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;

Просмотреть файл

@ -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

Просмотреть файл

@ -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

Просмотреть файл

@ -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

Просмотреть файл

@ -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

Просмотреть файл

@ -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

Просмотреть файл

@ -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

Просмотреть файл

@ -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

Просмотреть файл

@ -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

Просмотреть файл

@ -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

Просмотреть файл

@ -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

Просмотреть файл

@ -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

Просмотреть файл

@ -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

Просмотреть файл

@ -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

Просмотреть файл

@ -5,7 +5,39 @@ using System.IO;
namespace Extrospection {
class Sanitizer {
static readonly string [] Platforms = new [] { "iOS", "tvOS", "watchOS", "macOS" };
static List<string> platforms;
static List<string> Platforms {
get {
if (platforms != null)
return platforms;
platforms = new List<string> (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<string> [] raws = new List<string> [Platforms.Length];
List<string> [] raws = new List<string> [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;

Просмотреть файл

@ -547,7 +547,7 @@ public class Frameworks : Dictionary <string, Framework>
// 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 <string, Framework>
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;

Просмотреть файл

@ -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