Add IBC support to managed build (dotnet/coreclr#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)
commitdd7ce921c9bcace930e10141cf1716c528521781
tree4279f887cefe0e684f3537a19f28fe6027cb1ce2
parente20d318c184a6bfaaadaa55d317fd4a3b4b4854e
Add IBC support to managed build (dotnet/coreclr#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.

Commit migrated from https://github.com/dotnet/coreclr/commit/1b64c03493a4b7e4336f0dabbdf4ed980f0d109c
src/coreclr/build.cmd
src/coreclr/build.proj
src/coreclr/build.sh
src/coreclr/config.json
src/coreclr/src/mscorlib/System.Private.CoreLib.csproj
src/coreclr/tests/scripts/optdata/bootstrap.py [new file with mode: 0755]
src/coreclr/tests/scripts/optdata/project.json [new file with mode: 0644]