Assemble the compiler when running x.py build

Previously, there was no way to actually get binaries in
`build/$TARGET/stage1/bin` without building the standard library. This
makes it possible to build just the compiler. This can be useful when
the standard library isn't actually necessary for trying out your tests
(e.g. a bug that can be reproduced with only a `no_core` crate).
This commit is contained in:
Joshua Nelson 2021-10-11 04:09:15 +00:00
parent ac8dd1b2f2
commit 31265c6ca3
2 changed files with 10 additions and 3 deletions

View File

@ -370,7 +370,7 @@ impl<'a> Builder<'a> {
match kind {
Kind::Build => describe!(
compile::Std,
compile::Rustc,
compile::Assemble,
compile::CodegenBackend,
compile::StartupObjects,
tool::BuildManifest,

View File

@ -528,7 +528,7 @@ impl Step for Rustc {
const DEFAULT: bool = false;
fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> {
run.path("compiler/rustc")
run.never()
}
fn make_run(run: RunConfig<'_>) {
@ -1023,9 +1023,16 @@ pub struct Assemble {
impl Step for Assemble {
type Output = Compiler;
const ONLY_HOSTS: bool = true;
fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> {
run.never()
run.path("compiler/rustc")
}
fn make_run(run: RunConfig<'_>) {
run.builder.ensure(Assemble {
target_compiler: run.builder.compiler(run.builder.top_stage + 1, run.target),
});
}
/// Prepare a new compiler from the artifacts in `stage`