Skip to content

Commit 08f83e3

Browse files
committed
Add environment variables for accessing the OUT_DIR
1 parent 6c8bc08 commit 08f83e3

File tree

2 files changed

+18
-10
lines changed

2 files changed

+18
-10
lines changed

src/cargo/core/compiler/mod.rs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1706,10 +1706,15 @@ fn build_deps_args(
17061706

17071707
for dep in deps {
17081708
if dep.unit.mode.is_run_custom_build() {
1709-
cmd.env(
1710-
"OUT_DIR",
1711-
&build_runner.files().build_script_out_dir(&dep.unit),
1712-
);
1709+
let out_dir = &build_runner.files().build_script_out_dir(&dep.unit);
1710+
let mut out_dir_name = dep.unit.target.name().to_owned();
1711+
out_dir_name = out_dir_name
1712+
.strip_prefix("build-script-")
1713+
.unwrap_or(&out_dir_name)
1714+
.to_string();
1715+
out_dir_name.push_str("_OUT_DIR");
1716+
cmd.env("OUT_DIR", &out_dir);
1717+
cmd.env(&out_dir_name, &out_dir);
17131718
}
17141719
}
17151720

tests/testsuite/build_scripts_multiple.rs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -549,7 +549,7 @@ fn build_script_with_conflicting_out_dirs() {
549549
build = ["build1.rs", "build2.rs"]
550550
"#,
551551
)
552-
// OUT_DIR is set to the lexicographically largest build script's OUT_DIR by default
552+
// By default, OUT_DIR is set to that of the last build script in the array
553553
.file(
554554
"src/main.rs",
555555
r#"
@@ -628,7 +628,7 @@ fn build_script_with_conflicts_reverse_sorted() {
628628
build = ["build2.rs", "build1.rs"]
629629
"#,
630630
)
631-
// OUT_DIR is set to the lexicographically largest build script's OUT_DIR by default
631+
// By default, OUT_DIR is set to that of the last build script in the array
632632
.file(
633633
"src/main.rs",
634634
r#"
@@ -785,9 +785,11 @@ fn multiple_out_dirs() {
785785
.file(
786786
"src/main.rs",
787787
r#"
788-
include!(concat!(env!("OUT_DIR"), "/foo.rs"));
788+
include!(concat!(env!("build1_OUT_DIR"), "/foo.rs"));
789+
include!(concat!(env!("build2_OUT_DIR"), "/foo.rs"));
789790
fn main() {
790-
println!("{}", message());
791+
println!("{}", message1());
792+
println!("{}", message2());
791793
}
792794
"#,
793795
)
@@ -803,7 +805,7 @@ fn multiple_out_dirs() {
803805
let dest_path = Path::new(&out_dir).join("foo.rs");
804806
fs::write(
805807
&dest_path,
806-
"pub fn message() -> &'static str {
808+
"pub fn message1() -> &'static str {
807809
\"Hello, from Build Script 1!\"
808810
}
809811
"
@@ -822,7 +824,7 @@ fn multiple_out_dirs() {
822824
let dest_path = Path::new(&out_dir).join("foo.rs");
823825
fs::write(
824826
&dest_path,
825-
"pub fn message() -> &'static str {
827+
"pub fn message2() -> &'static str {
826828
\"Hello, from Build Script 2!\"
827829
}
828830
"
@@ -835,6 +837,7 @@ fn multiple_out_dirs() {
835837
.masquerade_as_nightly_cargo(&["multiple-build-scripts"])
836838
.with_status(0)
837839
.with_stdout_data(str![[r#"
840+
Hello, from Build Script 1!
838841
Hello, from Build Script 2!
839842
840843
"#]])

0 commit comments

Comments
 (0)