Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/corefx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Mellino <erme@microsoft.com>2017-04-11 22:02:59 +0300
committerEric Mellino <erme@microsoft.com>2017-04-11 23:21:37 +0300
commit6df998b048bf34496c4fcaa9f0c18d2cb9e79fad (patch)
treeb9bb25fbdb453bab1c1ffc2e805f49fc12ae09bb /Tools-Override
parent9e033b8f9bbac005e0b63303d2e1cc904f606f08 (diff)
Unchanged version of codeOptimization.targets.
Diffstat (limited to 'Tools-Override')
-rw-r--r--Tools-Override/OptimizationData.msbuild9
-rw-r--r--Tools-Override/codeOptimization.targets79
2 files changed, 88 insertions, 0 deletions
diff --git a/Tools-Override/OptimizationData.msbuild b/Tools-Override/OptimizationData.msbuild
new file mode 100644
index 0000000000..6b4e67b5b0
--- /dev/null
+++ b/Tools-Override/OptimizationData.msbuild
@@ -0,0 +1,9 @@
+<Project Sdk="Microsoft.NET.Sdk">
+ <PropertyGroup>
+ <TargetFrameworks>netcoreapp1.0;net46</TargetFrameworks>
+ <DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences>
+ </PropertyGroup>
+ <ItemGroup>
+ <PackageReference Include="$(OptimizationDataPackageName)" Version="$(OptimizationDataVersion)" />
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/Tools-Override/codeOptimization.targets b/Tools-Override/codeOptimization.targets
new file mode 100644
index 0000000000..d480cb221a
--- /dev/null
+++ b/Tools-Override/codeOptimization.targets
@@ -0,0 +1,79 @@
+<?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>
+ </PropertyGroup>
+
+ <!-- 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="RestoreOptimizationDataPackage;ResolveOptionalTools"
+ Condition="'$(OS)'=='Windows_NT' 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>
+
+ <!-- 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) -q -f -partialNGEN -minify -mo $(OptimizedAssemblyFile) -incremental $(OptimizationDataDir)$(AssemblyName).pgo" />
+
+ <!-- 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="CoreCompile"
+ Condition="'$(EnableProfileGuidedOptimization)'=='true' and !Exists('$(OptimizationDataDir)project.json')">
+
+ <!-- Dynamically create a project.json file used to restore the optimization data-->
+ <Message Text="Generating project.json for optimization data" Importance="low" />
+ <ItemGroup>
+ <_OptimizationDataJsonLine Include="{&quot;dependencies&quot;: {" />
+ <_OptimizationDataJsonLine Include="&quot;$(OptimizationDataPackageName)&quot; : &quot;$(OptimizationDataVersion)&quot; " />
+ <_OptimizationDataJsonLine Include="},&quot;frameworks&quot;: {&quot;netcoreapp1.0&quot;: {},&quot;net46&quot;: {}}}"/>
+ </ItemGroup>
+
+ <PropertyGroup>
+ <OptimizationDataProjectJson>$(OptimizationDataDir)project.json</OptimizationDataProjectJson>
+ <OptimizationDataNuGetFeed Condition="'$(OptimizationDataNuGetFeed)'==''">https:%2F%2Fdotnet.myget.org/F/roslyn/api/v3/index.json</OptimizationDataNuGetFeed>
+ </PropertyGroup>
+
+ <MakeDir Directories="$(OptimizationDataDir)" ContinueOnError="true" />
+ <WriteLinesToFile File="$(OptimizationDataProjectJson)" Lines="@(_OptimizationDataJsonLine)" Overwrite="true" />
+
+ <!-- Restore the OptimizationData package -->
+ <Exec Command="$(DnuRestoreCommand) $(OptimizationDataProjectJson) --source $(OptimizationDataNuGetFeed)"
+ 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