Build projects in correct order and allow for parallel builds.
authorAnkit Jain <radical@corewars.org>
Fri, 14 Aug 2009 17:55:48 +0000 (17:55 -0000)
committerAnkit Jain <radical@corewars.org>
Fri, 14 Aug 2009 17:55:48 +0000 (17:55 -0000)
commit328db53daa8d5e305203248e8c70730b9cab61b5
tree423722fd4006442e0ab3faddd334a84ef99fcbd4
parent9231dd4d6e0c0ba9a4c70ab38b0cedb9bfca002b
Build projects in correct order and allow for parallel builds.

In tools/xbuild:
* SolutionParser.cs (ProjectInfo.Dependencies): Change to a dictionary
to keep track of corresponding ProjectInfo objects.
(ParseSolution): Refactor to populate the ProjectInfo.Dependencies
dictionary. Use AddBuildLevels to emit build levels to allow
parallel builds.
(AddProjectTargets): Dependency's projectInfo is directly available now.
(AddBuildLevels): New. Emit items named BuildLevelN, where each level
has projects that can be built in parallel. Lower levels represent
dependencies for higher levels.
(AddSolutionTargets): Instead of using CallTarget, directly use MSBuild
task with the new BuildLevelN stuff. Also tell the user about disabled
projects or missing project configs.
(TopologicalSort): New.
(Insert): New. Based on code from monodevelop.

In tools/xbuild/tests:

* standalone/Project01: Update .sln.proj file.

svn path=/trunk/mcs/; revision=139933
mcs/tools/xbuild/ChangeLog
mcs/tools/xbuild/SolutionParser.cs
mcs/tools/xbuild/tests/ChangeLog
mcs/tools/xbuild/tests/standalone/Project01/Project01.sln.proj