diff --git a/build-tools/scripts/Ndk.projitems.in b/build-tools/scripts/Ndk.projitems.in index fbc98d84a4b..e5c066b0c32 100644 --- a/build-tools/scripts/Ndk.projitems.in +++ b/build-tools/scripts/Ndk.projitems.in @@ -11,6 +11,7 @@ @NDK_X86_API_NET@ @NDK_X86_64_API@ @NDK_X86_64_API_NET@ + @NDK_ARMEABI_V7_API_NON_MONO@ @NDK_ARM64_V8A_API_NON_MONO@ @NDK_X86_64_API_NON_MONO@ @@ -21,9 +22,10 @@ Condition=" $(AndroidSupportedTargetJitAbisForConditionalChecks.Contains (':armeabi-v7a:')) "> $(AndroidNdkApiLevel_ArmV7a) $(AndroidNdkApiLevel_Arm) + $(AndroidNdkApiLevelNonMono_Arm) android-arm True - False + True False diff --git a/build-tools/scripts/XABuildConfig.cs.in b/build-tools/scripts/XABuildConfig.cs.in index 5b8fd6b22a1..a452ad689fc 100644 --- a/build-tools/scripts/XABuildConfig.cs.in +++ b/build-tools/scripts/XABuildConfig.cs.in @@ -39,7 +39,8 @@ namespace Xamarin.Android.Tools }; public static readonly Dictionary ArchToApiLevelNonMono = new () { - { AndroidTargetArch.Arm64, @NDK_ARM64_V8A_NONMONO_API@ }, + { AndroidTargetArch.Arm, @NDK_ARMEABI_V7_NONMONO_API@ }, + { AndroidTargetArch.Arm64, @NDK_ARM64_V8A_NONMONO_API@ }, { AndroidTargetArch.X86_64, @NDK_X86_64_NONMONO_API@ }, }; } diff --git a/build-tools/xaprepare/xaprepare/Steps/Step_GenerateFiles.cs b/build-tools/xaprepare/xaprepare/Steps/Step_GenerateFiles.cs index 3198bc73d29..ec0ba284564 100644 --- a/build-tools/xaprepare/xaprepare/Steps/Step_GenerateFiles.cs +++ b/build-tools/xaprepare/xaprepare/Steps/Step_GenerateFiles.cs @@ -124,8 +124,9 @@ GeneratedFile GetCmakePresetsCommon (Context context, string sourcesDir) { "@NDK_ARM64_V8A_API_NET@", BuildAndroidPlatforms.NdkMinimumAPI }, { "@NDK_X86_API_NET@", BuildAndroidPlatforms.NdkMinimumAPILegacy32 }, { "@NDK_X86_64_API_NET@", BuildAndroidPlatforms.NdkMinimumAPI }, - { "@NDK_ARM64_V8A_NONMONO_API_NET@", BuildAndroidPlatforms.NdkMinimumNonMonoAPI }, - { "@NDK_X86_64_NONMONO_API_NET@", BuildAndroidPlatforms.NdkMinimumNonMonoAPI }, + { "@NDK_ARMEABI_V7_NONMONO_API_NET@", BuildAndroidPlatforms.NdkMinimumNonMonoAPI }, + { "@NDK_ARM64_V8A_NONMONO_API_NET@", BuildAndroidPlatforms.NdkMinimumNonMonoAPI }, + { "@NDK_X86_64_NONMONO_API_NET@", BuildAndroidPlatforms.NdkMinimumNonMonoAPI }, { "@XA_BUILD_CONFIGURATION@", context.Configuration }, { "@XA_TEST_OUTPUT_DIR@", Utilities.EscapePathSeparators (props.GetRequiredValue (KnownProperties.TestOutputDirectory)) }, }; @@ -197,6 +198,7 @@ GeneratedFile Get_XABuildConfig_cs (Context context) { "@NDK_ARM64_V8A_API@", BuildAndroidPlatforms.NdkMinimumAPI.ToString () }, { "@NDK_X86_API@", BuildAndroidPlatforms.NdkMinimumAPILegacy32.ToString ().ToString () }, { "@NDK_X86_64_API@", BuildAndroidPlatforms.NdkMinimumAPI.ToString ().ToString () }, + { "@NDK_ARMEABI_V7_NONMONO_API@", BuildAndroidPlatforms.NdkMinimumNonMonoAPI }, { "@NDK_ARM64_V8A_NONMONO_API@", BuildAndroidPlatforms.NdkMinimumNonMonoAPI }, { "@NDK_X86_64_NONMONO_API@", BuildAndroidPlatforms.NdkMinimumNonMonoAPI }, { "@XA_SUPPORTED_ABIS@", context.Properties.GetRequiredValue (KnownProperties.AndroidSupportedTargetJitAbis).Replace (':', ';') }, @@ -257,6 +259,7 @@ GeneratedFile Get_Ndk_projitems (Context context) { "@NDK_X86_64_API@", BuildAndroidPlatforms.NdkMinimumAPI.ToString () }, { "@NDK_X86_64_API_NET@", BuildAndroidPlatforms.NdkMinimumAPI.ToString () }, { "@NDK_ARM64_V8A_API_NON_MONO@", BuildAndroidPlatforms.NdkMinimumNonMonoAPI }, + { "@NDK_ARMEABI_V7_API_NON_MONO@", BuildAndroidPlatforms.NdkMinimumNonMonoAPI }, { "@NDK_X86_64_API_NON_MONO@", BuildAndroidPlatforms.NdkMinimumNonMonoAPI }, }; diff --git a/src/Xamarin.Android.Build.Tasks/Microsoft.NET.Sdk.Android/WorkloadManifest.in.json b/src/Xamarin.Android.Build.Tasks/Microsoft.NET.Sdk.Android/WorkloadManifest.in.json index 3d8b411c1fb..36714696245 100644 --- a/src/Xamarin.Android.Build.Tasks/Microsoft.NET.Sdk.Android/WorkloadManifest.in.json +++ b/src/Xamarin.Android.Build.Tasks/Microsoft.NET.Sdk.Android/WorkloadManifest.in.json @@ -12,6 +12,7 @@ "Microsoft.Android.Runtime.Mono.36.1.android-arm64", "Microsoft.Android.Runtime.Mono.36.1.android-x86", "Microsoft.Android.Runtime.Mono.36.1.android-x64", + "Microsoft.Android.Runtime.CoreCLR.36.1.android-arm", "Microsoft.Android.Runtime.CoreCLR.36.1.android-arm64", "Microsoft.Android.Runtime.CoreCLR.36.1.android-x64", "Microsoft.Android.Runtime.NativeAOT.36.1.android-arm64", @@ -86,6 +87,10 @@ "kind": "framework", "version": "@WORKLOAD_VERSION@" }, + "Microsoft.Android.Runtime.CoreCLR.36.1.android-arm": { + "kind": "framework", + "version": "@WORKLOAD_VERSION@" + }, "Microsoft.Android.Runtime.CoreCLR.36.1.android-arm64": { "kind": "framework", "version": "@WORKLOAD_VERSION@" diff --git a/src/native/CMakePresets.json.in b/src/native/CMakePresets.json.in index fb5c77267de..33bce5448ad 100644 --- a/src/native/CMakePresets.json.in +++ b/src/native/CMakePresets.json.in @@ -97,6 +97,17 @@ } }, + { + "name": "nonmono-common-armeabi-v7a", + "hidden": true, + "cacheVariables": { + "ANDROID_ABI": "armeabi-v7a", + "ANDROID_NATIVE_API_LEVEL": "@NDK_ARMEABI_V7_NONMONO_API_NET@", + "ANDROID_PLATFORM": "android-@NDK_ARMEABI_V7_NONMONO_API_NET@", + "ANDROID_RID": "android-arm" + } + }, + { "name": "common-arm64-v8a", "hidden": true, @@ -173,11 +184,21 @@ "inherits": ["default-common", "common-debug", "common-armeabi-v7a"] }, + { + "name": "coreclr-default-debug-armeabi-v7a", + "inherits": ["default-common", "common-debug", "nonmono-common-armeabi-v7a"] + }, + { "name": "default-release-armeabi-v7a", "inherits": ["default-common", "common-release", "common-armeabi-v7a"] }, + { + "name": "coreclr-default-release-armeabi-v7a", + "inherits": ["default-common", "common-release", "nonmono-common-armeabi-v7a"] + }, + { "name": "analyzers-debug-armeabi-v7a", "hidden": true, diff --git a/src/native/clr/host/typemap.cc b/src/native/clr/host/typemap.cc index 85e5a37a3a5..8a52077d360 100644 --- a/src/native/clr/host/typemap.cc +++ b/src/native/clr/host/typemap.cc @@ -146,7 +146,7 @@ auto TypeMapper::managed_to_java_debug (const char *typeName, const uint8_t *mvi dynamic_local_path_string full_type_name; full_type_name.append (typeName); - hash_t mvid_hash = xxhash::hash (mvid, 16z); // we must hope managed land called us with valid data + hash_t mvid_hash = xxhash::hash (reinterpret_cast(mvid), 16z); // we must hope managed land called us with valid data auto equal = [](TypeMapAssembly const& entry, hash_t key) -> bool { return entry.mvid_hash == key; }; auto less_than = [](TypeMapAssembly const& entry, hash_t key) -> bool { return entry.mvid_hash < key; }; diff --git a/src/native/native-clr.csproj b/src/native/native-clr.csproj index bb3445fafb0..2922e884487 100644 --- a/src/native/native-clr.csproj +++ b/src/native/native-clr.csproj @@ -9,7 +9,7 @@ arm64:x86_64 - arm64-v8a:x86_64 + armeabi-v7a:arm64-v8a:x86_64