diff --git a/Xamarin.Android.sln b/Xamarin.Android.sln index 3dd06009343..da3eb0c4a93 100644 --- a/Xamarin.Android.sln +++ b/Xamarin.Android.sln @@ -67,6 +67,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Posix", "src\Mono.Posi EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.EnterpriseServices", "src\System.EnterpriseServices\System.EnterpriseServices.csproj", "{2868FC32-A4E7-4008-87C8-2C7879CACB58}" EndProject +Project("{9344BDBB-3E7F-41FC-A0DD-8665D75EE146}") = "unix-distribution-setup", "build-tools\unix-distribution-setup\unix-distribution-setup.mdproj", "{2CF172E5-BDAE-4ABA-8BC8-08040ED3E77A}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|AnyCPU = Debug|AnyCPU @@ -280,6 +282,18 @@ Global {2868FC32-A4E7-4008-87C8-2C7879CACB58}.XAIntegrationDebug|AnyCPU.Build.0 = Debug|Any CPU {2868FC32-A4E7-4008-87C8-2C7879CACB58}.XAIntegrationRelease|AnyCPU.ActiveCfg = Debug|Any CPU {2868FC32-A4E7-4008-87C8-2C7879CACB58}.XAIntegrationRelease|AnyCPU.Build.0 = Debug|Any CPU + {2CF172E5-BDAE-4ABA-8BC8-08040ED3E77A}.Debug|AnyCPU.ActiveCfg = Debug|Any CPU + {2CF172E5-BDAE-4ABA-8BC8-08040ED3E77A}.Debug|AnyCPU.Build.0 = Debug|Any CPU + {2CF172E5-BDAE-4ABA-8BC8-08040ED3E77A}.Release|AnyCPU.ActiveCfg = Release|Any CPU + {2CF172E5-BDAE-4ABA-8BC8-08040ED3E77A}.Release|AnyCPU.Build.0 = Release|Any CPU + {2CF172E5-BDAE-4ABA-8BC8-08040ED3E77A}.XAIntegrationDebug|Any CPU.ActiveCfg = Debug|Any CPU + {2CF172E5-BDAE-4ABA-8BC8-08040ED3E77A}.XAIntegrationDebug|Any CPU.Build.0 = Debug|Any CPU + {2CF172E5-BDAE-4ABA-8BC8-08040ED3E77A}.XAIntegrationRelease|Any CPU.ActiveCfg = Debug|Any CPU + {2CF172E5-BDAE-4ABA-8BC8-08040ED3E77A}.XAIntegrationRelease|Any CPU.Build.0 = Debug|Any CPU + {2CF172E5-BDAE-4ABA-8BC8-08040ED3E77A}.XAIntegrationDebug|AnyCPU.ActiveCfg = Debug|Any CPU + {2CF172E5-BDAE-4ABA-8BC8-08040ED3E77A}.XAIntegrationDebug|AnyCPU.Build.0 = Debug|Any CPU + {2CF172E5-BDAE-4ABA-8BC8-08040ED3E77A}.XAIntegrationRelease|AnyCPU.ActiveCfg = Debug|Any CPU + {2CF172E5-BDAE-4ABA-8BC8-08040ED3E77A}.XAIntegrationRelease|AnyCPU.Build.0 = Debug|Any CPU EndGlobalSection GlobalSection(NestedProjects) = preSolution {8FF78EB6-6FC8-46A7-8A15-EBBA9045C5FA} = {E351F97D-EA4F-4E7F-AAA0-8EBB1F2A4A62} @@ -311,6 +325,7 @@ Global {40EAD437-216B-4DF4-8258-3F47E1672C3A} = {CAB438D8-B0F5-4AF0-BEBD-9E2ADBD7B483} {83F00D30-0AC6-40D8-834B-DD39B6CAA8B3} = {04E3E11E-B47D-4599-8AFC-50515A95E715} {2868FC32-A4E7-4008-87C8-2C7879CACB58} = {04E3E11E-B47D-4599-8AFC-50515A95E715} + {2CF172E5-BDAE-4ABA-8BC8-08040ED3E77A} = {E351F97D-EA4F-4E7F-AAA0-8EBB1F2A4A62} EndGlobalSection GlobalSection(MonoDevelopProperties) = preSolution Policies = $0 diff --git a/build-tools/unix-distribution-setup/unix-distribution-setup.mdproj b/build-tools/unix-distribution-setup/unix-distribution-setup.mdproj new file mode 100644 index 00000000000..557fb4e89d9 --- /dev/null +++ b/build-tools/unix-distribution-setup/unix-distribution-setup.mdproj @@ -0,0 +1,29 @@ + + + + Debug + AnyCPU + GenericProject + {2CF172E5-BDAE-4ABA-8BC8-08040ED3E77A} + + + ..\..\bin\Debug\ + + + ..\..\bin\Release\ + + + + + + + + + + + + + + diff --git a/src/Xamarin.Android.Build.Utilities/Sdks/MonoDroidSdkBase.cs b/src/Xamarin.Android.Build.Utilities/Sdks/MonoDroidSdkBase.cs index d02dc69fea2..2894850d794 100644 --- a/src/Xamarin.Android.Build.Utilities/Sdks/MonoDroidSdkBase.cs +++ b/src/Xamarin.Android.Build.Utilities/Sdks/MonoDroidSdkBase.cs @@ -9,6 +9,8 @@ namespace Xamarin.Android.Build.Utilities abstract class MonoDroidSdkBase { protected readonly static string DebugRuntime = "Mono.Android.DebugRuntime-debug.apk"; + protected readonly static string GeneratorExe = "generator.exe"; + protected readonly static string GeneratorScript = "generator"; // I can never remember the difference between SdkPath and anything else... [Obsolete ("Do not use.")] @@ -31,16 +33,18 @@ abstract class MonoDroidSdkBase public int SharedRuntimeVersion { get; private set; } - // runtimePath: contains Mono.Android.DebugRuntime-*.apk + // expectedRuntimePath: contains Mono.Android.DebugRuntime-*.apk // binPath: contains mandroid // mscorlibDir: contains mscorlib.dll - public void Initialize (string runtimePath = null, string binPath = null, string bclPath = null) + public void Initialize (string expectedRuntimePath = null, string binPath = null, string bclPath = null) { - runtimePath = GetValidPath ("MonoAndroidToolsPath", runtimePath, ValidateRuntime, () => FindRuntime ()); + var runtimePath = GetValidPath ("MonoAndroidToolsPath", expectedRuntimePath, ValidateRuntime, () => FindRuntime ()); if (runtimePath != null) { binPath = GetValidPath ("MonoAndroidBinPath", binPath, ValidateBin, () => FindBin (runtimePath)); bclPath = GetValidPath ("mscorlib.dll", bclPath, ValidateFramework, () => FindFramework (runtimePath)); } else { + if (expectedRuntimePath != null) + AndroidLogger.LogWarning (null, "Runtime was not found at {0}", expectedRuntimePath); binPath = bclPath = null; } @@ -67,14 +71,21 @@ public void Initialize (string runtimePath = null, string binPath = null, string static string GetValidPath (string description, string path, Func validator, Func defaultPath) { - if (!string.IsNullOrEmpty (path) && Directory.Exists (path)) { - if (validator (path)) - return path; - AndroidLogger.LogWarning ("{0} path {1} is not valid; skipping.", description, path); + if (!string.IsNullOrEmpty (path)) { + if (Directory.Exists (path)) { + if (validator (path)) + return path; + AndroidLogger.LogWarning (null, "{0} path '{1}' is explicitly specified, but it was not valid; skipping.", description, path); + } else + AndroidLogger.LogWarning (null, "{0} path '{1}' is explicitly specified, but it was not found; skipping.", description, path); } path = defaultPath (); if (path != null && validator (path)) return path; + if (path != null) + AndroidLogger.LogWarning (null, "{0} path is defaulted to '{1}', but it was not valid; skipping", description, path); + else + AndroidLogger.LogWarning (null, "{0} path is not found and no default location is provided; skipping", description); return null; } @@ -96,6 +107,7 @@ protected static bool ValidateRuntime (string loc) { return !string.IsNullOrWhiteSpace (loc) && (File.Exists (Path.Combine (loc, DebugRuntime)) || // Normal/expected + File.Exists (Path.Combine (loc, GeneratorExe)) || // Normal/expected File.Exists (Path.Combine (loc, "Ionic.Zip.dll"))); // Wrench builds } diff --git a/src/Xamarin.Android.Build.Utilities/Sdks/MonoDroidSdkUnix.cs b/src/Xamarin.Android.Build.Utilities/Sdks/MonoDroidSdkUnix.cs index 4a8f7709968..f5270eceb75 100644 --- a/src/Xamarin.Android.Build.Utilities/Sdks/MonoDroidSdkUnix.cs +++ b/src/Xamarin.Android.Build.Utilities/Sdks/MonoDroidSdkUnix.cs @@ -24,8 +24,12 @@ protected override string FindRuntime () string monoAndroidPath = Environment.GetEnvironmentVariable ("MONO_ANDROID_PATH"); if (!string.IsNullOrEmpty (monoAndroidPath)) { string libMandroid = Path.Combine (monoAndroidPath, "lib", "mandroid"); - if (Directory.Exists (libMandroid) && ValidateRuntime (libMandroid)) - return libMandroid; + if (Directory.Exists (libMandroid)) { + if (ValidateRuntime (libMandroid)) + return libMandroid; + AndroidLogger.LogInfo (null, "MONO_ANDROID_PATH points to {0}, but it is invalid.", monoAndroidPath); + } else + AndroidLogger.LogInfo (null, "MONO_ANDROID_PATH points to {0}, but it does not exist.", monoAndroidPath); } // check also in the users folder @@ -38,7 +42,7 @@ protected override string FindRuntime () protected override bool ValidateBin (string binPath) { return !string.IsNullOrWhiteSpace (binPath) && - File.Exists (Path.Combine (binPath, "generator")); + File.Exists (Path.Combine (binPath, GeneratorScript)); } protected override string FindFramework (string runtimePath) @@ -64,8 +68,7 @@ protected override string FindFramework (string runtimePath) protected override string FindBin (string runtimePath) { string binPath = Path.GetFullPath (Path.Combine (runtimePath, "..", "..", "bin")); - Console.WriteLine (binPath); - if (File.Exists (Path.Combine (binPath, "generator"))) + if (File.Exists (Path.Combine (binPath, GeneratorScript))) return binPath; return null; } diff --git a/tools/scripts/generator b/tools/scripts/generator new file mode 100755 index 00000000000..1bcede4ad5d --- /dev/null +++ b/tools/scripts/generator @@ -0,0 +1,6 @@ +#!/bin/sh +BINDIR=`dirname "$0"` +MANDROID_DIR="$BINDIR/../lib/mandroid" + +unset MONO_PATH +exec mono $MONO_OPTIONS "$MANDROID_DIR/generator.exe" "$@"