diff --git a/build-tools/Java.Interop.BootstrapTasks/Java.Interop.BootstrapTasks.csproj b/build-tools/Java.Interop.BootstrapTasks/Java.Interop.BootstrapTasks.csproj index f8cd822d4..9e01bae3a 100644 --- a/build-tools/Java.Interop.BootstrapTasks/Java.Interop.BootstrapTasks.csproj +++ b/build-tools/Java.Interop.BootstrapTasks/Java.Interop.BootstrapTasks.csproj @@ -3,6 +3,7 @@ netstandard2.0 false + 11.0 diff --git a/build-tools/Java.Interop.BootstrapTasks/Java.Interop.BootstrapTasks/JdkInfo.cs b/build-tools/Java.Interop.BootstrapTasks/Java.Interop.BootstrapTasks/JdkInfo.cs index 2abf3a6a4..994084afb 100644 --- a/build-tools/Java.Interop.BootstrapTasks/Java.Interop.BootstrapTasks/JdkInfo.cs +++ b/build-tools/Java.Interop.BootstrapTasks/Java.Interop.BootstrapTasks/JdkInfo.cs @@ -5,6 +5,7 @@ using System.Diagnostics; using System.IO; using System.Linq; +using System.Runtime.InteropServices; using System.Text; using System.Text.RegularExpressions; using System.Xml.Linq; @@ -46,6 +47,7 @@ public override bool Execute () .Where (j => maxVersion != null ? j.Version <= maxVersion : true) .Where (j => j.IncludePath.Any ()); var jdk = explicitJdks.Concat (defaultJdks) + .Where (j => JdkRunsOnHost (j)) .FirstOrDefault (); if (jdk == null) { @@ -71,6 +73,19 @@ public override bool Execute () return !Log.HasLoggedErrors; } + static bool JdkRunsOnHost (XATInfo jdk) + { + var cputype = RuntimeInformation.ProcessArchitecture; + if (jdk.ReleaseProperties.TryGetValue ("OS_ARCH", out var arch)) { + return (cputype, arch) switch { + (Architecture.Arm64, "aarch64") => true, + (Architecture.X64, "x86_64") => true, + _ => false, + }; + } + return true; + } + XATInfo[] GetJdkRoots () { XATInfo jdk = null;