diff --git a/Configuration.props b/Configuration.props index 97a03949f09..64a623775d1 100644 --- a/Configuration.props +++ b/Configuration.props @@ -9,7 +9,7 @@ /> 8.0.99 @@ -48,6 +48,7 @@ $(AndroidToolchainDirectory)\sdk $(AndroidToolchainDirectory)\ndk $(AndroidToolchainDirectory)\ant + $(AntDirectory)\bin $(HostOS) armeabi-v7a:x86 $(MSBuildThisFileDirectory)external\Java.Interop diff --git a/build-tools/android-toolchain/android-toolchain.targets b/build-tools/android-toolchain/android-toolchain.targets index 71940cbfcab..66d376dfa2c 100644 --- a/build-tools/android-toolchain/android-toolchain.targets +++ b/build-tools/android-toolchain/android-toolchain.targets @@ -128,7 +128,7 @@ <_AndroidMxeOutput Include="@(_AndroidMxeToolchain->'$(AndroidMxeFullPath)\%(Identity)\lib\libz.a')" /> - + intltool - + 1.8 $(MSBuildThisFileDirectory)..\scripts\javac-version - javac -version 2>&1 + "$(JavaCPath)" -version 2>&1 $(_AptGetInstall) openjdk-8-jdk diff --git a/build-tools/scripts/JavaCallableWrappers.targets b/build-tools/scripts/JavaCallableWrappers.targets index d2159085488..497b8957118 100644 --- a/build-tools/scripts/JavaCallableWrappers.targets +++ b/build-tools/scripts/JavaCallableWrappers.targets @@ -30,15 +30,15 @@ <_MonoAndroidJar>$(OutputPath)mono.android.jar $(MSBuildThisFileDirectory)..\.. <_NuGet>.nuget\NuGet.exe - - <_ConfigurationFile Include="Windows-Configuration.OperatingSystem.props"> - $(_TopDir)\Configuration.OperatingSystem.props - - <_ConfigurationFile Include="Configuration.Java.Interop.Override.props"> - $(_TopDir)\external\Java.Interop\Configuration.Override.props - - + - + + + + diff --git a/build-tools/scripts/Windows-Configuration.OperatingSystem.props b/build-tools/scripts/Windows-Configuration.OperatingSystem.props.in similarity index 83% rename from build-tools/scripts/Windows-Configuration.OperatingSystem.props rename to build-tools/scripts/Windows-Configuration.OperatingSystem.props.in index c71e8887009..ec8104a1cfb 100644 --- a/build-tools/scripts/Windows-Configuration.OperatingSystem.props +++ b/build-tools/scripts/Windows-Configuration.OperatingSystem.props.in @@ -9,5 +9,8 @@ x86_64-win32 $([System.Environment]::ProcessorCount) 64 + @JAVA_HOME@ + $(JavaSdkDirectory)\bin\javac.exe + $(JavaSdkDirectory)\bin\jar.exe \ No newline at end of file diff --git a/build-tools/scripts/generate-os-info b/build-tools/scripts/generate-os-info index e5a4b24490e..c471a67ab34 100755 --- a/build-tools/scripts/generate-os-info +++ b/build-tools/scripts/generate-os-info @@ -120,6 +120,8 @@ cat < "$1" $HOST_CC64 $HOST_CXX32 $HOST_CXX64 + javac + jar EOF diff --git a/build-tools/xa-prep-tasks/Xamarin.Android.BuildTools.PrepTasks/AcceptAndroidSdkLicenses.cs b/build-tools/xa-prep-tasks/Xamarin.Android.BuildTools.PrepTasks/AcceptAndroidSdkLicenses.cs index a07923579e1..467fe24310e 100644 --- a/build-tools/xa-prep-tasks/Xamarin.Android.BuildTools.PrepTasks/AcceptAndroidSdkLicenses.cs +++ b/build-tools/xa-prep-tasks/Xamarin.Android.BuildTools.PrepTasks/AcceptAndroidSdkLicenses.cs @@ -11,11 +11,21 @@ public class AcceptAndroidSdkLicenses : Task [Required] public string AndroidSdkDirectory { get; set; } + public string JavaSdkDirectory { get; set; } + public override bool Execute () { + Log.LogMessage (MessageImportance.Low, $"Task {nameof (AcceptAndroidSdkLicenses)}"); + Log.LogMessage (MessageImportance.Low, $" {nameof (AndroidSdkDirectory)}: {AndroidSdkDirectory}"); + Log.LogMessage (MessageImportance.Low, $" {nameof (JavaSdkDirectory)}: {JavaSdkDirectory}"); + var licdir = Path.Combine (Path.Combine (AndroidSdkDirectory, "licenses")); Directory.CreateDirectory (licdir); + if (!string.IsNullOrEmpty (JavaSdkDirectory)) { + Environment.SetEnvironmentVariable ("JAVA_HOME", JavaSdkDirectory); + } + string _; var path = Which.GetProgramLocation ("sdkmanager", out _, new [] { Path.Combine (AndroidSdkDirectory, "tools", "bin") }); var psi = new ProcessStartInfo (path, "--licenses") { UseShellExecute = false, RedirectStandardInput = true }; diff --git a/build-tools/xa-prep-tasks/Xamarin.Android.BuildTools.PrepTasks/JdkInfo.cs b/build-tools/xa-prep-tasks/Xamarin.Android.BuildTools.PrepTasks/JdkInfo.cs index 2d8d23389ba..72375a6dd70 100644 --- a/build-tools/xa-prep-tasks/Xamarin.Android.BuildTools.PrepTasks/JdkInfo.cs +++ b/build-tools/xa-prep-tasks/Xamarin.Android.BuildTools.PrepTasks/JdkInfo.cs @@ -18,6 +18,9 @@ public class JdkInfo : Task public string JavaSdkPath { get; set; } + [Output] + public string JavaSdkDirectory { get; set; } + public override bool Execute () { Log.LogMessage (MessageImportance.Low, $"Task {nameof (JdkInfo)}"); @@ -67,8 +70,15 @@ public override bool Execute () + + {Path.Combine (javaSdkPath, "bin", "javac.exe")} + {Path.Combine (javaSdkPath, "bin", "jar.exe")} + "); + JavaSdkDirectory = javaSdkPath; + Log.LogMessage (MessageImportance.Low, $" [Output] {nameof (JavaSdkDirectory)}: {JavaSdkDirectory}"); + return !Log.HasLoggedErrors; } finally { diff --git a/build-tools/xa-prep-tasks/Xamarin.Android.BuildTools.PrepTasks/Which.cs b/build-tools/xa-prep-tasks/Xamarin.Android.BuildTools.PrepTasks/Which.cs index 33ca0a3d234..75611ab251a 100644 --- a/build-tools/xa-prep-tasks/Xamarin.Android.BuildTools.PrepTasks/Which.cs +++ b/build-tools/xa-prep-tasks/Xamarin.Android.BuildTools.PrepTasks/Which.cs @@ -31,10 +31,10 @@ static Which () var pathExt = Environment.GetEnvironmentVariable ("PATHEXT"); var pathExts = pathExt?.Split (new char [] { Path.PathSeparator }, StringSplitOptions.RemoveEmptyEntries); FileExtensions = new string [(pathExts?.Length ?? 0) + 1]; - FileExtensions [0] = null; if (pathExts != null) { - Array.Copy (pathExts, 0, FileExtensions, 1, pathExts.Length); + Array.Copy (pathExts, 0, FileExtensions, 0, pathExts.Length); } + FileExtensions [FileExtensions.Length - 1] = null; } public static string GetProgramLocation (string programBasename, out string filename, string[] directories = null) diff --git a/src/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks.csproj b/src/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks.csproj index 42830c96491..9e564734b13 100644 --- a/src/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks.csproj +++ b/src/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks.csproj @@ -40,6 +40,7 @@ + diff --git a/src/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks/Ant.cs b/src/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks/Ant.cs new file mode 100644 index 00000000000..c93290fb18d --- /dev/null +++ b/src/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks/Ant.cs @@ -0,0 +1,44 @@ +using Microsoft.Build.Framework; +using System; +using Xamarin.Android.BuildTools.PrepTasks; + +namespace Xamarin.Android.Tools.BootstrapTasks +{ + public class Ant : PathToolTask + { + public string Arguments { get; set; } + + public string JavaSdkDirectory { get; set; } + + public string WorkingDirectory { get; set; } + + protected override string ToolBaseName { + get { return "ant"; } + } + + public override bool Execute () + { + Log.LogMessage (MessageImportance.Low, $"Task {nameof (Ant)}"); + Log.LogMessage (MessageImportance.Low, $" {nameof (Arguments)}: {Arguments}"); + Log.LogMessage (MessageImportance.Low, $" {nameof (JavaSdkDirectory)}: {JavaSdkDirectory}"); + Log.LogMessage (MessageImportance.Low, $" {nameof (WorkingDirectory)}: {WorkingDirectory}"); + + if (!string.IsNullOrEmpty (JavaSdkDirectory)) + Environment.SetEnvironmentVariable ("JAVA_HOME", JavaSdkDirectory); + + base.Execute (); + + return !Log.HasLoggedErrors; + } + + protected override string GenerateCommandLineCommands () + { + return Arguments; + } + + protected override string GetWorkingDirectory () + { + return WorkingDirectory; + } + } +} diff --git a/src/proguard/proguard.targets b/src/proguard/proguard.targets index a4596b74ab1..2c92376abcb 100644 --- a/src/proguard/proguard.targets +++ b/src/proguard/proguard.targets @@ -1,7 +1,10 @@ + - @@ -28,8 +31,10 @@ - diff --git a/tests/CodeGen-Binding/Xamarin.Android.FixJavaAbstractMethod-APIv1Binding/Xamarin.Android.FixJavaAbstractMethod-APIv1Binding.targets b/tests/CodeGen-Binding/Xamarin.Android.FixJavaAbstractMethod-APIv1Binding/Xamarin.Android.FixJavaAbstractMethod-APIv1Binding.targets index d53c4db09c7..29b53d34c3e 100644 --- a/tests/CodeGen-Binding/Xamarin.Android.FixJavaAbstractMethod-APIv1Binding/Xamarin.Android.FixJavaAbstractMethod-APIv1Binding.targets +++ b/tests/CodeGen-Binding/Xamarin.Android.FixJavaAbstractMethod-APIv1Binding/Xamarin.Android.FixJavaAbstractMethod-APIv1Binding.targets @@ -5,8 +5,8 @@ Inputs="@(InputJarSource)" Outputs="@(InputJar)"> - - + + diff --git a/tests/CodeGen-Binding/Xamarin.Android.FixJavaAbstractMethod-APIv2Binding/Xamarin.Android.FixJavaAbstractMethod-APIv2Binding.targets b/tests/CodeGen-Binding/Xamarin.Android.FixJavaAbstractMethod-APIv2Binding/Xamarin.Android.FixJavaAbstractMethod-APIv2Binding.targets index d53c4db09c7..29b53d34c3e 100644 --- a/tests/CodeGen-Binding/Xamarin.Android.FixJavaAbstractMethod-APIv2Binding/Xamarin.Android.FixJavaAbstractMethod-APIv2Binding.targets +++ b/tests/CodeGen-Binding/Xamarin.Android.FixJavaAbstractMethod-APIv2Binding/Xamarin.Android.FixJavaAbstractMethod-APIv2Binding.targets @@ -5,8 +5,8 @@ Inputs="@(InputJarSource)" Outputs="@(InputJar)"> - - + + diff --git a/tests/CodeGen-Binding/Xamarin.Android.McwGen-Tests/Xamarin.Android.McwGen-Tests.targets b/tests/CodeGen-Binding/Xamarin.Android.McwGen-Tests/Xamarin.Android.McwGen-Tests.targets index 631f0d26354..c48e56feeec 100644 --- a/tests/CodeGen-Binding/Xamarin.Android.McwGen-Tests/Xamarin.Android.McwGen-Tests.targets +++ b/tests/CodeGen-Binding/Xamarin.Android.McwGen-Tests/Xamarin.Android.McwGen-Tests.targets @@ -5,11 +5,11 @@ Inputs="@(XamarinTestJar);%(IgnoreJar.Source)" Outputs="@(EmbeddedJar);@(IgnoreJar)"> - - + + - - + + diff --git a/tests/ResolveImports/Xamarin.Android.BindingResolveImportLib1/Xamarin.Android.BindingResolveImportLib1.csproj b/tests/ResolveImports/Xamarin.Android.BindingResolveImportLib1/Xamarin.Android.BindingResolveImportLib1.csproj index acc38c9412a..3c74944ee39 100644 --- a/tests/ResolveImports/Xamarin.Android.BindingResolveImportLib1/Xamarin.Android.BindingResolveImportLib1.csproj +++ b/tests/ResolveImports/Xamarin.Android.BindingResolveImportLib1/Xamarin.Android.BindingResolveImportLib1.csproj @@ -59,7 +59,7 @@ - + diff --git a/tests/ResolveImports/Xamarin.Android.BindingResolveImportLib2/Xamarin.Android.BindingResolveImportLib2.csproj b/tests/ResolveImports/Xamarin.Android.BindingResolveImportLib2/Xamarin.Android.BindingResolveImportLib2.csproj index 32ad6d21993..d2a2d26f695 100644 --- a/tests/ResolveImports/Xamarin.Android.BindingResolveImportLib2/Xamarin.Android.BindingResolveImportLib2.csproj +++ b/tests/ResolveImports/Xamarin.Android.BindingResolveImportLib2/Xamarin.Android.BindingResolveImportLib2.csproj @@ -77,7 +77,7 @@ - + diff --git a/tests/ResolveImports/Xamarin.Android.BindingResolveImportLib3/Xamarin.Android.BindingResolveImportLib3.csproj b/tests/ResolveImports/Xamarin.Android.BindingResolveImportLib3/Xamarin.Android.BindingResolveImportLib3.csproj index 14ccea9e76c..cdeb5820481 100644 --- a/tests/ResolveImports/Xamarin.Android.BindingResolveImportLib3/Xamarin.Android.BindingResolveImportLib3.csproj +++ b/tests/ResolveImports/Xamarin.Android.BindingResolveImportLib3/Xamarin.Android.BindingResolveImportLib3.csproj @@ -77,7 +77,7 @@ - + diff --git a/tests/ResolveImports/Xamarin.Android.BindingResolveImportLib4/Xamarin.Android.BindingResolveImportLib4.csproj b/tests/ResolveImports/Xamarin.Android.BindingResolveImportLib4/Xamarin.Android.BindingResolveImportLib4.csproj index 5f340f95022..70f4fd595bc 100644 --- a/tests/ResolveImports/Xamarin.Android.BindingResolveImportLib4/Xamarin.Android.BindingResolveImportLib4.csproj +++ b/tests/ResolveImports/Xamarin.Android.BindingResolveImportLib4/Xamarin.Android.BindingResolveImportLib4.csproj @@ -75,7 +75,7 @@ - +