Skip to content

Commit

Permalink
Merge branch 'main' into dev/grendel/clr-host
Browse files Browse the repository at this point in the history
* main:
  [Xamarin.Android.Build.Tasks] introduce `$(_AndroidRuntime)` property (#9686)
  • Loading branch information
grendello committed Jan 21, 2025
2 parents 3803f37 + 8aca6e6 commit 0e0b648
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 6 deletions.
11 changes: 7 additions & 4 deletions src/Xamarin.Android.Build.Tasks/Tasks/GenerateJavaStubs.cs
Original file line number Diff line number Diff line change
Expand Up @@ -96,11 +96,14 @@ public class GenerateJavaStubs : AndroidTask
[Required]
public string AndroidRuntime { get; set; } = "";

AndroidRuntime androidRuntime;

internal const string AndroidSkipJavaStubGeneration = "AndroidSkipJavaStubGeneration";

public override bool RunTask ()
{
try {
androidRuntime = MonoAndroidHelper.ParseAndroidRuntime (AndroidRuntime);
bool useMarshalMethods = !Debug && EnableMarshalMethods;
Run (useMarshalMethods);
} catch (XamarinAndroidException e) {
Expand Down Expand Up @@ -297,8 +300,8 @@ Dictionary<string, ITaskItem> MaybeGetArchAssemblies (Dictionary<AndroidTargetAr

void GenerateAdditionalProviderSources (NativeCodeGenState codeGenState, IList<string> additionalProviders)
{
if (!string.Equals (AndroidRuntime, "MonoVM", StringComparison.OrdinalIgnoreCase)) {
Log.LogDebugMessage ($"Skipping MonoRuntimeProvider generation for {AndroidRuntime}");
if (androidRuntime != Xamarin.Android.Tasks.AndroidRuntime.MonoVM) {
Log.LogDebugMessage ($"Skipping MonoRuntimeProvider generation for: {androidRuntime}");
return;
}

Expand Down Expand Up @@ -355,7 +358,7 @@ IList<string> MergeManifest (NativeCodeGenState codeGenState, Dictionary<string,
Debug = Debug,
MultiDex = MultiDex,
NeedsInternet = NeedsInternet,
AndroidRuntime = AndroidRuntime,
AndroidRuntime = androidRuntime,
};
// Only set manifest.VersionCode if there is no existing value in AndroidManifest.xml.
if (manifest.HasVersionCode) {
Expand Down Expand Up @@ -389,7 +392,7 @@ IList<string> MergeManifest (NativeCodeGenState codeGenState, Dictionary<string,
(List<TypeDefinition> allJavaTypes, List<TypeDefinition> javaTypesForJCW) = ScanForJavaTypes (resolver, tdCache, assemblies, userAssemblies, useMarshalMethods);
var jcwContext = new JCWGeneratorContext (arch, resolver, assemblies.Values, javaTypesForJCW, tdCache, useMarshalMethods);
var jcwGenerator = new JCWGenerator (Log, jcwContext) {
CodeGenerationTarget = string.Equals (AndroidRuntime, "MonoVM", StringComparison.OrdinalIgnoreCase) ? JavaPeerStyle.XAJavaInterop1 : JavaPeerStyle.JavaInterop1
CodeGenerationTarget = androidRuntime == Xamarin.Android.Tasks.AndroidRuntime.MonoVM ? JavaPeerStyle.XAJavaInterop1 : JavaPeerStyle.JavaInterop1
};
bool success;

Expand Down
8 changes: 8 additions & 0 deletions src/Xamarin.Android.Build.Tasks/Utilities/AndroidRuntime.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace Xamarin.Android.Tasks;

public enum AndroidRuntime
{
MonoVM,
CoreCLR,
NativeAOT,
}
4 changes: 2 additions & 2 deletions src/Xamarin.Android.Build.Tasks/Utilities/ManifestDocument.cs
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ internal class ManifestDocument
public bool ForceDebuggable { get; set; }
public string VersionName { get; set; }
public IVersionResolver VersionResolver { get; set; } = new MonoAndroidHelperVersionResolver ();
public string AndroidRuntime { get; set; } = "MonoVM";
public AndroidRuntime AndroidRuntime { get; set; }

string versionCode;

Expand Down Expand Up @@ -673,7 +673,7 @@ XElement CreateApplicationElement (XElement manifest, string applicationClass, L

IList<string> AddMonoRuntimeProviders (XElement app)
{
if (!string.Equals (AndroidRuntime, "MonoVM", StringComparison.OrdinalIgnoreCase)) {
if (AndroidRuntime != AndroidRuntime.MonoVM) {
//TODO: implement provider logic for non-Mono runtimes
return [];
}
Expand Down
11 changes: 11 additions & 0 deletions src/Xamarin.Android.Build.Tasks/Utilities/MonoAndroidHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -851,5 +851,16 @@ public static string QuoteFileNameArgument (string fileName)
builder.AppendFileNameIfNotNull (fileName);
return builder.ToString ();
}

public static AndroidRuntime ParseAndroidRuntime (string androidRuntime)
{
if (string.Equals (androidRuntime, "CoreCLR", StringComparison.OrdinalIgnoreCase))
return AndroidRuntime.CoreCLR;
if (string.Equals (androidRuntime, "NativeAOT", StringComparison.OrdinalIgnoreCase))
return AndroidRuntime.NativeAOT;

// Default runtime is MonoVM
return AndroidRuntime.MonoVM;
}
}
}

0 comments on commit 0e0b648

Please sign in to comment.