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