From 2014bf68c3daaf22768af7f484aa7ce517592bb6 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Thu, 15 Jul 2021 11:57:21 +0200 Subject: [PATCH] [tools] Compute the llvm output file and pass it to the AOT compiler / native linker --- dotnet/targets/Xamarin.Shared.Sdk.targets | 1 + tools/dotnet-linker/Steps/ComputeAOTArguments.cs | 5 ++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dotnet/targets/Xamarin.Shared.Sdk.targets b/dotnet/targets/Xamarin.Shared.Sdk.targets index c29eb68d20..65830c9904 100644 --- a/dotnet/targets/Xamarin.Shared.Sdk.targets +++ b/dotnet/targets/Xamarin.Shared.Sdk.targets @@ -738,6 +738,7 @@ <_XamarinMainLibraries Include="@(_AssembliesToAOT -> '%(ObjectFile)')" /> + <_XamarinMainLibraries Include="@(_AssembliesToAOT -> '%(LLVMFile)')" /> diff --git a/tools/dotnet-linker/Steps/ComputeAOTArguments.cs b/tools/dotnet-linker/Steps/ComputeAOTArguments.cs index 79d90cefec..0f84e396f1 100644 --- a/tools/dotnet-linker/Steps/ComputeAOTArguments.cs +++ b/tools/dotnet-linker/Steps/ComputeAOTArguments.cs @@ -36,9 +36,7 @@ namespace Xamarin.Linker { var arch = abi.AsArchString (); var aotAssembly = Path.Combine (outputDirectory, arch, Path.GetFileName (input) + ".s"); var aotData = Path.Combine (outputDirectory, arch, Path.GetFileNameWithoutExtension (input) + ".aotdata"); - var llvmFile = string.Empty; - if ((abi & Abi.LLVM) == Abi.LLVM) - throw ErrorHelper.CreateError (99, $"Support for LLVM hasn't been implemented yet."); + var llvmFile = Configuration.Application.IsLLVM ? Path.Combine (outputDirectory, arch, Path.GetFileName (input) + ".llvm.o") : string.Empty; var objectFile = Path.Combine (outputDirectory, arch, Path.GetFileName (input) + ".o"); app.GetAotArguments (asm.FullPath, abi, outputDirectory, aotAssembly, llvmFile, aotData, out var processArguments, out var aotArguments, Path.GetDirectoryName (Configuration.AOTCompiler)); item.Metadata.Add ("Arguments", StringUtils.FormatArguments (aotArguments)); @@ -47,6 +45,7 @@ namespace Xamarin.Linker { item.Metadata.Add ("Arch", arch); item.Metadata.Add ("AOTData", aotData); item.Metadata.Add ("AOTAssembly", aotAssembly); + item.Metadata.Add ("LLVMFile", llvmFile); item.Metadata.Add ("ObjectFile", objectFile); }