Add IBC support to managed build (#10180)
authorDaniel Podder <dapodd@microsoft.com>
Thu, 16 Mar 2017 21:37:07 +0000 (14:37 -0700)
committerGitHub <noreply@github.com>
Thu, 16 Mar 2017 21:37:07 +0000 (14:37 -0700)
commit1b64c03493a4b7e4336f0dabbdf4ed980f0d109c
treea99ada676214fba3125a7f0cef2c90fe861317aa
parentf1087c7acbc4dc1bc4556af629a67ea606a96713
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/bootstrap.py` 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.
build.cmd
build.proj
build.sh
config.json
src/mscorlib/System.Private.CoreLib.csproj
tests/scripts/optdata/bootstrap.py [new file with mode: 0755]
tests/scripts/optdata/project.json [new file with mode: 0644]