From c853ea1d7e73abb437f3eae6464e30b265fdc6ff Mon Sep 17 00:00:00 2001 From: Marek Habersack Date: Fri, 21 Feb 2025 09:31:27 +0100 Subject: [PATCH] Fix after rebase --- Xamarin.Android.sln | 7 + .../targets/Microsoft.Android.Sdk.targets | 3 +- .../WorkloadManifest.in.json | 4 +- .../Tasks/CollectAssemblyFilesForArchive.cs | 15 +-- .../Tasks/GenerateJavaStubs.cs | 33 ++++- .../Tasks/WrapAssembliesAsSharedLibraries.cs | 5 +- .../BuildReleaseArm64SimpleDotNet.apkdesc | 26 ++-- .../BuildReleaseArm64XFormsDotNet.apkdesc | 70 +++++----- .../Utilities/ManifestDocument.cs | 2 +- .../Xamarin.Android.Common.targets | 6 +- src/native/CMakeLists.txt | 10 +- src/native/common/include/shared/log_level.hh | 126 +++--------------- .../mono/monodroid/internal-pinvokes.cc | 7 - src/native/mono/shared/cpp-util.hh | 2 +- 14 files changed, 125 insertions(+), 191 deletions(-) diff --git a/Xamarin.Android.sln b/Xamarin.Android.sln index faccbca0dbd..c24d1c97d51 100644 --- a/Xamarin.Android.sln +++ b/Xamarin.Android.sln @@ -127,6 +127,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "proguard-android", "src\pro EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "native-clr", "src\native\native-clr.csproj", "{39F49484-872A-489D-8E6B-3BC532DD571D}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Android.Runtime.NativeAOT", "src\Microsoft.Android.Runtime.NativeAOT\Microsoft.Android.Runtime.NativeAOT.csproj", "{E8831F32-11D7-D42C-E43C-711998BC357A}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|AnyCPU = Debug|AnyCPU @@ -353,6 +355,10 @@ Global {39F49484-872A-489D-8E6B-3BC532DD571D}.Debug|AnyCPU.Build.0 = Debug|Any CPU {39F49484-872A-489D-8E6B-3BC532DD571D}.Release|AnyCPU.ActiveCfg = Release|Any CPU {39F49484-872A-489D-8E6B-3BC532DD571D}.Release|AnyCPU.Build.0 = Release|Any CPU + {E8831F32-11D7-D42C-E43C-711998BC357A}.Debug|AnyCPU.ActiveCfg = Debug|Any CPU + {E8831F32-11D7-D42C-E43C-711998BC357A}.Debug|AnyCPU.Build.0 = Debug|Any CPU + {E8831F32-11D7-D42C-E43C-711998BC357A}.Release|AnyCPU.ActiveCfg = Release|Any CPU + {E8831F32-11D7-D42C-E43C-711998BC357A}.Release|AnyCPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -413,6 +419,7 @@ Global {5E806C9F-1B67-4B6B-A6AB-258834250DBB} = {FFCF518F-2A4A-40A2-9174-2EE13B76C723} {5FD0133B-69E5-4474-9B67-9FD1D0150C70} = {FFCF518F-2A4A-40A2-9174-2EE13B76C723} {39F49484-872A-489D-8E6B-3BC532DD571D} = {FFCF518F-2A4A-40A2-9174-2EE13B76C723} + {E8831F32-11D7-D42C-E43C-711998BC357A} = {04E3E11E-B47D-4599-8AFC-50515A95E715} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {53A1F287-EFB2-4D97-A4BB-4A5E145613F6} diff --git a/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.targets b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.targets index 149c3ae323b..57830d3638c 100644 --- a/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.targets +++ b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.targets @@ -26,7 +26,8 @@ + Condition="Exists('$(MSBuildThisFileDirectory)..\tools\Xamarin.Android.Common.Debugging.props') And '$(DesignTimeBuild)' != 'true' "/> + 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 a61053ed7d1..50fc5a22030 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 @@ -15,8 +15,8 @@ ], "platforms": [ "win-x64", "win-arm64", "linux-x64", "linux-arm64", "osx-x64", "osx-arm64" ], "extends" : [ - "microsoft-net-runtime-android-net8", - "microsoft-net-runtime-android-aot-net8", + "microsoft-net-runtime-android-net9", + "microsoft-net-runtime-android-aot-net9", "microsoft-net-runtime-android", "microsoft-net-runtime-android-aot" ] diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/CollectAssemblyFilesForArchive.cs b/src/Xamarin.Android.Build.Tasks/Tasks/CollectAssemblyFilesForArchive.cs index 9de0d72827b..a9b50ac09ce 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/CollectAssemblyFilesForArchive.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/CollectAssemblyFilesForArchive.cs @@ -22,14 +22,7 @@ public class CollectAssemblyFilesToCompress : AndroidTask [Required] public string AssemblyCompressionDirectory { get; set; } = ""; - [Required] - public ITaskItem[] ResolvedRuntimePacks { get; set; } = Array.Empty (); - - [Required] - public string ApkOutputPath { get; set; } = ""; - - [Required] - public string AppSharedLibrariesDir { get; set; } = ""; + public bool EmbedAssemblies { get; set; } [Required] public bool EnableCompression { get; set; } @@ -62,9 +55,9 @@ public override bool RunTask () ResolvedFrameworkAssembliesOutput = ResolvedFrameworkAssemblies; ResolvedUserAssembliesOutput = ResolvedUserAssemblies; - DSOWrapperGenerator.Config dsoWrapperConfig = DSOWrapperGenerator.GetConfig (Log, AndroidBinUtilsDirectory, ResolvedRuntimePacks, IntermediateOutputPath); - bool compress = !IncludeDebugSymbols && EnableCompression; - IDictionary>? compressedAssembliesInfo = null; + // We aren't going to compress any assemblies + if (IncludeDebugSymbols || !EnableCompression || !EmbedAssemblies) + return true; var assemblies_to_compress = new List (); var compressed_assemblies_info = GetCompressedAssemblyInfo (); diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/GenerateJavaStubs.cs b/src/Xamarin.Android.Build.Tasks/Tasks/GenerateJavaStubs.cs index 1d0b3dfc24c..8d0f9133286 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/GenerateJavaStubs.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/GenerateJavaStubs.cs @@ -96,6 +96,14 @@ public class GenerateJavaStubs : AndroidTask [Required] public string AndroidRuntime { get; set; } = ""; + public string CodeGenerationTarget { get; set; } = ""; + + [Required] + public string TargetName { get; set; } = ""; + + AndroidRuntime androidRuntime; + JavaPeerStyle codeGenerationTarget; + internal const string AndroidSkipJavaStubGeneration = "AndroidSkipJavaStubGeneration"; public override bool RunTask () @@ -299,10 +307,23 @@ Dictionary MaybeGetArchAssemblies (Dictionary additionalProviders) { - if (androidRuntime != Xamarin.Android.Tasks.AndroidRuntime.MonoVM && - androidRuntime != Xamarin.Android.Tasks.AndroidRuntime.CoreCLR) { - Log.LogDebugMessage ($"Skipping MonoRuntimeProvider generation for: {androidRuntime}"); - return; + if (androidRuntime != Xamarin.Android.Tasks.AndroidRuntime.CoreCLR) { + // Create additional runtime provider java sources. + bool isMonoVM = androidRuntime == Xamarin.Android.Tasks.AndroidRuntime.MonoVM; + string providerTemplateFile = isMonoVM ? + "MonoRuntimeProvider.Bundled.java" : + "NativeAotRuntimeProvider.java"; + string providerTemplate = GetResource (providerTemplateFile); + + foreach (var provider in additionalProviders) { + var contents = providerTemplate.Replace (isMonoVM ? "MonoRuntimeProvider" : "NativeAotRuntimeProvider", provider); + var real_provider = isMonoVM ? + Path.Combine (OutputDirectory, "src", "mono", provider + ".java") : + Path.Combine (OutputDirectory, "src", "net", "dot", "jni", "nativeaot", provider + ".java"); + Files.CopyIfStringChanged (contents, real_provider); + } + } else { + Log.LogDebugMessage ($"Skipping android.content.ContentProvider generation for: {androidRuntime}"); } // For NativeAOT, generate JavaInteropRuntime.java @@ -360,7 +381,7 @@ IList MergeManifest (NativeCodeGenState codeGenState, Dictionary MergeManifest (NativeCodeGenState codeGenState, Dictionary allJavaTypes, List 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 = androidRuntime == Xamarin.Android.Tasks.AndroidRuntime.MonoVM ? JavaPeerStyle.XAJavaInterop1 : JavaPeerStyle.JavaInterop1 + CodeGenerationTarget = codeGenerationTarget, }; bool success; diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/WrapAssembliesAsSharedLibraries.cs b/src/Xamarin.Android.Build.Tasks/Tasks/WrapAssembliesAsSharedLibraries.cs index ab297dd6d29..ba6414bc93e 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/WrapAssembliesAsSharedLibraries.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/WrapAssembliesAsSharedLibraries.cs @@ -24,6 +24,9 @@ public class WrapAssembliesAsSharedLibraries : AndroidTask [Required] public string AndroidBinUtilsDirectory { get; set; } = ""; + [Required] + public ITaskItem[] ResolvedRuntimePacks { get; set; } = Array.Empty (); + public bool IncludeDebugSymbols { get; set; } [Required] @@ -42,7 +45,7 @@ public class WrapAssembliesAsSharedLibraries : AndroidTask public override bool RunTask () { - var wrapper_config = DSOWrapperGenerator.GetConfig (Log, AndroidBinUtilsDirectory, IntermediateOutputPath); + var wrapper_config = DSOWrapperGenerator.GetConfig (Log, AndroidBinUtilsDirectory, ResolvedRuntimePacks, IntermediateOutputPath); var files = new PackageFileListBuilder (); if (UseAssemblyStore) diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.apkdesc b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.apkdesc index be94e0bcbf7..0d09c5250f4 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.apkdesc +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.apkdesc @@ -5,34 +5,34 @@ "Size": 3036 }, "classes.dex": { - "Size": 22444 + "Size": 22484 }, "lib/arm64-v8a/lib__Microsoft.Android.Resource.Designer.dll.so": { - "Size": 18296 + "Size": 18288 }, "lib/arm64-v8a/lib_Java.Interop.dll.so": { - "Size": 86352 + "Size": 86688 }, "lib/arm64-v8a/lib_Mono.Android.dll.so": { - "Size": 116920 + "Size": 117712 }, "lib/arm64-v8a/lib_Mono.Android.Runtime.dll.so": { - "Size": 22408 + "Size": 22384 }, "lib/arm64-v8a/lib_System.Console.dll.so": { - "Size": 24376 + "Size": 24392 }, "lib/arm64-v8a/lib_System.Linq.dll.so": { "Size": 25336 }, "lib/arm64-v8a/lib_System.Private.CoreLib.dll.so": { - "Size": 634384 + "Size": 628216 }, "lib/arm64-v8a/lib_System.Runtime.dll.so": { - "Size": 20040 + "Size": 20056 }, "lib/arm64-v8a/lib_System.Runtime.InteropServices.dll.so": { - "Size": 21584 + "Size": 21480 }, "lib/arm64-v8a/lib_UnnamedProject.dll.so": { "Size": 20024 @@ -44,10 +44,10 @@ "Size": 36440 }, "lib/arm64-v8a/libmonodroid.so": { - "Size": 1501240 + "Size": 1524752 }, "lib/arm64-v8a/libmonosgen-2.0.so": { - "Size": 3196512 + "Size": 3101112 }, "lib/arm64-v8a/libSystem.Globalization.Native.so": { "Size": 71976 @@ -62,7 +62,7 @@ "Size": 165000 }, "lib/arm64-v8a/libxamarin-app.so": { - "Size": 18264 + "Size": 19536 }, "META-INF/BNDLTOOL.RSA": { "Size": 1221 @@ -98,5 +98,5 @@ "Size": 1904 } }, - "PackageSize": 3111445 + "PackageSize": 3078677 } \ No newline at end of file diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.apkdesc b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.apkdesc index b3173a6f72f..ab4f60772ce 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.apkdesc +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.apkdesc @@ -5,7 +5,7 @@ "Size": 6652 }, "classes.dex": { - "Size": 9172764 + "Size": 9172540 }, "kotlin/annotation/annotation.kotlin_builtins": { "Size": 928 @@ -35,22 +35,22 @@ "Size": 25424 }, "lib/arm64-v8a/lib_Java.Interop.dll.so": { - "Size": 94736 + "Size": 94792 }, "lib/arm64-v8a/lib_Mono.Android.dll.so": { - "Size": 524256 + "Size": 535520 }, "lib/arm64-v8a/lib_Mono.Android.Runtime.dll.so": { - "Size": 22408 + "Size": 22432 }, "lib/arm64-v8a/lib_mscorlib.dll.so": { "Size": 21448 }, "lib/arm64-v8a/lib_netstandard.dll.so": { - "Size": 23072 + "Size": 23096 }, "lib/arm64-v8a/lib_System.Collections.Concurrent.dll.so": { - "Size": 29792 + "Size": 29896 }, "lib/arm64-v8a/lib_System.Collections.dll.so": { "Size": 36304 @@ -59,7 +59,7 @@ "Size": 25776 }, "lib/arm64-v8a/lib_System.Collections.Specialized.dll.so": { - "Size": 23840 + "Size": 23856 }, "lib/arm64-v8a/lib_System.ComponentModel.dll.so": { "Size": 19608 @@ -71,31 +71,31 @@ "Size": 42480 }, "lib/arm64-v8a/lib_System.Console.dll.so": { - "Size": 24416 + "Size": 24440 }, "lib/arm64-v8a/lib_System.Core.dll.so": { - "Size": 19448 + "Size": 19464 }, "lib/arm64-v8a/lib_System.Diagnostics.DiagnosticSource.dll.so": { "Size": 28456 }, "lib/arm64-v8a/lib_System.Diagnostics.TraceSource.dll.so": { - "Size": 24688 + "Size": 24704 }, "lib/arm64-v8a/lib_System.dll.so": { - "Size": 19848 + "Size": 19864 }, "lib/arm64-v8a/lib_System.Drawing.dll.so": { - "Size": 19424 + "Size": 19448 }, "lib/arm64-v8a/lib_System.Drawing.Primitives.dll.so": { - "Size": 30040 + "Size": 30056 }, "lib/arm64-v8a/lib_System.Formats.Asn1.dll.so": { - "Size": 49928 + "Size": 50312 }, "lib/arm64-v8a/lib_System.IO.Compression.Brotli.dll.so": { - "Size": 29472 + "Size": 29496 }, "lib/arm64-v8a/lib_System.IO.Compression.dll.so": { "Size": 33808 @@ -107,7 +107,7 @@ "Size": 38784 }, "lib/arm64-v8a/lib_System.Linq.Expressions.dll.so": { - "Size": 185800 + "Size": 185880 }, "lib/arm64-v8a/lib_System.Net.Http.dll.so": { "Size": 90320 @@ -116,55 +116,55 @@ "Size": 41152 }, "lib/arm64-v8a/lib_System.Net.Requests.dll.so": { - "Size": 21544 + "Size": 21568 }, "lib/arm64-v8a/lib_System.ObjectModel.dll.so": { - "Size": 27064 + "Size": 27096 }, "lib/arm64-v8a/lib_System.Private.CoreLib.dll.so": { - "Size": 956552 + "Size": 958672 }, "lib/arm64-v8a/lib_System.Private.DataContractSerialization.dll.so": { - "Size": 216720 + "Size": 216680 }, "lib/arm64-v8a/lib_System.Private.Uri.dll.so": { "Size": 62784 }, "lib/arm64-v8a/lib_System.Private.Xml.dll.so": { - "Size": 237120 + "Size": 236920 }, "lib/arm64-v8a/lib_System.Private.Xml.Linq.dll.so": { - "Size": 35584 + "Size": 35600 }, "lib/arm64-v8a/lib_System.Runtime.dll.so": { "Size": 20216 }, "lib/arm64-v8a/lib_System.Runtime.InteropServices.dll.so": { - "Size": 21584 + "Size": 21480 }, "lib/arm64-v8a/lib_System.Runtime.Numerics.dll.so": { - "Size": 54408 + "Size": 54168 }, "lib/arm64-v8a/lib_System.Runtime.Serialization.dll.so": { - "Size": 19352 + "Size": 19368 }, "lib/arm64-v8a/lib_System.Runtime.Serialization.Formatters.dll.so": { - "Size": 20328 + "Size": 20344 }, "lib/arm64-v8a/lib_System.Runtime.Serialization.Primitives.dll.so": { - "Size": 21448 + "Size": 21472 }, "lib/arm64-v8a/lib_System.Security.Cryptography.dll.so": { "Size": 81248 }, "lib/arm64-v8a/lib_System.Text.RegularExpressions.dll.so": { - "Size": 183584 + "Size": 186352 }, "lib/arm64-v8a/lib_System.Xml.dll.so": { - "Size": 19248 + "Size": 19272 }, "lib/arm64-v8a/lib_System.Xml.Linq.dll.so": { - "Size": 19264 + "Size": 19280 }, "lib/arm64-v8a/lib_UnnamedProject.dll.so": { "Size": 22096 @@ -245,10 +245,10 @@ "Size": 36440 }, "lib/arm64-v8a/libmonodroid.so": { - "Size": 1501240 + "Size": 1524624 }, "lib/arm64-v8a/libmonosgen-2.0.so": { - "Size": 3196512 + "Size": 3101160 }, "lib/arm64-v8a/libSystem.Globalization.Native.so": { "Size": 71976 @@ -263,7 +263,7 @@ "Size": 165000 }, "lib/arm64-v8a/libxamarin-app.so": { - "Size": 349440 + "Size": 349384 }, "META-INF/androidx.activity_activity.version": { "Size": 6 @@ -416,7 +416,7 @@ "Size": 6 }, "META-INF/BNDLTOOL.RSA": { - "Size": 1223 + "Size": 1221 }, "META-INF/BNDLTOOL.SF": { "Size": 98577 @@ -2486,5 +2486,5 @@ "Size": 812848 } }, - "PackageSize": 10947851 + "PackageSize": 10923275 } \ No newline at end of file diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/ManifestDocument.cs b/src/Xamarin.Android.Build.Tasks/Utilities/ManifestDocument.cs index f24db218d69..cb42ffafaac 100644 --- a/src/Xamarin.Android.Build.Tasks/Utilities/ManifestDocument.cs +++ b/src/Xamarin.Android.Build.Tasks/Utilities/ManifestDocument.cs @@ -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; diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets index 0673bc11636..3a3c75e966b 100644 --- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets +++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets @@ -1525,6 +1525,7 @@ because xbuild doesn't support framework reference assemblies. - + + UseAssemblyStore="$(AndroidUseAssemblyStore)" + ResolvedRuntimePacks="@(ResolvedRuntimePack)"> diff --git a/src/native/CMakeLists.txt b/src/native/CMakeLists.txt index b94ad11879f..a1cee1367a6 100644 --- a/src/native/CMakeLists.txt +++ b/src/native/CMakeLists.txt @@ -586,11 +586,11 @@ else() add_subdirectory(mono/monodroid) add_custom_target(run_static_analysis - COMMAND ${ANDROID_TOOLCHAIN_ROOT}/bin/clang-check -analyze -p="${CMAKE_CURRENT_BINARY_DIR}" ${CLANG_CHECK_SOURCES} > ${CMAKE_SOURCE_DIR}/static-analysis.${ANDROID_ABI}.${CMAKE_BUILD_TYPE}.txt 2>&1 - COMMAND_EXPAND_LISTS - WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" - USES_TERMINAL - ) + COMMAND ${ANDROID_TOOLCHAIN_ROOT}/bin/clang-check -analyze -p="${CMAKE_CURRENT_BINARY_DIR}" ${CLANG_CHECK_SOURCES} > ${CMAKE_SOURCE_DIR}/static-analysis.${ANDROID_ABI}.${CMAKE_BUILD_TYPE}.txt 2>&1 + COMMAND_EXPAND_LISTS + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" + USES_TERMINAL + ) endif() if (IS_CLR_RUNTIME) diff --git a/src/native/common/include/shared/log_level.hh b/src/native/common/include/shared/log_level.hh index 66b1cae5097..fc7a7566910 100644 --- a/src/native/common/include/shared/log_level.hh +++ b/src/native/common/include/shared/log_level.hh @@ -1,112 +1,26 @@ #pragma once #include -#include -#include -#include - -#include "java-interop-logger.h" -#include "log_level.hh" - -// We redeclare macros here -#if defined(log_debug) -#undef log_debug -#endif - -#if defined(log_info) -#undef log_info -#endif - -#define DO_LOG_FMT(_level, _category_, _fmt_, ...) \ - do { \ - if ((log_categories & ((_category_))) != 0) { \ - ::log_ ## _level ## _nocheck_fmt ((_category_), _fmt_ __VA_OPT__(,) __VA_ARGS__); \ - } \ - } while (0) - -// -// For std::format spec, see https://en.cppreference.com/w/cpp/utility/format/spec -// - -// NOTE: _fmt_ takes arguments in the std::format style not the POSIX printf style -#define log_debug(_category_, _fmt_, ...) DO_LOG_FMT (debug, (_category_), (_fmt_) __VA_OPT__(,) __VA_ARGS__) - -// NOTE: _fmt_ takes arguments in the std::format style not the POSIX printf style -#define log_info(_category_, _fmt_, ...) DO_LOG_FMT (info, (_category_), (_fmt_) __VA_OPT__(,) __VA_ARGS__) - -// NOTE: _fmt_ takes arguments in the std::format style not the POSIX printf style -#define log_warn(_category_, _fmt_, ...) log_warn_fmt ((_category_), (_fmt_) __VA_OPT__(,) __VA_ARGS__) - -// NOTE: _fmt_ takes arguments in the std::format style not the POSIX printf style -#define log_error(_category_, _fmt_, ...) log_error_fmt ((_category_), (_fmt_) __VA_OPT__(,) __VA_ARGS__) - -// NOTE: _fmt_ takes arguments in the std::format style not the POSIX printf style -#define log_fatal(_category_, _fmt_, ...) log_fatal_fmt ((_category_), (_fmt_) __VA_OPT__(,) __VA_ARGS__) namespace xamarin::android { - // A slightly faster alternative to other log functions as it doesn't parse the message - // for format placeholders nor it uses variable arguments - void log_write (LogCategories category, LogLevel level, const char *message) noexcept; -} - -template [[gnu::always_inline]] -static inline constexpr void log_debug_nocheck_fmt (LogCategories category, std::format_string fmt, Args&& ...args) -{ - log_write (category, xamarin::android::LogLevel::Debug, std::format (fmt, std::forward(args)...).c_str ()); -} - -[[gnu::always_inline]] -static inline constexpr void log_debug_nocheck (LogCategories category, std::string_view const& message) noexcept -{ - log_write (category, xamarin::android::LogLevel::Debug, message.data ()); -} - -template [[gnu::always_inline]] -static inline constexpr void log_info_nocheck_fmt (LogCategories category, std::format_string fmt, Args&& ...args) -{ - log_write (category, xamarin::android::LogLevel::Info, std::format (fmt, std::forward(args)...).c_str ()); + enum class LogTimingCategories : uint32_t + { + Default = 0, + Bare = 1 << 0, + FastBare = 1 << 1, + }; + + // Keep in sync with LogLevel defined in JNIEnv.cs + enum class LogLevel : unsigned int + { + Unknown = 0x00, + Default = 0x01, + Verbose = 0x02, + Debug = 0x03, + Info = 0x04, + Warn = 0x05, + Error = 0x06, + Fatal = 0x07, + Silent = 0x08 + }; } - -[[gnu::always_inline]] -static inline constexpr void log_info_nocheck (LogCategories category, std::string_view const& message) noexcept -{ - log_write (category, xamarin::android::LogLevel::Info, message.data ()); -} - -template [[gnu::always_inline]] -static inline constexpr void log_warn_fmt (LogCategories category, std::format_string fmt, Args&& ...args) noexcept -{ - log_write (category, xamarin::android::LogLevel::Warn, std::format (fmt, std::forward(args)...).c_str ()); -} - -[[gnu::always_inline]] -static inline constexpr void log_warn_fmt (LogCategories category, std::string_view const& message) noexcept -{ - log_write (category, xamarin::android::LogLevel::Warn, message.data ()); -} - -template [[gnu::always_inline]] -static inline constexpr void log_error_fmt (LogCategories category, std::format_string fmt, Args&& ...args) noexcept -{ - log_write (category, xamarin::android::LogLevel::Error, std::format (fmt, std::forward(args)...).c_str ()); -} - -[[gnu::always_inline]] -static inline constexpr void log_error_fmt (LogCategories category, std::string_view const& message) noexcept -{ - log_write (category, xamarin::android::LogLevel::Error, message.data ()); -} - -template [[gnu::always_inline]] -static inline constexpr void log_fatal_fmt (LogCategories category, std::format_string fmt, Args&& ...args) noexcept -{ - log_write (category, xamarin::android::LogLevel::Fatal, std::format (fmt, std::forward(args)...).c_str ()); -} - -[[gnu::always_inline]] -static inline constexpr void log_fatal_fmt (LogCategories category, std::string_view const& message) noexcept -{ - log_write (category, xamarin::android::LogLevel::Fatal, message.data ()); -} - -extern unsigned int log_categories; diff --git a/src/native/mono/monodroid/internal-pinvokes.cc b/src/native/mono/monodroid/internal-pinvokes.cc index 7c3dbab4933..41a98f6243d 100644 --- a/src/native/mono/monodroid/internal-pinvokes.cc +++ b/src/native/mono/monodroid/internal-pinvokes.cc @@ -134,13 +134,6 @@ monodroid_clear_gdb_wait () MonodroidRuntime::set_monodroid_gdb_wait (false); } -void* -_monodroid_get_identity_hash_code (JNIEnv *env, void *v) -{ - intptr_t rv = env->CallStaticIntMethod (MonodroidRuntime::get_java_class_System (), MonodroidRuntime::get_java_class_method_System_identityHashCode (), v); - return (void*) rv; -} - void* _monodroid_timezone_get_default_id () { diff --git a/src/native/mono/shared/cpp-util.hh b/src/native/mono/shared/cpp-util.hh index abbaa95bb79..aa5df834a37 100644 --- a/src/native/mono/shared/cpp-util.hh +++ b/src/native/mono/shared/cpp-util.hh @@ -129,7 +129,7 @@ abort_if_negative_integer_argument (int arg, const char *arg_name, std::source_l arg > 0, [&arg_name, &sloc] { return xamarin::android::detail::_format_message ( - "%s: parameter '%s' must be a valid pointer", + "%s: parameter '%s' must be a positive integer", xamarin::android::detail::get_function_name (sloc.function_name ()).c_str (), arg_name );