Building librustc_codegen_llvm in a separate directory
This allows clearing it out and building it separately from the compiler. Since it's essentially a different and separate crate this makes sense to do, each cargo invocation should generally happen in its own directory.
This commit is contained in:
parent
73c78734ba
commit
d8e8a50cf2
5 changed files with 10 additions and 54 deletions
|
@ -2184,30 +2184,10 @@ dependencies = [
|
||||||
name = "rustc_codegen_llvm"
|
name = "rustc_codegen_llvm"
|
||||||
version = "0.0.0"
|
version = "0.0.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"cc 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)",
|
"cc 1.0.18 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"env_logger 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"flate2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"jobserver 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"libc 0.2.42 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"log 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rustc 0.0.0",
|
|
||||||
"rustc-demangle 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rustc-demangle 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rustc_allocator 0.0.0",
|
|
||||||
"rustc_apfloat 0.0.0",
|
|
||||||
"rustc_codegen_utils 0.0.0",
|
|
||||||
"rustc_data_structures 0.0.0",
|
|
||||||
"rustc_errors 0.0.0",
|
|
||||||
"rustc_incremental 0.0.0",
|
|
||||||
"rustc_llvm 0.0.0",
|
"rustc_llvm 0.0.0",
|
||||||
"rustc_mir 0.0.0",
|
|
||||||
"rustc_platform_intrinsics 0.0.0",
|
|
||||||
"rustc_target 0.0.0",
|
|
||||||
"serialize 0.0.0",
|
|
||||||
"syntax 0.0.0",
|
|
||||||
"syntax_pos 0.0.0",
|
|
||||||
"tempfile 3.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|
|
@ -137,8 +137,10 @@ impl Step for CodegenBackend {
|
||||||
let target = self.target;
|
let target = self.target;
|
||||||
let backend = self.backend;
|
let backend = self.backend;
|
||||||
|
|
||||||
|
let out_dir = builder.cargo_out(compiler, Mode::Codegen, target);
|
||||||
|
builder.clear_if_dirty(&out_dir, &librustc_stamp(builder, compiler, target));
|
||||||
|
|
||||||
let mut cargo = builder.cargo(compiler, Mode::Codegen, target, "check");
|
let mut cargo = builder.cargo(compiler, Mode::Codegen, target, "check");
|
||||||
let features = builder.rustc_features().to_string();
|
|
||||||
cargo.arg("--manifest-path").arg(builder.src.join("src/librustc_codegen_llvm/Cargo.toml"));
|
cargo.arg("--manifest-path").arg(builder.src.join("src/librustc_codegen_llvm/Cargo.toml"));
|
||||||
rustc_cargo_env(builder, &mut cargo);
|
rustc_cargo_env(builder, &mut cargo);
|
||||||
|
|
||||||
|
@ -146,7 +148,7 @@ impl Step for CodegenBackend {
|
||||||
|
|
||||||
let _folder = builder.fold_output(|| format!("stage{}-rustc_codegen_llvm", compiler.stage));
|
let _folder = builder.fold_output(|| format!("stage{}-rustc_codegen_llvm", compiler.stage));
|
||||||
run_cargo(builder,
|
run_cargo(builder,
|
||||||
cargo.arg("--features").arg(features),
|
&mut cargo,
|
||||||
&codegen_backend_stamp(builder, compiler, target, backend),
|
&codegen_backend_stamp(builder, compiler, target, backend),
|
||||||
true);
|
true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -670,16 +670,17 @@ impl Step for CodegenBackend {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let out_dir = builder.cargo_out(compiler, Mode::Codegen, target);
|
||||||
|
builder.clear_if_dirty(&out_dir, &librustc_stamp(builder, compiler, target));
|
||||||
|
|
||||||
let mut cargo = builder.cargo(compiler, Mode::Codegen, target, "build");
|
let mut cargo = builder.cargo(compiler, Mode::Codegen, target, "build");
|
||||||
let mut features = builder.rustc_features().to_string();
|
|
||||||
cargo.arg("--manifest-path")
|
cargo.arg("--manifest-path")
|
||||||
.arg(builder.src.join("src/librustc_codegen_llvm/Cargo.toml"));
|
.arg(builder.src.join("src/librustc_codegen_llvm/Cargo.toml"));
|
||||||
rustc_cargo_env(builder, &mut cargo);
|
rustc_cargo_env(builder, &mut cargo);
|
||||||
|
|
||||||
features += &build_codegen_backend(&builder, &mut cargo, &compiler, target, backend);
|
let features = build_codegen_backend(&builder, &mut cargo, &compiler, target, backend);
|
||||||
|
|
||||||
let tmp_stamp = builder.cargo_out(compiler, Mode::Codegen, target)
|
let tmp_stamp = out_dir.join(".tmp.stamp");
|
||||||
.join(".tmp.stamp");
|
|
||||||
|
|
||||||
let _folder = builder.fold_output(|| format!("stage{}-rustc_codegen_llvm", compiler.stage));
|
let _folder = builder.fold_output(|| format!("stage{}-rustc_codegen_llvm", compiler.stage));
|
||||||
let files = run_cargo(builder,
|
let files = run_cargo(builder,
|
||||||
|
|
|
@ -555,8 +555,8 @@ impl Build {
|
||||||
let suffix = match mode {
|
let suffix = match mode {
|
||||||
Mode::Std => "-std",
|
Mode::Std => "-std",
|
||||||
Mode::Test => "-test",
|
Mode::Test => "-test",
|
||||||
Mode::Codegen => "-rustc",
|
|
||||||
Mode::Rustc => "-rustc",
|
Mode::Rustc => "-rustc",
|
||||||
|
Mode::Codegen => "-codegen",
|
||||||
Mode::ToolBootstrap => "-bootstrap-tools",
|
Mode::ToolBootstrap => "-bootstrap-tools",
|
||||||
Mode::ToolStd => "-tools",
|
Mode::ToolStd => "-tools",
|
||||||
Mode::ToolRustc => "-tools",
|
Mode::ToolRustc => "-tools",
|
||||||
|
|
|
@ -10,39 +10,12 @@ crate-type = ["dylib"]
|
||||||
test = false
|
test = false
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
bitflags = "1.0.1"
|
|
||||||
cc = "1.0.1"
|
cc = "1.0.1"
|
||||||
flate2 = "1.0"
|
|
||||||
jobserver = "0.1.5"
|
|
||||||
libc = "0.2"
|
|
||||||
log = "0.4"
|
|
||||||
num_cpus = "1.0"
|
num_cpus = "1.0"
|
||||||
rustc = { path = "../librustc" }
|
|
||||||
rustc-demangle = "0.1.4"
|
rustc-demangle = "0.1.4"
|
||||||
rustc_allocator = { path = "../librustc_allocator" }
|
|
||||||
rustc_apfloat = { path = "../librustc_apfloat" }
|
|
||||||
rustc_target = { path = "../librustc_target" }
|
|
||||||
rustc_data_structures = { path = "../librustc_data_structures" }
|
|
||||||
rustc_errors = { path = "../librustc_errors" }
|
|
||||||
rustc_incremental = { path = "../librustc_incremental" }
|
|
||||||
rustc_llvm = { path = "../librustc_llvm" }
|
rustc_llvm = { path = "../librustc_llvm" }
|
||||||
rustc_platform_intrinsics = { path = "../librustc_platform_intrinsics" }
|
|
||||||
rustc_codegen_utils = { path = "../librustc_codegen_utils" }
|
|
||||||
rustc_mir = { path = "../librustc_mir" }
|
|
||||||
serialize = { path = "../libserialize" }
|
|
||||||
syntax = { path = "../libsyntax" }
|
|
||||||
syntax_pos = { path = "../libsyntax_pos" }
|
|
||||||
tempfile = "3.0"
|
|
||||||
|
|
||||||
# not actually used but needed to make sure we enable the same feature set as
|
|
||||||
# winapi used in librustc
|
|
||||||
env_logger = { version = "0.5", default-features = false }
|
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
# Used to communicate the feature to `rustc_target` in the same manner that the
|
|
||||||
# `rustc` driver script communicate this.
|
|
||||||
jemalloc = ["rustc_target/jemalloc"]
|
|
||||||
|
|
||||||
# This is used to convince Cargo to separately cache builds of `rustc_codegen_llvm`
|
# This is used to convince Cargo to separately cache builds of `rustc_codegen_llvm`
|
||||||
# when this option is enabled or not. That way we can build two, cache two
|
# when this option is enabled or not. That way we can build two, cache two
|
||||||
# artifacts, and have nice speedy rebuilds.
|
# artifacts, and have nice speedy rebuilds.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue