path: root/build.proj
diff options
authorDaniel Podder <>2017-03-16 21:37:07 (GMT)
committerGitHub <>2017-03-16 21:37:07 (GMT)
commit1b64c03493a4b7e4336f0dabbdf4ed980f0d109c (patch)
treea99ada676214fba3125a7f0cef2c90fe861317aa /build.proj
parentf1087c7acbc4dc1bc4556af629a67ea606a96713 (diff)
Add IBC support to managed build (#10180)
Add a new build switch, `ibcinstrument`, that adds `/Tuning` on the `crossgen` command line when building System.Private.CoreLib and its peers. Automatically consume IBC optdata during builds when these conditions are met: 1. `ibcinstrument` is *not* passed to the build, 2. optdata is available 3. ibcmerge is available Note that `optdata` will not yet be restored with this change; once packages for master are made available, a new package reference will still need to be added. This PR attempts to unblock manually testing IBC, as well as surrounding CI/infrastructure work. To help produce an IBC-optimized build using manually generated profile data, run the newly added `tests/scripts/optdata/` script. It will configure the build to consume IBC data from a path automatically, and print out that path where profile data can be copied.
Diffstat (limited to 'build.proj')
1 files changed, 7 insertions, 0 deletions
diff --git a/build.proj b/build.proj
index 9992bdc..07bb11a 100644
--- a/build.proj
+++ b/build.proj
@@ -32,6 +32,13 @@
<Exec Condition="Exists('$(OptDataProjectJson)')" Command="$(DnuRestoreCommand) &quot;$(OptDataProjectJson)&quot; --source &quot;$(OptDataPackageFeed)&quot;" />
+ <!--
+ BuildTools will conditionally restore additional packages, including IBC tools, using the "RestoreOptionalToolingPackages"
+ target, which runs automatically before "Sync". Since no "Sync" target actually exists, go ahead and define one now so that
+ the tools are fetched before "Build".
+ -->
+ <Target Name="Sync" BeforeTargets="Build" />
<Target Name="RestoreNETCorePlatforms" AfterTargets="Build" Condition="'$(RestoreDuringBuild)'=='true'">
<Exec Command="$(DnuRestoreCommand) &quot;$(SourceDir).nuget/init/project.json&quot; --source" />