forked from dotnet/runtime
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Make ILLink validation steps in libs incrementally buildable (dotnet#…
…64041) * Make ILLink validation steps in libs incrementally buildable Both the illink-oob and the illink-sharedframework targets don't define Inputs and Outputs which makes them run during no-op incremental builds. This change defines Inputs and Outputs based on what's used during the target's execution so that if the input assemblies or the illink assembly itself haven't changed, the step will be skipped. Also renaming properties and items to make them more readable and consistent. As these target files are "extensions" of the src.proj file and aren't shared anywhere, they can be treated like logic inside a project file and hence prefixing properties and items with an underscore "_" isn't necessary.
- Loading branch information
1 parent
358ee3c
commit 4a099dc
Showing
2 changed files
with
89 additions
and
62 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,63 +1,78 @@ | ||
<Project> | ||
|
||
<Target Name="ILLinkTrimOOBAssemblies" | ||
AfterTargets="Build" | ||
<Target Name="GetOOBAssembliesToTrim" | ||
DependsOnTargets="PrepareForAssembliesTrim"> | ||
|
||
<Message Text="Trimming $(PackageRID) OOB assemblies with ILLinker..." Importance="high" /> | ||
|
||
<PropertyGroup> | ||
<LibrariesTrimmedOOBArtifactsPath>$([MSBuild]::NormalizePath('$(ILLinkTrimAssemblyArtifactsRootDir)', 'trimmed-oobs'))</LibrariesTrimmedOOBArtifactsPath> | ||
<OOBAssembliesTrimmedArtifactsPath>$([MSBuild]::NormalizePath('$(ILLinkTrimAssemblyArtifactsRootDir)', 'trimmed-oobs'))</OOBAssembliesTrimmedArtifactsPath> | ||
</PropertyGroup> | ||
|
||
<ItemGroup> | ||
|
||
<!-- Include suppression XML files bin-placed in earlier per-library linker run. --> | ||
<OOBLibrarySuppressionsXml Include="$(ILLinkTrimAssemblyOOBSuppressionsXmlsDir)*.xml" /> | ||
|
||
<!-- The following is the list of all the OOBs we will ignore for now --> | ||
<_OOBsToIgnore Include="System.CodeDom" /> | ||
<_OOBsToIgnore Include="System.ComponentModel.Composition" /> | ||
<_OOBsToIgnore Include="System.ComponentModel.Composition.Registration" /> | ||
<_OOBsToIgnore Include="System.Composition.AttributedModel" /> | ||
<_OOBsToIgnore Include="System.Composition.Convention" /> | ||
<_OOBsToIgnore Include="System.Composition.Hosting" /> | ||
<_OOBsToIgnore Include="System.Composition.Runtime" /> | ||
<_OOBsToIgnore Include="System.Composition.TypedParts" /> | ||
<_OOBsToIgnore Include="System.Configuration.ConfigurationManager" /> | ||
<_OOBsToIgnore Include="System.Speech" /> | ||
|
||
<_NetCoreAppRuntimeAssemblies Include="$(NetCoreAppCurrentRuntimePath)*.dll" Exclude="$(NetCoreAppCurrentRuntimePath)*.Generator.dll;$(NetCoreAppCurrentRuntimePath)*.Native.dll;$(NetCoreAppCurrentRuntimePath)*msquic.dll" /> | ||
<_RuntimePackTrimmedAssemblies Include="$(MicrosoftNetCoreAppRuntimePackRidLibTfmDir)*.dll" /> | ||
|
||
<!-- Move previous items to FileName so that we can subtract them --> | ||
<_NetCoreAppRuntimeAssembliesToFileName Include="@(_NetCoreAppRuntimeAssemblies -> '%(FileName)')"> | ||
<OriginalIdentity>%(Identity)</OriginalIdentity> | ||
</_NetCoreAppRuntimeAssembliesToFileName> | ||
<_RuntimePackAssembliesToFileName Include="@(_RuntimePackTrimmedAssemblies -> '%(FileName)')"> | ||
<OriginalIdentity>%(Identity)</OriginalIdentity> | ||
</_RuntimePackAssembliesToFileName> | ||
|
||
<_OOBsToTrimFileName Include="@(_NetCoreAppRuntimeAssembliesToFileName)" Exclude="@(_RuntimePackAssembliesToFileName);@(_OOBsToIgnore)" /> | ||
<_OOBReferencesFileName Include="@(_NetCoreAppRuntimeAssembliesToFileName)" Exclude="@(_OOBsToTrimFileName)" /> | ||
<_OOBsToTrim Include="@(_OOBsToTrimFileName -> '%(OriginalIdentity)')" /> | ||
<_OOBReferences Include="@(_OOBReferencesFileName -> '%(OriginalIdentity)')" /> | ||
<_OOBReferences Include="$(SystemPrivateCoreLibPath)" /> | ||
<OOBAssemblyToIgnore Include="System.CodeDom" /> | ||
<OOBAssemblyToIgnore Include="System.ComponentModel.Composition" /> | ||
<OOBAssemblyToIgnore Include="System.ComponentModel.Composition.Registration" /> | ||
<OOBAssemblyToIgnore Include="System.Composition.AttributedModel" /> | ||
<OOBAssemblyToIgnore Include="System.Composition.Convention" /> | ||
<OOBAssemblyToIgnore Include="System.Composition.Hosting" /> | ||
<OOBAssemblyToIgnore Include="System.Composition.Runtime" /> | ||
<OOBAssemblyToIgnore Include="System.Composition.TypedParts" /> | ||
<OOBAssemblyToIgnore Include="System.Configuration.ConfigurationManager" /> | ||
<OOBAssemblyToIgnore Include="System.Speech" /> | ||
|
||
<NetCoreAppCurrentAssembly Include="$(NetCoreAppCurrentRuntimePath)*.dll" | ||
Exclude="$(NetCoreAppCurrentRuntimePath)*.Generator.dll; | ||
$(NetCoreAppCurrentRuntimePath)*.Native.dll; | ||
$(NetCoreAppCurrentRuntimePath)*msquic.dll" /> | ||
<SharedFrameworkAssembly Include="$(MicrosoftNetCoreAppRuntimePackRidLibTfmDir)*.dll" /> | ||
|
||
<!-- Move items to FileName so that we can subtract them --> | ||
<NetCoreAppCurrentAssemblyWithFilename Include="@(NetCoreAppCurrentAssembly -> '%(FileName)')" | ||
OriginalIdentity="%(Identity)" /> | ||
<SharedFrameworkAssemblyWithFilename Include="@(SharedFrameworkAssembly -> '%(FileName)')" | ||
OriginalIdentity="%(Identity)" /> | ||
|
||
<OOBAssemblyToTrimWithFileName Include="@(NetCoreAppCurrentAssemblyWithFilename)" | ||
Exclude="@(SharedFrameworkAssemblyWithFilename); | ||
@(OOBAssemblyToIgnore)" /> | ||
<OOBAssemblyToTrim Include="@(OOBAssemblyToTrimWithFileName -> '%(OriginalIdentity)')" /> | ||
|
||
<OOBAssemblyReferenceWithFilename Include="@(NetCoreAppCurrentAssemblyWithFilename)" | ||
Exclude="@(OOBAssemblyToTrimWithFileName)" /> | ||
<OOBAssemblyReference Include="@(OOBAssemblyReferenceWithFilename -> '%(OriginalIdentity)')" /> | ||
<OOBAssemblyReference Include="$(SystemPrivateCoreLibPath)" /> | ||
</ItemGroup> | ||
|
||
<ItemGroup> | ||
<!-- Include suppression XML files bin-placed in earlier per-library linker run. --> | ||
<_OOBSuppressionsXmls Include="$(ILLinkTrimAssemblyOOBSuppressionsXmlsDir)*.xml" /> | ||
<OOBLibraryTrimmed Include="$(OOBAssembliesTrimmedArtifactsPath)*.*" /> | ||
</ItemGroup> | ||
|
||
</Target> | ||
|
||
<Target Name="ILLinkTrimOOBAssemblies" | ||
AfterTargets="Build" | ||
DependsOnTargets="GetOOBAssembliesToTrim;PrepareForAssembliesTrim" | ||
Inputs="$(ILLinkTasksAssembly);@(OOBAssemblyToTrim);@(OOBAssemblyReference);@(OOBLibrarySuppressionsXml)" | ||
Outputs="@(OOBLibraryTrimmed)"> | ||
|
||
<Message Text="Trimming $(PackageRID) out-of-band assemblies with ILLinker..." Importance="high" /> | ||
|
||
<PropertyGroup> | ||
<OOBILLinkArgs>$(ILLinkArgs)</OOBILLinkArgs> | ||
<OOBILLinkArgs Condition="'@(_OOBSuppressionsXmls)' != ''" >$(OOBILLinkArgs) --link-attributes "@(_OOBSuppressionsXmls->'%(FullPath)', '" --link-attributes "')"</OOBILLinkArgs> | ||
<OOBILLinkArgs Condition="'@(OOBLibrarySuppressionsXml)' != ''" >$(OOBILLinkArgs) --link-attributes "@(OOBLibrarySuppressionsXml->'%(FullPath)', '" --link-attributes "')"</OOBILLinkArgs> | ||
</PropertyGroup> | ||
|
||
<ILLink AssemblyPaths="" | ||
RootAssemblyNames="@(_OOBsToTrim)" | ||
ReferenceAssemblyPaths="@(_OOBReferences)" | ||
OutputDirectory="$(LibrariesTrimmedOOBArtifactsPath)" | ||
RootAssemblyNames="@(OOBAssemblyToTrim)" | ||
ReferenceAssemblyPaths="@(OOBAssemblyReference)" | ||
OutputDirectory="$(OOBAssembliesTrimmedArtifactsPath)" | ||
ExtraArgs="$(OOBILLinkArgs)" | ||
ToolExe="$(_DotNetHostFileName)" | ||
ToolPath="$(_DotNetHostDirectory)" /> | ||
|
||
</Target> | ||
|
||
</Project> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,48 +1,60 @@ | ||
<Project> | ||
|
||
<Target Name="ILLinkTrimSharedFramework" | ||
AfterTargets="Build" | ||
<Target Name="GetSharedFrameworkAssembliesToTrim" | ||
DependsOnTargets="PrepareForAssembliesTrim"> | ||
|
||
<Message Text="Trimming $(PackageRID) runtime pack assemblies with ILLinker..." Importance="high" /> | ||
|
||
<PropertyGroup> | ||
<LibrariesTrimmedArtifactsPath>$([MSBuild]::NormalizePath('$(ILLinkTrimAssemblyArtifactsRootDir)', 'trimmed-runtimepack'))</LibrariesTrimmedArtifactsPath> | ||
<SharedFrameworkAssembliesTrimmedArtifactsPath>$([MSBuild]::NormalizePath('$(ILLinkTrimAssemblyArtifactsRootDir)', 'trimmed-runtimepack'))</SharedFrameworkAssembliesTrimmedArtifactsPath> | ||
</PropertyGroup> | ||
|
||
<ItemGroup> | ||
<!-- Include suppression XML files bin-placed in earlier per-library linker run. --> | ||
<SharedFrameworkSuppressionsXml Include="$(ILLinkTrimAssemblyRuntimePackSuppressionsXmlsDir)*.xml" /> | ||
<!-- Collect CoreLib suppression XML files not bin-placed in earlier per-library linker run. CoreLib doesn't use bin-place logic. --> | ||
<SharedFrameworkSuppressionsXml Include="$(CoreLibSharedDir)ILLink\ILLink.Suppressions.LibraryBuild.xml" /> | ||
<SharedFrameworkSuppressionsXml Condition="'$(RuntimeFlavor)' == 'CoreCLR'" Include="$(CoreClrProjectRoot)System.Private.CoreLib\$(ProjectILLinkSuppressionsFile).LibraryBuild.xml" /> | ||
|
||
<SharedFrameworkAssemblyToTrim Include="$(MicrosoftNetCoreAppRuntimePackRidLibTfmDir)*.dll" /> | ||
<SharedFrameworkAssemblyToTrim Include="$(SystemPrivateCoreLibPath)" /> | ||
</ItemGroup> | ||
|
||
<ItemGroup> | ||
<SharedFrameworkAssemblyTrimmed Include="$(SharedFrameworkAssembliesTrimmedArtifactsPath)*.*" /> | ||
</ItemGroup> | ||
|
||
</Target> | ||
|
||
<Target Name="ILLinkTrimSharedFramework" | ||
AfterTargets="Build" | ||
DependsOnTargets="GetSharedFrameworkAssembliesToTrim;PrepareForAssembliesTrim" | ||
Inputs="$(ILLinkTasksAssembly);@(SharedFrameworkAssemblyToTrim);@(SharedFrameworkSuppressionsXml)" | ||
Outputs="@(SharedFrameworkAssemblyTrimmed)"> | ||
|
||
<Message Text="Trimming $(PackageRID) shared framework assemblies with ILLinker..." Importance="high" /> | ||
|
||
<PropertyGroup> | ||
<RuntimePackILLinkArgs>$(ILLinkArgs)</RuntimePackILLinkArgs> | ||
<SharedFrameworkILLinkArgs>$(ILLinkArgs)</SharedFrameworkILLinkArgs> | ||
<!-- update debug symbols --> | ||
<RuntimePackILLinkArgs>$(RuntimePackILLinkArgs) -b true</RuntimePackILLinkArgs> | ||
<SharedFrameworkILLinkArgs>$(SharedFrameworkILLinkArgs) -b true</SharedFrameworkILLinkArgs> | ||
</PropertyGroup> | ||
|
||
<ItemGroup> | ||
<_LibrariesToTrim Include="$(MicrosoftNetCoreAppRuntimePackRidLibTfmDir)*.dll" /> | ||
<_LibrariesToTrim Include="$(SystemPrivateCoreLibPath)" /> | ||
|
||
<RootAssemblies Include="@(_LibrariesToTrim)"> | ||
<RootAssemblies Include="@(SharedFrameworkAssemblyToTrim)"> | ||
<RootMode>library</RootMode> | ||
</RootAssemblies> | ||
</ItemGroup> | ||
|
||
<ItemGroup> | ||
<!-- Include suppression XML files bin-placed in earlier per-library linker run. --> | ||
<_RuntimePackSuppressionsXmls Include="$(ILLinkTrimAssemblyRuntimePackSuppressionsXmlsDir)*.xml" /> | ||
|
||
<!-- Collate CoreLib suppression XML files not bin-placed in earlier per-library linker run. CoreLib doesn't use bin-place logic. --> | ||
<_RuntimePackSuppressionsXmls Include="$(CoreLibSharedDir)ILLink\ILLink.Suppressions.LibraryBuild.xml" /> | ||
<_RuntimePackSuppressionsXmls Condition="'$(RuntimeFlavor)' == 'CoreCLR'" Include="$(CoreClrProjectRoot)System.Private.CoreLib\$(ProjectILLinkSuppressionsFile).LibraryBuild.xml" /> | ||
</ItemGroup> | ||
|
||
<PropertyGroup> | ||
<RuntimePackILLinkArgs Condition="'@(_RuntimePackSuppressionsXmls)' != ''" >$(RuntimePackILLinkArgs) --link-attributes "@(_RuntimePackSuppressionsXmls->'%(FullPath)', '" --link-attributes "')"</RuntimePackILLinkArgs> | ||
<SharedFrameworkILLinkArgs Condition="'@(SharedFrameworkSuppressionsXml)' != ''" >$(SharedFrameworkILLinkArgs) --link-attributes "@(SharedFrameworkSuppressionsXml->'%(FullPath)', '" --link-attributes "')"</SharedFrameworkILLinkArgs> | ||
</PropertyGroup> | ||
|
||
<ILLink AssemblyPaths="" | ||
RootAssemblyNames="@(RootAssemblies)" | ||
OutputDirectory="$(LibrariesTrimmedArtifactsPath)" | ||
ExtraArgs="$(RuntimePackILLinkArgs)" | ||
OutputDirectory="$(SharedFrameworkAssembliesTrimmedArtifactsPath)" | ||
ExtraArgs="$(SharedFrameworkILLinkArgs)" | ||
ToolExe="$(_DotNetHostFileName)" | ||
ToolPath="$(_DotNetHostDirectory)" /> | ||
|
||
</Target> | ||
|
||
</Project> |