[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).
This commit is contained in:
Rolf Bjarne Kvinge 2021-07-01 17:00:34 +02:00
Родитель d26bdf97bf
Коммит 09e6c0329f
3 изменённых файлов: 21 добавлений и 21 удалений

Просмотреть файл

@ -559,9 +559,9 @@
<ReadItemsFromFile SessionId="$(BuildSessionId)" File="$(_LinkerItemsDirectory)/_BindingLibraryLinkWith.items" Condition="Exists('$(_LinkerItemsDirectory)/_BindingLibraryLinkWith.items')">
<Output TaskParameter="Items" ItemName="_BindingLibraryLinkWith" />
</ReadItemsFromFile>
<!-- Load _BindingLibraryLinkerFlags -->
<ReadItemsFromFile SessionId="$(BuildSessionId)" File="$(_LinkerItemsDirectory)/_BindingLibraryLinkerFlags.items" Condition="Exists('$(_LinkerItemsDirectory)/_BindingLibraryLinkerFlags.items')">
<Output TaskParameter="Items" ItemName="_BindingLibraryLinkerFlags" />
<!-- Load _AssemblyLinkerFlags -->
<ReadItemsFromFile SessionId="$(BuildSessionId)" File="$(_LinkerItemsDirectory)/_AssemblyLinkerFlags.items" Condition="Exists('$(_LinkerItemsDirectory)/_AssemblyLinkerFlags.items')">
<Output TaskParameter="Items" ItemName="_AssemblyLinkerFlags" />
</ReadItemsFromFile>
<!-- Load _BindingLibraryFrameworks -->
<ReadItemsFromFile SessionId="$(BuildSessionId)" File="$(_LinkerItemsDirectory)/_BindingLibraryFrameworks.items" Condition="Exists('$(_LinkerItemsDirectory)/_BindingLibraryFrameworks.items')">
@ -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)"

Просмотреть файл

@ -27,6 +27,23 @@ namespace Xamarin.Linker {
}
Configuration.WriteOutputForMSBuild ("_LinkerFrameworks", linkerFrameworks);
// Tell MSBuild about any additional linker flags we found
var linkerFlags = new List<MSBuildItem> ();
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<string, string> {
{ "Assembly", asm.Identity },
},
};
linkerFlags.Add (item);
}
}
Configuration.WriteOutputForMSBuild ("_AssemblyLinkerFlags", linkerFlags);
}
}
}

Просмотреть файл

@ -55,23 +55,6 @@ namespace Xamarin.Linker {
}
}
Configuration.WriteOutputForMSBuild ("_BindingLibraryFrameworks", frameworks);
// Tell MSBuild about any additional linker flags we found
var linkerFlags = new List<MSBuildItem> ();
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<string, string> {
{ "Assembly", asm.Identity },
},
};
linkerFlags.Add (item);
}
}
Configuration.WriteOutputForMSBuild ("_BindingLibraryLinkerFlags", linkerFlags);
}
}
}