This repository has been archived by the owner on Oct 16, 2020. It is now read-only.
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
23 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
The SharpDevelop Build System | ||
|
||
=Build scheduling engine= | ||
|
||
Main class: ICSharpCode.SharpDevelop.Project.BuildEngine | ||
|
||
The scheduling engine component is usable independently from the project system. | ||
Its main task is to take an IBuildable instance, determine its dependencies, and build everything | ||
by calling IBuildable.StartBuild. | ||
|
||
Usage: | ||
BuildEngine.StartBuild(buildable, buildOptions, buildFeedbackSink); | ||
|
||
What the build engine will do is to call | ||
buildable.StartBuild(buildable.CreateProjectBuildOptions(buildOptions)) | ||
for the passed buildable (and for all of its dependencies). | ||
|
||
The build engine uses GetDependencies calls to build the full dependency graph. It splits up all projects in this graph into two sets: | ||
projects which have no dependencies and are ready to be built, and projects which need to wait for dependencies first. | ||
The build engine calls StartBuild concurrently on up to buildOptions.ParallelBuild* projects which are ready. Whenever a project finishes building sucessfully, | ||
the engine checks whether this causes any other projects to become available to be built. | ||
If there are more projects available to be built than parallel builds are allowed, then the scheduling algorithm tries to maximize the amount of projects | ||
that are available by first picking those projects that cause the most other projects to become available. |