diff options
Diffstat (limited to 'packages/microsoft.dotnet.buildtools/2.1.0-rc1-03006-01/lib/codeOptimization.targets')
-rwxr-xr-x | packages/microsoft.dotnet.buildtools/2.1.0-rc1-03006-01/lib/codeOptimization.targets | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/packages/microsoft.dotnet.buildtools/2.1.0-rc1-03006-01/lib/codeOptimization.targets b/packages/microsoft.dotnet.buildtools/2.1.0-rc1-03006-01/lib/codeOptimization.targets new file mode 100755 index 0000000000..2cb5566a12 --- /dev/null +++ b/packages/microsoft.dotnet.buildtools/2.1.0-rc1-03006-01/lib/codeOptimization.targets @@ -0,0 +1,106 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <UsingTask TaskName="ZipFileExtractToDirectory" AssemblyFile="$(BuildToolsTaskDir)Microsoft.DotNet.Build.Tasks.dll"/> + + <PropertyGroup> + <OptimizationDataVersion Condition="'$(OptimizationDataVersion)'==''">2.0.0-rc-61101-16</OptimizationDataVersion> + <OptimizationDataPackageName Condition="'$(OptimizationDataPackageName)'==''">RoslynDependencies.OptimizationData</OptimizationDataPackageName> + <OptimizationDataDir Condition="'$(OptimizationDataDir)'==''">$(ToolsDir)OptimizationData/</OptimizationDataDir> + <RestoreDefaultOptimizationDataPackage Condition="'$(RestoreDefaultOptimizationDataPackage)'==''">true</RestoreDefaultOptimizationDataPackage> + <UsePartialNGENOptimization Condition="'$(UsePartialNGENOptimization)'==''">true</UsePartialNGENOptimization> + </PropertyGroup> + + <!-- If IBC data hasn't been merged with the IL yet, preprocess it first --> + <Target Name="PreProcessIBCData" + BeforeTargets="OptimizeWithTrainingData" + DependsOnTargets="ResolveOptionalTools" + Condition="'$(RunningOnUnix)'!='true' and '$(EnableProfileGuidedOptimization)'=='true' and Exists('$(OptimizationDataDir)$(AssemblyName).dll')"> + + <!-- Find IBCMerge as a resolved optional tool. --> + <PropertyGroup> + <IBCMergeToolPath Condition="'%(Filename)%(Extension)'=='ibcmerge.exe'">@(ResolvedOptionalToolReferences)</IBCMergeToolPath> + </PropertyGroup> + + <!-- Enumerate the various files that need merging --> + <PropertyGroup> + <InputAssemblyFile>$(OptimizationDataDir)$(AssemblyName).dll</InputAssemblyFile> + <TargetOptimizationDataFile>$(OptimizationDataDir)$(AssemblyName).pgo</TargetOptimizationDataFile> + </PropertyGroup> + <ItemGroup> + <RawOptimizationDataFiles Include="$(OptimizationDataDir)$(AssemblyName)*.ibc" /> + </ItemGroup> + + <!-- Merge the optimization data into the source DLL --> + <Exec Command="$(IBCMergeToolPath) -q -f -delete -mo $(InputAssemblyFile) @(RawOptimizationDataFiles, ' ')" /> + + <!-- Verify that the optimization data has been merged --> + <Exec Command="$(IBCMergeToolPath) -mi $(InputAssemblyFile)" /> + + <!-- Save the module as *.pgo to match the convention expected in target OptimizeWithTrainingData --> + <Copy SourceFiles="$(InputAssemblyFile)" DestinationFiles="$(TargetOptimizationDataFile)" /> + </Target> + + <!-- We should only run this target on Windows and only if EnableProfileGuidedOptimization is set and we have training data --> + <Target Name="OptimizeWithTrainingData" + AfterTargets="AfterBuild" + BeforeTargets="CopyFilesToOutputDirectory" + DependsOnTargets="ResolveOptionalTools" + Condition="'$(RunningOnUnix)'!='true' and '$(EnableProfileGuidedOptimization)'=='true' and Exists('$(OptimizationDataDir)$(AssemblyName).pgo')"> + + <!-- Find IBCMerge as a resolved optional tool. --> + <PropertyGroup> + <IBCMergeToolPath Condition="'%(Filename)%(Extension)'=='ibcmerge.exe'">@(ResolvedOptionalToolReferences)</IBCMergeToolPath> + </PropertyGroup> + + <PropertyGroup> + <OptimizedAssemblyDir>$(IntermediateOutputPath)/OptimizedAssembly</OptimizedAssemblyDir> + <OptimizedAssemblyFile>$(OptimizedAssemblyDir)/$(AssemblyName).dll</OptimizedAssemblyFile> + </PropertyGroup> + + <!-- Customize IBCMerge's arguments depending on input props --> + <PropertyGroup> + <IBCMergeArguments>-q -f -mo $(OptimizedAssemblyFile) -incremental $(OptimizationDataDir)$(AssemblyName).pgo</IBCMergeArguments> + <IBCMergeArguments Condition="$(UsePartialNGENOptimization)">$(IBCMergeArguments) -partialNGEN -minify</IBCMergeArguments> + </PropertyGroup> + + <!-- Copy the compiled assembly into a folder for further processing --> + <MakeDir Directories="$(OptimizedAssemblyDir)" /> + <Copy SourceFiles="@(IntermediateAssembly)" DestinationFolder="$(OptimizedAssemblyDir)" /> + + <!-- Apply optimization data to the compiled assembly --> + <Exec Command="$(IBCMergeToolPath) $(IBCMergeArguments)" /> + + <!-- Verify that the optimization data has been applied --> + <Exec Command="$(IBCMergeToolPath) -mi $(OptimizedAssemblyFile)" /> + + <!-- We need to make sure that the assembly that gets packaged is the one with the optimization data --> + <ItemGroup> + <IntermediateAssembly Remove="@(IntermediateAssembly)"/> + <IntermediateAssembly Include="$(OptimizedAssemblyDir)/$(AssemblyName).dll"/> + </ItemGroup> + </Target> + + <!-- We need the OptimizationData package in order to be able to optimize the assembly --> + <Target Name="RestoreOptimizationDataPackage" + BeforeTargets="Sync" + Condition="'$(EnableProfileGuidedOptimization)'=='true' and '$(RestoreDefaultOptimizationDataPackage)'=='true' and !Exists('$(OptimizationDataDir)project.csproj')"> + <!-- Dynamically create a project.json file used to restore the optimization data--> + <PropertyGroup> + <OptimizationDataProject>$(MSBuildThisFileDirectory)OptimizationData.msbuild</OptimizationDataProject> + <OptimizationDataNuGetFeed Condition="'$(OptimizationDataNuGetFeed)'==''">https:%2F%2Fdotnet.myget.org/F/roslyn/api/v3/index.json</OptimizationDataNuGetFeed> + </PropertyGroup> + + <!-- Restore the OptimizationData package --> + <Exec Command="$(DnuRestoreCommand) $(OptimizationDataProject) --source $(OptimizationDataNuGetFeed) /p:OptimizationDataPackageName=$(OptimizationDataPackageName) /p:OptimizationDataVersion=$(OptimizationDataVersion) /p:BaseIntermediateOutputPath=$(OptimizationDataDir)" StandardOutputImportance="Low"/> + + <!-- Copy the restored files into a more accessible location --> + <ItemGroup> + <_OptimizationDataFiles Include="$(PackagesDir)/$(OptimizationDataPackageName)/$(OptimizationDataVersion)/content/OptimizationData/*.pgo" /> + </ItemGroup> + + <Copy SourceFiles="@(_OptimizationDataFiles)" + DestinationFiles="@(_OptimizationDataFiles->'$(OptimizationDataDir)%(Filename)%(Extension)')" + SkipUnchangedFiles="true" + ContinueOnError="true"/> + </Target> +</Project>
\ No newline at end of file |