From 09e6c0329f2e65bd75690989aa7ccad16ceb3320 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Thu, 1 Jul 2021 17:00:34 +0200 Subject: [PATCH] [dotnet] Only list linker flags for assemblies after we've computed them. This means not listing per-assembly linker flags for only binding projects, but delay it until we've computed the linker flags for all assemblies (and reflect this in variable names as well). --- dotnet/targets/Xamarin.Shared.Sdk.targets | 8 ++++---- .../Steps/ComputeNativeBuildFlagsStep.cs | 17 +++++++++++++++++ .../Steps/ExtractBindingLibrariesStep.cs | 17 ----------------- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/dotnet/targets/Xamarin.Shared.Sdk.targets b/dotnet/targets/Xamarin.Shared.Sdk.targets index 73881bb0ef..0ce5945f3c 100644 --- a/dotnet/targets/Xamarin.Shared.Sdk.targets +++ b/dotnet/targets/Xamarin.Shared.Sdk.targets @@ -559,9 +559,9 @@ - - - + + + @@ -851,7 +851,7 @@ EntitlementsInExecutable="$(_CompiledEntitlements)" FrameworkRPath="$(_EmbeddedFrameworksRPath)" Frameworks="@(_NativeExecutableFrameworks);@(_BindingLibraryFrameworks)" - LinkerFlags="@(_BindingLibraryLinkerFlags);@(_ReferencesLinkerFlags);@(_MainLinkerFlags)" + LinkerFlags="@(_AssemblyLinkerFlags);@(_ReferencesLinkerFlags);@(_MainLinkerFlags)" LinkWithLibraries="@(_XamarinMainLibraries);@(_BindingLibraryLinkWith);@(_MainLinkWith)" MinimumOSVersion="$(_MinimumOSVersion)" NativeReferences="@(_FileNativeReference);@(_FrameworkNativeReference)" diff --git a/tools/dotnet-linker/Steps/ComputeNativeBuildFlagsStep.cs b/tools/dotnet-linker/Steps/ComputeNativeBuildFlagsStep.cs index bec18ab4af..9aa1e19204 100644 --- a/tools/dotnet-linker/Steps/ComputeNativeBuildFlagsStep.cs +++ b/tools/dotnet-linker/Steps/ComputeNativeBuildFlagsStep.cs @@ -27,6 +27,23 @@ namespace Xamarin.Linker { } Configuration.WriteOutputForMSBuild ("_LinkerFrameworks", linkerFrameworks); + + // Tell MSBuild about any additional linker flags we found + var linkerFlags = new List (); + foreach (var asm in Configuration.Target.Assemblies) { + if (asm.LinkerFlags == null) + continue; + foreach (var arg in asm.LinkerFlags) { + var item = new MSBuildItem { + Include = arg, + Metadata = new Dictionary { + { "Assembly", asm.Identity }, + }, + }; + linkerFlags.Add (item); + } + } + Configuration.WriteOutputForMSBuild ("_AssemblyLinkerFlags", linkerFlags); } } } diff --git a/tools/dotnet-linker/Steps/ExtractBindingLibrariesStep.cs b/tools/dotnet-linker/Steps/ExtractBindingLibrariesStep.cs index 709efaeab6..044226f61b 100644 --- a/tools/dotnet-linker/Steps/ExtractBindingLibrariesStep.cs +++ b/tools/dotnet-linker/Steps/ExtractBindingLibrariesStep.cs @@ -55,23 +55,6 @@ namespace Xamarin.Linker { } } Configuration.WriteOutputForMSBuild ("_BindingLibraryFrameworks", frameworks); - - // Tell MSBuild about any additional linker flags we found - var linkerFlags = new List (); - foreach (var asm in Configuration.Target.Assemblies) { - if (asm.LinkerFlags == null) - continue; - foreach (var arg in asm.LinkerFlags) { - var item = new MSBuildItem { - Include = arg, - Metadata = new Dictionary { - { "Assembly", asm.Identity }, - }, - }; - linkerFlags.Add (item); - } - } - Configuration.WriteOutputForMSBuild ("_BindingLibraryLinkerFlags", linkerFlags); } } }