Writing tools in Bootstrap
There are three types of tools you can write in bootstrap:
-
Mode::ToolBootstrap
Use this for tools that don’t need anything from the in-tree compiler and can run with the stage0rustc
. The output is placed in the "stage0-bootstrap-tools" directory. This mode is for general-purpose tools built entirely with the stage0 compiler, including target libraries and only works for stage 0. -
Mode::ToolStd
Use this for tools that rely on the locally built std. The output goes into the "stageN-tools" directory. This mode is rarely used, mainly forcompiletest
which requireslibtest
. -
Mode::ToolRustc
Use this for tools that depend on both the locally builtrustc
and the targetstd
. This is more complex than the other modes because the tool must be built with the same compiler used forrustc
and placed in the "stageN-tools" directory. When you chooseMode::ToolRustc
,ToolBuild
implementation takes care of this automatically. If you need to use the builder’s compiler for something specific, you can get it fromToolBuildResult
, which is returned by the tool'sStep
.
Regardless of the tool type you must return ToolBuildResult
from the tool’s Step
implementation and use ToolBuild
inside it.