From f1eec3aaec895d06fce7c6ce428754f43d50442c Mon Sep 17 00:00:00 2001 From: Jonathan Pryor Date: Wed, 14 Sep 2016 11:47:45 -0400 Subject: [PATCH] Bump to mono/mono-4.8.0-branch/9e164326, Java.Interop/a1d3ecc8 Mono 4.8 has new SGEN bridge performance characteristics and semantics, requiring that we bump the SGEN Bridge Version to 5. Additionally, Mono 4.8 is using Cecil/master, which is API INCOMPATIBLE with Cecil 0.9.6, and Mono sources are included in `Xamarin.Android.Build.Tasks.dll`. We could attempt to address the Cecil incompatibility by building Mono's `external/cecil` projects, but that doesn't work because Java.Interop assemblies *also* use Cecil, and `Xamarin.Android.Build.Tasks.dll` uses `Java.Interop.Tools.Cecil.dll`, which uses Cecil via NuGet package, so everything gets very intermixed and confusing if Java.Interop tries to use e.g. Cecil 0.9.6 via nuget while xamarin-android attempts to use Cecil via Mono's source. Skip that problem, and bump to Java.Interop/a1d3ecc8, which in turn uses the Cecil 0.10.0-beta1-v2 *Preview* NuGet package, which is API compoatible with Cecil/master and mono/master. Additionally, update xamarin-android's Cecil 0.9.6 use to likewise use Cecil 0.10.0-beta1-v2. This allows xamarin-android to build while using Mono 4.8 sources. Finally, there's lots of "unrelated noise" in this patch, largely because every time I add a project to the solution via Xamarin Studio, Xamarin Studio decides to modify EVERY PROJECT IN THE REPO. Preserve some of these changes -- and "fix" others -- so that I can reduce the "visual noise" of future Xamarin Studio changes. --- .gitmodules | 2 +- Configuration.props | 3 +- README.md | 4 +- build-tools/libzip/libzip.mdproj | 2 +- .../unix-distribution-setup.mdproj | 14 +- .../unix-distribution-setup.targets | 18 +++ external/Java.Interop | 2 +- external/mono | 2 +- src/Mono.Android/Mono.Android.targets | 4 +- src/Mono.Data.Sqlite/Mono.Data.Sqlite.csproj | 3 + src/Mono.Posix/Mono.Posix.csproj | 3 + src/OpenTK-1.0/OpenTK.csproj | 4 +- .../System.Drawing.Primitives.csproj | 4 + .../Linker/MonoDroid.Tuner/Extensions.cs | 3 +- .../MonoDroid.Tuner/FixAbstractMethodsStep.cs | 3 +- .../PreserveLinqExpressions.cs | 4 +- .../Xamarin.Android.Build.Tasks.csproj | 150 +++++++++--------- .../packages.config | 6 +- .../Xamarin.Android.NUnitLite.csproj | 2 + .../Xamarin.Android.Tools.Aidl.csproj | 8 +- .../packages.config | 2 +- 21 files changed, 134 insertions(+), 109 deletions(-) create mode 100644 build-tools/unix-distribution-setup/unix-distribution-setup.targets diff --git a/.gitmodules b/.gitmodules index 4cf40ed9e7c..0c3ab256194 100644 --- a/.gitmodules +++ b/.gitmodules @@ -5,7 +5,7 @@ [submodule "external/mono"] path = external/mono url = https://github.com/mono/mono.git - branch = mono-4.6.0-branch + branch = mono-4.8.0-branch [submodule "external/mxe"] path = external/mxe url = https://github.com/xamarin/mxe.git diff --git a/Configuration.props b/Configuration.props index 33af16b4516..fdb4230dc3c 100644 --- a/Configuration.props +++ b/Configuration.props @@ -25,7 +25,8 @@ true -j$(HostCpuCount) mono - 4 + --debug=casts + 5 $(MSBuildThisFileDirectory)bin\$(Configuration)\lib\xbuild-frameworks $(HOMEDRIVE)$(HOMEPATH) 24 diff --git a/README.md b/README.md index 46292f4bb4e..af1fe2151d3 100644 --- a/README.md +++ b/README.md @@ -97,8 +97,8 @@ Overridable MSBuild properties include: * `$(MonoSgenBridgeVersion)`: The Mono SGEN Bridge version to support. Valid values include: - * `4`: Mono 4.6 support. This is the default. - * `5`: Mono 4.8 support. + * `4`: Mono 4.6 support. + * `5`: Mono 4.8 support. This is the default. # Build Requirements diff --git a/build-tools/libzip/libzip.mdproj b/build-tools/libzip/libzip.mdproj index e67b1c06abb..a3c705e52d2 100644 --- a/build-tools/libzip/libzip.mdproj +++ b/build-tools/libzip/libzip.mdproj @@ -13,7 +13,7 @@ - + ResolveReferences; _BuildUnlessCached diff --git a/build-tools/unix-distribution-setup/unix-distribution-setup.mdproj b/build-tools/unix-distribution-setup/unix-distribution-setup.mdproj index 557fb4e89d9..3d87913398f 100644 --- a/build-tools/unix-distribution-setup/unix-distribution-setup.mdproj +++ b/build-tools/unix-distribution-setup/unix-distribution-setup.mdproj @@ -6,6 +6,7 @@ GenericProject {2CF172E5-BDAE-4ABA-8BC8-08040ED3E77A} + ..\..\bin\Debug\ @@ -13,17 +14,6 @@ ..\..\bin\Release\ - - - - - - - - - - + diff --git a/build-tools/unix-distribution-setup/unix-distribution-setup.targets b/build-tools/unix-distribution-setup/unix-distribution-setup.targets new file mode 100644 index 00000000000..edca94d5465 --- /dev/null +++ b/build-tools/unix-distribution-setup/unix-distribution-setup.targets @@ -0,0 +1,18 @@ + + + + + + + + + + + + diff --git a/external/Java.Interop b/external/Java.Interop index 6f7f5203e9a..a1d3ecc8ba6 160000 --- a/external/Java.Interop +++ b/external/Java.Interop @@ -1 +1 @@ -Subproject commit 6f7f5203e9ab00b0e4fbcc33fbb9488f61a3a4bb +Subproject commit a1d3ecc8ba6e67b96ae1c633194b0e78c2ac5c23 diff --git a/external/mono b/external/mono index b13663f353c..9e164326979 160000 --- a/external/mono +++ b/external/mono @@ -1 +1 @@ -Subproject commit b13663f353cfb0d47040f09dab1385a47aea029b +Subproject commit 9e1643269799485b4c56c159814ddb278e99ca41 diff --git a/src/Mono.Android/Mono.Android.targets b/src/Mono.Android/Mono.Android.targets index 8d65a4dfba9..5b4db9855ff 100644 --- a/src/Mono.Android/Mono.Android.targets +++ b/src/Mono.Android/Mono.Android.targets @@ -94,13 +94,13 @@ $(MSBuildProjectDirectory)\$(OutputPath) - $(JavaInteropFullPath)\bin\$(Configuration)\jcw-gen.exe + "$(JavaInteropFullPath)\bin\$(Configuration)\jcw-gen.exe" -v10 <_LibDirs>-L "$(OutputPathAbs)" -L "$(OutputPathAbs)..\v1.0\" -L "$(OutputPathAbs)..\v1.0\Facades" <_Assembly>"$(OutputPathAbs)$(AssemblyName).dll" <_Out>-o "$(MSBuildProjectDirectory)\$(IntermediateOutputPath)jcw\src" <_JavaSources Include="$(IntermediateOutputPath)jcw\src\**\*.java" /> diff --git a/src/Mono.Data.Sqlite/Mono.Data.Sqlite.csproj b/src/Mono.Data.Sqlite/Mono.Data.Sqlite.csproj index 120f5e15f67..062989902dd 100644 --- a/src/Mono.Data.Sqlite/Mono.Data.Sqlite.csproj +++ b/src/Mono.Data.Sqlite/Mono.Data.Sqlite.csproj @@ -13,6 +13,8 @@ Resources\Resource.designer.cs Mono.Data.Sqlite true + false + false @@ -27,6 +29,7 @@ DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;SQLITE_STANDARD;MONODROID prompt 4 + True None false true diff --git a/src/Mono.Posix/Mono.Posix.csproj b/src/Mono.Posix/Mono.Posix.csproj index 37e6ce4fc9c..0e6ffb5d926 100644 --- a/src/Mono.Posix/Mono.Posix.csproj +++ b/src/Mono.Posix/Mono.Posix.csproj @@ -13,6 +13,8 @@ Resources\Resource.designer.cs Mono.Posix true + false + false @@ -26,6 +28,7 @@ ..\..\bin\$(Configuration)\lib\xbuild-frameworks\MonoAndroid\v1.0 DEBUG;TRACE;NET_4_0;NET_4_5;MONO;DISABLE_CAS_USE;MONODROID prompt + True 4 None false diff --git a/src/OpenTK-1.0/OpenTK.csproj b/src/OpenTK-1.0/OpenTK.csproj index a534f8fa383..d34700b4f1a 100644 --- a/src/OpenTK-1.0/OpenTK.csproj +++ b/src/OpenTK-1.0/OpenTK.csproj @@ -19,6 +19,8 @@ 3001,3002,3003,3005,3006,3021,3014,0618,1591,0414,0169,0419,1635 true true + false + false @@ -67,7 +69,7 @@ - + Audio\AudioCapture.cs diff --git a/src/System.Drawing.Primitives/System.Drawing.Primitives.csproj b/src/System.Drawing.Primitives/System.Drawing.Primitives.csproj index 82307323b1f..ebbba947d11 100644 --- a/src/System.Drawing.Primitives/System.Drawing.Primitives.csproj +++ b/src/System.Drawing.Primitives/System.Drawing.Primitives.csproj @@ -9,6 +9,10 @@ System.Drawing System.Drawing.Primitives true + false + Resources + Assets + false diff --git a/src/Xamarin.Android.Build.Tasks/Linker/MonoDroid.Tuner/Extensions.cs b/src/Xamarin.Android.Build.Tasks/Linker/MonoDroid.Tuner/Extensions.cs index 02add26c787..587cc147c94 100644 --- a/src/Xamarin.Android.Build.Tasks/Linker/MonoDroid.Tuner/Extensions.cs +++ b/src/Xamarin.Android.Build.Tasks/Linker/MonoDroid.Tuner/Extensions.cs @@ -60,7 +60,8 @@ public static bool Implements (TypeDefinition type, string interfaceName, bool g while (type != null) { // does the type implements it itself if (type.HasInterfaces) { - foreach (TypeReference iface in type.Interfaces) { + foreach (var ifaceInfo in type.Interfaces) { + var iface = ifaceInfo.InterfaceType; string fullname = (generic) ? iface.GetElementType ().FullName : iface.FullName; if (fullname == interfaceName) return true; diff --git a/src/Xamarin.Android.Build.Tasks/Linker/MonoDroid.Tuner/FixAbstractMethodsStep.cs b/src/Xamarin.Android.Build.Tasks/Linker/MonoDroid.Tuner/FixAbstractMethodsStep.cs index 2e3df969d06..b69dd41622e 100644 --- a/src/Xamarin.Android.Build.Tasks/Linker/MonoDroid.Tuner/FixAbstractMethodsStep.cs +++ b/src/Xamarin.Android.Build.Tasks/Linker/MonoDroid.Tuner/FixAbstractMethodsStep.cs @@ -137,7 +137,8 @@ bool FixAbstractMethods (TypeDefinition type) foreach (var baseType in type.GetBaseTypes ()) typeMethods.AddRange (baseType.Methods); - foreach (var iface in type.Interfaces) { + foreach (var ifaceInfo in type.Interfaces) { + var iface = ifaceInfo.InterfaceType; var ifaceDef = iface.Resolve (); if (ifaceDef == null) { if (Context.LogInternalExceptions) diff --git a/src/Xamarin.Android.Build.Tasks/Linker/MonoDroid.Tuner/PreserveLinqExpressions.cs b/src/Xamarin.Android.Build.Tasks/Linker/MonoDroid.Tuner/PreserveLinqExpressions.cs index 0603e983ca1..7cc6baad984 100644 --- a/src/Xamarin.Android.Build.Tasks/Linker/MonoDroid.Tuner/PreserveLinqExpressions.cs +++ b/src/Xamarin.Android.Build.Tasks/Linker/MonoDroid.Tuner/PreserveLinqExpressions.cs @@ -45,8 +45,8 @@ bool IsLinqProvider (TypeDefinition type) return false; // we are not looking for default system types. if (!type.HasInterfaces) return false; - return type.Interfaces.Any (i => i.FullName == "System.Linq.IQueryProvider") - || type.Interfaces.Select (t => t.Resolve ()).Any (t => t != null && IsLinqProvider (t)); + return type.Interfaces.Any (i => i.InterfaceType.FullName == "System.Linq.IQueryProvider") + || type.Interfaces.Select (t => t.InterfaceType.Resolve ()).Any (t => t != null && IsLinqProvider (t)); } } } diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Build.Tasks.csproj b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Build.Tasks.csproj index 26ceb2bea82..97caaae9c18 100644 --- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Build.Tasks.csproj +++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Build.Tasks.csproj @@ -43,16 +43,16 @@ - ..\..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.dll + ..\..\packages\Mono.Cecil.0.10.0-beta1-v2\lib\net40\Mono.Cecil.dll - ..\..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.Mdb.dll + ..\..\packages\Mono.Cecil.0.10.0-beta1-v2\lib\net40\Mono.Cecil.Mdb.dll - ..\..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.Pdb.dll + ..\..\packages\Mono.Cecil.0.10.0-beta1-v2\lib\net40\Mono.Cecil.Pdb.dll - ..\..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.Rocks.dll + ..\..\packages\Mono.Cecil.0.10.0-beta1-v2\lib\net40\Mono.Cecil.Rocks.dll ..\..\packages\Irony.0.9.1\lib\net40\Irony.dll @@ -128,13 +128,13 @@ - + Linker\Mono.Tuner\AdjustVisibility.cs - + Linker\Mono.Tuner\CecilRocks.cs - + Linker\Mono.Tuner\CheckVisibility.cs @@ -219,82 +219,82 @@ - + pdb2mdb\BitAccess.cs - + pdb2mdb\BitSet.cs - + pdb2mdb\CvInfo.cs - + pdb2mdb\DataStream.cs - + pdb2mdb\DbiDbgHdr.cs - + pdb2mdb\DbiHeader.cs - + pdb2mdb\DbiModuleInfo.cs - + pdb2mdb\DbiSecCon.cs - + pdb2mdb\Driver.cs - + pdb2mdb\IntHashTable.cs - + pdb2mdb\Interfaces.cs - + pdb2mdb\MsfDirectory.cs - + pdb2mdb\PdbConstant.cs - + pdb2mdb\PdbDebugException.cs - + pdb2mdb\PdbException.cs - + pdb2mdb\PdbFile.cs - + pdb2mdb\PdbFileHeader.cs - + pdb2mdb\PdbFunction.cs - + pdb2mdb\PdbLine.cs - + pdb2mdb\PdbLines.cs - + pdb2mdb\PdbReader.cs - + pdb2mdb\PdbScope.cs - + pdb2mdb\PdbSlot.cs - + pdb2mdb\PdbSource.cs - + pdb2mdb\PdbWriter.cs - + pdb2mdb\SourceLocationProvider.cs @@ -307,79 +307,79 @@ PreserveNewest - + Linker\Mono.Linker\Annotations.cs - + Linker\Mono.Linker\AssemblyAction.cs - + Linker\Mono.Linker\AssemblyResolver.cs - + Linker\Mono.Linker\I18nAssemblies.cs - + Linker\Mono.Linker\IXApiVisitor.cs - + Linker\Mono.Linker\LinkContext.cs - + Linker\Mono.Linker\MethodAction.cs - + Linker\Mono.Linker\Pipeline.cs - + Linker\Mono.Linker\TypePreserve.cs - + Linker\Mono.Linker\XApiReader.cs - + Linker\Mono.Linker.Steps\BlacklistStep.cs - + Linker\Mono.Linker.Steps\BaseStep.cs - + Linker\Mono.Linker.Steps\CleanStep.cs - + Linker\Mono.Linker.Steps\IStep.cs - + Linker\Mono.Linker.Steps\LoadI18nAssemblies.cs - + Linker\Mono.Linker.Steps\LoadReferencesStep.cs - + Linker\Mono.Linker.Steps\OutputStep.cs - + Linker\Mono.Linker.Steps\RegenerateGuidStep.cs - + Linker\Mono.Linker.Steps\ResolveFromAssemblyStep.cs - + Linker\Mono.Linker.Steps\ResolveFromXApiStep.cs - + Linker\Mono.Linker.Steps\ResolveFromXmlStep.cs - + Linker\Mono.Linker.Steps\ResolveStep.cs - + Linker\Mono.Linker.Steps\TypeMapStep.cs - + Linker\Mono.Linker.Steps\SweepStep.cs - + Linker\Mono.Linker.Steps\MarkStep.cs @@ -404,40 +404,40 @@ Utilities\Files.cs - + Linker\Mono.Tuner\ApplyPreserveAttributeBase.cs - + Linker\Mono.Tuner\Dispatcher.cs - + Linker\Mono.Tuner\CustomizeActions.cs - + Linker\Mono.Tuner\Extensions.cs - + Linker\Mono.Tuner\FixModuleFlags.cs - + Linker\Mono.Tuner\PrintTypeMap.cs - + Linker\Mono.Tuner\PreserveCrypto.cs - + Linker\Mono.Tuner\PreserveSoapHttpClients.cs - + Linker\Mono.Tuner\Profile.cs - + Linker\Mono.Tuner\RemoveAttributesBase.cs - + Linker\Mono.Tuner\RemoveResources.cs - + Linker\Mono.Tuner\RemoveSecurity.cs @@ -476,19 +476,19 @@ Utilities\StringRocks.cs - + Linker\Mono.Tuner\FilterAttributes.cs - + Linker\Mono.Tuner\InjectSecurityAttributes.cs - + Linker\Mono.Tuner\PrintStatus.cs - + Linker\Mono.Tuner\RemoveSerialization.cs - + Linker\Mono.Tuner\TunerAnnotations.cs diff --git a/src/Xamarin.Android.Build.Tasks/packages.config b/src/Xamarin.Android.Build.Tasks/packages.config index 8972402f6ae..4b20691a926 100644 --- a/src/Xamarin.Android.Build.Tasks/packages.config +++ b/src/Xamarin.Android.Build.Tasks/packages.config @@ -1,8 +1,8 @@ - + - + - + \ No newline at end of file diff --git a/src/Xamarin.Android.NUnitLite/Xamarin.Android.NUnitLite.csproj b/src/Xamarin.Android.NUnitLite/Xamarin.Android.NUnitLite.csproj index 8bf6a17b1cb..cf351a33cd7 100644 --- a/src/Xamarin.Android.NUnitLite/Xamarin.Android.NUnitLite.csproj +++ b/src/Xamarin.Android.NUnitLite/Xamarin.Android.NUnitLite.csproj @@ -13,6 +13,8 @@ Resources\Resource.designer.cs true ..\..\product.snk + false + false diff --git a/src/Xamarin.Android.Tools.Aidl/Xamarin.Android.Tools.Aidl.csproj b/src/Xamarin.Android.Tools.Aidl/Xamarin.Android.Tools.Aidl.csproj index 06351032db1..7111c9cc01f 100644 --- a/src/Xamarin.Android.Tools.Aidl/Xamarin.Android.Tools.Aidl.csproj +++ b/src/Xamarin.Android.Tools.Aidl/Xamarin.Android.Tools.Aidl.csproj @@ -30,16 +30,16 @@ - ..\..\packages\Mono.Cecil.0.9.6.1\lib\net40\Mono.Cecil.dll + ..\..\packages\Mono.Cecil.0.10.0-beta1-v2\lib\net40\Mono.Cecil.dll - ..\..\packages\Mono.Cecil.0.9.6.1\lib\net40\Mono.Cecil.Mdb.dll + ..\..\packages\Mono.Cecil.0.10.0-beta1-v2\lib\net40\Mono.Cecil.Mdb.dll - ..\..\packages\Mono.Cecil.0.9.6.1\lib\net40\Mono.Cecil.Pdb.dll + ..\..\packages\Mono.Cecil.0.10.0-beta1-v2\lib\net40\Mono.Cecil.Pdb.dll - ..\..\packages\Mono.Cecil.0.9.6.1\lib\net40\Mono.Cecil.Rocks.dll + ..\..\packages\Mono.Cecil.0.10.0-beta1-v2\lib\net40\Mono.Cecil.Rocks.dll ..\..\packages\Irony.0.9.1\lib\net40\Irony.dll diff --git a/src/Xamarin.Android.Tools.Aidl/packages.config b/src/Xamarin.Android.Tools.Aidl/packages.config index bd1a9fa7cb3..8a5817b5331 100644 --- a/src/Xamarin.Android.Tools.Aidl/packages.config +++ b/src/Xamarin.Android.Tools.Aidl/packages.config @@ -1,5 +1,5 @@  - + \ No newline at end of file