From d9b4a4a9772df70ce06b4674218c06f33aff4ebd Mon Sep 17 00:00:00 2001 From: Jonathan Pryor Date: Wed, 17 Mar 2021 22:11:37 -0400 Subject: [PATCH 01/10] Bump to xamarin/Java.Interop/main@3824b974 Fixes: https://github.com/xamarin/java.interop/issues/790 Changes: https://github.com/xamarin/java.interop/compare/bba1f077ae9886cdcc3e35fee35386937ce885dc...3824b974dada6f302ed5f7b7f97ffbd08990a82a * xamarin/java.interop@3824b974: [java-interop] Windows build system support (#816) * xamarin/java.interop@94c0c709: Bump to xamarin/xamarin-android-tools/main@554d45a (#813) * xamarin/java.interop@5c756b14: [Java.Interop-PerformanceTests] Support .NET Core 3.1 (#808) * xamarin/java.interop@daec07b6: [build] Fix various warnings (#812) * xamarin/java.interop@678c4bd2: [class-parse, generator] Allow showing Kotlin internals via metadata (#793) * xamarin/java.interop@cd4c8f80: [jnienv-gen] Generate a header file for the native functions (#809) * xamarin/java.interop@69767c1a: [param-name-importer] Fix NSE when updating JavaApi.AllPackages (#807) * xamarin/java.interop@a666a6f9: [Java.Runtime.Environment] Partial support for .NET Core (#804) Note: xamarin/java.interop@3824b974 updated Java.Interop/src/java-interop to use `_WINDOWS`, not `WINDOWS`. Define `_WINDOWS` when building for Windows as well. --- Xamarin.Android.sln | 7 +++++++ external/Java.Interop | 2 +- src/monodroid/CMakeLists.txt | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Xamarin.Android.sln b/Xamarin.Android.sln index 9c2f4ad390f..1b9c6bf92d6 100644 --- a/Xamarin.Android.sln +++ b/Xamarin.Android.sln @@ -132,6 +132,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "jnienv-gen", "external\Java EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "check-boot-times", "build-tools\check-boot-times\check-boot-times.csproj", "{D28957BF-5E66-4D60-B528-22820C60AC82}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "java-interop", "external\Java.Interop\src\java-interop\java-interop.csproj", "{1FED3F23-1175-42AA-BE87-EF1E8DB52F8B}" +EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Java.Interop.Tools.Generator", "external\Java.Interop\src\Java.Interop.Tools.Generator\Java.Interop.Tools.Generator.csproj", "{2CE4CD4B-B7B7-4EAE-A9BE-2699824D6096}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.SourceWriter", "external\Java.Interop\src\Xamarin.SourceWriter\Xamarin.SourceWriter.csproj", "{86A8DEFE-7ABB-4097-9389-C249581E243D}" @@ -396,6 +398,10 @@ Global {1A273ED2-AE84-48E9-9C23-E978C2D0CB34}.Debug|AnyCPU.Build.0 = Debug|anycpu {1A273ED2-AE84-48E9-9C23-E978C2D0CB34}.Release|AnyCPU.ActiveCfg = Release|anycpu {1A273ED2-AE84-48E9-9C23-E978C2D0CB34}.Release|AnyCPU.Build.0 = Release|anycpu + {1FED3F23-1175-42AA-BE87-EF1E8DB52F8B}.Debug|AnyCPU.ActiveCfg = Debug|Any CPU + {1FED3F23-1175-42AA-BE87-EF1E8DB52F8B}.Debug|AnyCPU.Build.0 = Debug|Any CPU + {1FED3F23-1175-42AA-BE87-EF1E8DB52F8B}.Release|AnyCPU.ActiveCfg = Release|Any CPU + {1FED3F23-1175-42AA-BE87-EF1E8DB52F8B}.Release|AnyCPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -462,6 +468,7 @@ Global {37FCD325-1077-4603-98E7-4509CAD648D6} = {864062D3-A415-4A6F-9324-5820237BA058} {88B746FF-8D6E-464D-9D66-FF2ECCF148E0} = {864062D3-A415-4A6F-9324-5820237BA058} {1A273ED2-AE84-48E9-9C23-E978C2D0CB34} = {864062D3-A415-4A6F-9324-5820237BA058} + {1FED3F23-1175-42AA-BE87-EF1E8DB52F8B} = {04E3E11E-B47D-4599-8AFC-50515A95E715} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {53A1F287-EFB2-4D97-A4BB-4A5E145613F6} diff --git a/external/Java.Interop b/external/Java.Interop index bba1f077ae9..3824b974dad 160000 --- a/external/Java.Interop +++ b/external/Java.Interop @@ -1 +1 @@ -Subproject commit bba1f077ae9886cdcc3e35fee35386937ce885dc +Subproject commit 3824b974dada6f302ed5f7b7f97ffbd08990a82a diff --git a/src/monodroid/CMakeLists.txt b/src/monodroid/CMakeLists.txt index 098be145a84..ccd90c2a581 100644 --- a/src/monodroid/CMakeLists.txt +++ b/src/monodroid/CMakeLists.txt @@ -294,7 +294,7 @@ if(NOT ANDROID) endif() if(WIN32 OR MINGW) - add_compile_definitions(WINDOWS NTDDI_VERSION=NTDDI_VISTA _WIN32_WINNT=_WIN32_WINNT_VISTA) + add_compile_definitions(WINDOWS NTDDI_VERSION=NTDDI_VISTA _WINDOWS _WIN32_WINNT=_WIN32_WINNT_VISTA) endif() # Compiler and linker flags From ded44a8e47038ad289f35c2c27f77bed187a477a Mon Sep 17 00:00:00 2001 From: Jonathan Pryor Date: Thu, 18 Mar 2021 22:19:46 -0400 Subject: [PATCH 02/10] Diagnostic time! Does vcvarsall.bat exist? MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Context: https://github.com/xamarin/xamarin-android/pull/5757#issuecomment-802465208 Windows fails to build because `call …\vcvarsall.bat` fails (presumably): call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x86_amd64 && cmake -G "NMake Makefiles" -S "C:/a/1/s/external/Java.Interop/src/java-interop/" -B "C:/a/1/s/external/Java.Interop/src/java-interop/obj//Release/win-x64/" "-DJDK_INCLUDE_LIST=C:/Users/AzDevOps/android-toolchain/jdk-11/include;C:/Users/AzDevOps/android-toolchain/jdk-11/include/win32" "-DJNI_C_PATH=C:/a/1/s/external/Java.Interop/src/java-interop/obj//Release/jni.c" && cmake --build "C:/a/1/s/external/Java.Interop/src/java-interop/obj//Release/win-x64/" -v The system cannot find the path specified. (That or `cmake` somehow isn't in `%PATH%`?!) This only fails in the external\Java.Interop\src\java-interop build. Update a "random" target in `Xamarin.Android.Build.Tasks.targets` which *currently* (previously?) executed *before* `java-interop.csproj`, in an effort to help diagnose what may be failing. Does `vcvarsall.bat` exist? --- .../Xamarin.Android.Build.Tasks.targets | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Build.Tasks.targets b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Build.Tasks.targets index 441528321d8..69eb9e12310 100644 --- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Build.Tasks.targets +++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Build.Tasks.targets @@ -218,6 +218,14 @@ DestinationFile="Xamarin.Android.Common.props" Replacements="@PACKAGE_VERSION@=$(ProductVersion);@PACKAGE_VERSION_BUILD@=$(XAVersionCommitCount);@NDK_ARMEABI_V7_API@=$(AndroidNdkApiLevel_ArmV7a);@NDK_ARM64_V8A_API@=$(AndroidNdkApiLevel_ArmV8a);@NDK_X86_API@=$(AndroidNdkApiLevel_X86);@NDK_X86_64_API@=$(AndroidNdkApiLevel_X86_64);@BUNDLETOOL_VERSION@=$(XABundleToolVersion)"> + + <_HaveVcVars Condition=" Exists('C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat') ">True + + + + <_Vcvars Include="C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\**\vcvarsall.bat" /> + + From f5deace3fb3265cfbb0577f3ba0629b7693bf3f8 Mon Sep 17 00:00:00 2001 From: Jonathan Pryor Date: Fri, 19 Mar 2021 07:58:39 -0400 Subject: [PATCH 03/10] Do *any* scripts exist? MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Commit ded44a8e asked if `vcvarsall.bat` exists. No, it does not: Task "Message" (TaskId:1532) Task Parameter:Text=# jonp: Does vcvarsall.bat exist? (TaskId:1532) # jonp: Does vcvarsall.bat exist? (TaskId:1532) Done executing task "Message". (TaskId:1532) Task "Message" (TaskId:1533) Task Parameter:Text=# jonp: Anywhere? (TaskId:1533) # jonp: Anywhere? (TaskId:1533) Thus I wonder, what kind of VC environment exists at all? ADD MOAR LOGGING: 1. Does `C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC` exist? It presumably *should*; there's a `%VCTargetsPath%` environment variable in the build logs… 2. If it does exist, what `*.bat` and `*.cmd` files exist? Perhaps Java.Interop needs to use something other than `vcvarsall.bat`. --- .../Xamarin.Android.Build.Tasks.targets | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Build.Tasks.targets b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Build.Tasks.targets index 69eb9e12310..9d148948980 100644 --- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Build.Tasks.targets +++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Build.Tasks.targets @@ -220,12 +220,21 @@ <_HaveVcVars Condition=" Exists('C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat') ">True + <_HaveVc Condition=" Exists('C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC') ">True + <_Vcvars Include="C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\**\vcvarsall.bat" /> + + <_VcScripts Include="C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\**\*.bat" /> + <_VcScripts Include="C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\**\*.cmd" /> + + From 072c65b8385f98de42d5e4a690ede5a17a5b9873 Mon Sep 17 00:00:00 2001 From: Jonathan Pryor Date: Fri, 19 Mar 2021 11:20:32 -0400 Subject: [PATCH 04/10] Install the NativeDesktop workload. Hopefully this means/includes the VC++ toolchain? --- build-tools/provisioning/vs2019.csx | 1 + 1 file changed, 1 insertion(+) diff --git a/build-tools/provisioning/vs2019.csx b/build-tools/provisioning/vs2019.csx index 8acaf3a3833..f3f7ccac4fd 100644 --- a/build-tools/provisioning/vs2019.csx +++ b/build-tools/provisioning/vs2019.csx @@ -1,3 +1,4 @@ VisualStudio (VisualStudioChannel.Stable, VisualStudioTier.Enterprise, 16, @"%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Enterprise", true) .Workload (VisualStudioWorkload.ManagedDesktop) + .Workload (VisualStudioWorkload.NativeDesktop) .Workload (VisualStudioWorkload.NetCrossPlat); From 5f83b9ba876d7af6d52f0ea9b4c1ff827cd460d0 Mon Sep 17 00:00:00 2001 From: Jonathan Pryor Date: Fri, 19 Mar 2021 12:02:27 -0400 Subject: [PATCH 05/10] VisualStudioWorkload.NativeDesktop doesn't include cmake/etc. Let's try `VisualStudioComponent.Microsoft_VisualStudio_Component_VC_Tools_x86_x64`? --- build-tools/provisioning/vs2019.csx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build-tools/provisioning/vs2019.csx b/build-tools/provisioning/vs2019.csx index f3f7ccac4fd..22affd82844 100644 --- a/build-tools/provisioning/vs2019.csx +++ b/build-tools/provisioning/vs2019.csx @@ -1,4 +1,5 @@ VisualStudio (VisualStudioChannel.Stable, VisualStudioTier.Enterprise, 16, @"%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Enterprise", true) + .Component (VisualStudioComponent.Microsoft_VisualStudio_Component_VC_Tools_x86_x64) + .Component (VisualStudioComponent.Microsoft_VisualStudio_Component_VC_CMake_Project) .Workload (VisualStudioWorkload.ManagedDesktop) - .Workload (VisualStudioWorkload.NativeDesktop) .Workload (VisualStudioWorkload.NetCrossPlat); From d89c9048ca2dd6a16c07ff01bb9d950bf738e433 Mon Sep 17 00:00:00 2001 From: Jonathan Pryor Date: Mon, 22 Mar 2021 15:26:11 -0400 Subject: [PATCH 06/10] Revert "VisualStudioWorkload.NativeDesktop doesn't include cmake/etc." This reverts commit 5f83b9ba876d7af6d52f0ea9b4c1ff827cd460d0. Didn't work. --- build-tools/provisioning/vs2019.csx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/build-tools/provisioning/vs2019.csx b/build-tools/provisioning/vs2019.csx index 22affd82844..f3f7ccac4fd 100644 --- a/build-tools/provisioning/vs2019.csx +++ b/build-tools/provisioning/vs2019.csx @@ -1,5 +1,4 @@ VisualStudio (VisualStudioChannel.Stable, VisualStudioTier.Enterprise, 16, @"%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Enterprise", true) - .Component (VisualStudioComponent.Microsoft_VisualStudio_Component_VC_Tools_x86_x64) - .Component (VisualStudioComponent.Microsoft_VisualStudio_Component_VC_CMake_Project) .Workload (VisualStudioWorkload.ManagedDesktop) + .Workload (VisualStudioWorkload.NativeDesktop) .Workload (VisualStudioWorkload.NetCrossPlat); From bb0a20887a2b9a9e8476d725eb3d89e2f5a4d880 Mon Sep 17 00:00:00 2001 From: Jonathan Pryor Date: Mon, 22 Mar 2021 15:26:28 -0400 Subject: [PATCH 07/10] Revert "Install the NativeDesktop workload." This reverts commit 072c65b8385f98de42d5e4a690ede5a17a5b9873. Didn't work. --- build-tools/provisioning/vs2019.csx | 1 - 1 file changed, 1 deletion(-) diff --git a/build-tools/provisioning/vs2019.csx b/build-tools/provisioning/vs2019.csx index f3f7ccac4fd..8acaf3a3833 100644 --- a/build-tools/provisioning/vs2019.csx +++ b/build-tools/provisioning/vs2019.csx @@ -1,4 +1,3 @@ VisualStudio (VisualStudioChannel.Stable, VisualStudioTier.Enterprise, 16, @"%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Enterprise", true) .Workload (VisualStudioWorkload.ManagedDesktop) - .Workload (VisualStudioWorkload.NativeDesktop) .Workload (VisualStudioWorkload.NetCrossPlat); From 10f13722e360ac493cd70991fe082a8b35404e42 Mon Sep 17 00:00:00 2001 From: Jonathan Pryor Date: Mon, 22 Mar 2021 15:26:47 -0400 Subject: [PATCH 08/10] Revert "Do *any* scripts exist?" This reverts commit f5deace3fb3265cfbb0577f3ba0629b7693bf3f8. VC++ is *not* provisioned on this build machine. --- .../Xamarin.Android.Build.Tasks.targets | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Build.Tasks.targets b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Build.Tasks.targets index 9d148948980..69eb9e12310 100644 --- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Build.Tasks.targets +++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Build.Tasks.targets @@ -220,21 +220,12 @@ <_HaveVcVars Condition=" Exists('C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat') ">True - <_HaveVc Condition=" Exists('C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC') ">True - <_Vcvars Include="C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\**\vcvarsall.bat" /> - - <_VcScripts Include="C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\**\*.bat" /> - <_VcScripts Include="C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\**\*.cmd" /> - - From d03c59fba9626f448655af2074a2eeb5ea981ed7 Mon Sep 17 00:00:00 2001 From: Jonathan Pryor Date: Mon, 22 Mar 2021 15:27:21 -0400 Subject: [PATCH 09/10] Bump to xamarin/Java.Interop/main@a3de91ef Appease the Windows CI bots by *not building* `java-interop.dll`. --- external/Java.Interop | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/Java.Interop b/external/Java.Interop index 3824b974dad..a3de91efdae 160000 --- a/external/Java.Interop +++ b/external/Java.Interop @@ -1 +1 @@ -Subproject commit 3824b974dada6f302ed5f7b7f97ffbd08990a82a +Subproject commit a3de91efdaec04b3927b755a07018e8d26cfdc71 From 9bc8502e2eb97d535b973e8f37e6d7813019f1d1 Mon Sep 17 00:00:00 2001 From: Jonathan Pryor Date: Tue, 23 Mar 2021 07:45:26 -0400 Subject: [PATCH 10/10] Revert "Diagnostic time! Does vcvarsall.bat exist?" This reverts commit ded44a8e47038ad289f35c2c27f77bed187a477a. --- .../Xamarin.Android.Build.Tasks.targets | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Build.Tasks.targets b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Build.Tasks.targets index 69eb9e12310..441528321d8 100644 --- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Build.Tasks.targets +++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Build.Tasks.targets @@ -218,14 +218,6 @@ DestinationFile="Xamarin.Android.Common.props" Replacements="@PACKAGE_VERSION@=$(ProductVersion);@PACKAGE_VERSION_BUILD@=$(XAVersionCommitCount);@NDK_ARMEABI_V7_API@=$(AndroidNdkApiLevel_ArmV7a);@NDK_ARM64_V8A_API@=$(AndroidNdkApiLevel_ArmV8a);@NDK_X86_API@=$(AndroidNdkApiLevel_X86);@NDK_X86_64_API@=$(AndroidNdkApiLevel_X86_64);@BUNDLETOOL_VERSION@=$(XABundleToolVersion)"> - - <_HaveVcVars Condition=" Exists('C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat') ">True - - - - <_Vcvars Include="C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\**\vcvarsall.bat" /> - -