Skip to content
This repository has been archived by the owner on Oct 16, 2020. It is now read-only.

Commit

Permalink
Add BuildSystem.txt to technotes
Browse files Browse the repository at this point in the history
  • Loading branch information
dgrunwald committed Aug 27, 2010
1 parent 57023bb commit ac4922f
Showing 1 changed file with 23 additions and 0 deletions.
23 changes: 23 additions & 0 deletions doc/technotes/BuildSystem.txt
@@ -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.

0 comments on commit ac4922f

Please sign in to comment.