Skip to content

Commit 83b4d4d

Browse files
committed
Add test for separate pipelined builds
Make sure the resulting executable is 1) linkable, and 2) the same as built with `--emit metadata,link`.
1 parent fbef300 commit 83b4d4d

File tree

4 files changed

+31
-6
lines changed

4 files changed

+31
-6
lines changed

src/test/run-make/pipelined/Makefile

+24-6
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,33 @@
11
-include ../../run-make-fulldeps/tools.mk
22

3-
O=$(TMPDIR)
3+
O=$(TMPDIR)/together
4+
S=$(TMPDIR)/separate
45

5-
all: $O/main
6-
$O/main
6+
all: $O/main $S/main
7+
# Should produce identical output
8+
cmp $O/main $S/main
79

10+
# Build with combined --emit metadata,link
811
$O/main: $O/libmiddle.rlib $O/libleaf.rlib
9-
$(RUSTC) main.rs --extern middle=$O/libmiddle.rlib -Ldependency=$O
12+
$(BARE_RUSTC) --out-dir $O main.rs --extern middle=$O/libmiddle.rlib -Ldependency=$O
13+
$O/main
1014

1115
$O/libmiddle.rlib: middle.rs $O/libleaf.rmeta
12-
$(RUSTC) --emit link middle.rs --extern leaf=$O/libleaf.rmeta
16+
$(BARE_RUSTC) --out-dir $O --emit link middle.rs --extern leaf=$O/libleaf.rmeta
1317

1418
$O/libleaf.rlib $O/libleaf.rmeta: leaf.rs
15-
$(RUSTC) --emit metadata,link leaf.rs
19+
$(BARE_RUSTC) --out-dir $O --emit metadata,link leaf.rs
20+
21+
# Build with separate --emit metadata / --emit link
22+
$S/main: $S/libmiddle.rlib $S/libleaf.rlib
23+
$(BARE_RUSTC) --out-dir $S main.rs --extern middle=$S/libmiddle.rlib -Ldependency=$S
24+
$S/main
25+
26+
$S/libmiddle.rlib: middle.rs $S/libleaf.rmeta
27+
$(BARE_RUSTC) --out-dir $S --emit link middle.rs --extern leaf=$S/libleaf.rmeta
28+
29+
$S/libleaf.rlib: leaf.rs
30+
$(BARE_RUSTC) --out-dir $S --emit link leaf.rs
31+
32+
$S/libleaf.rmeta: leaf.rs
33+
$(BARE_RUSTC) --out-dir $S --emit metadata -Zmetadata-link leaf.rs

src/test/run-make/pipelined/leaf.rs

+5
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@ pub fn simple(a: u32, b: u32) -> u32 {
2020
c
2121
}
2222

23+
#[inline]
24+
pub fn inlined(a: u32, b: u32) -> u32 {
25+
a * b
26+
}
27+
2328
pub fn generic<D: std::fmt::Debug>(d: D) {
2429
println!("generically printing {:?}", d);
2530
}

src/test/run-make/pipelined/main.rs

+1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@ fn main() {
66
println!("middle::BAR {}", middle::BAR);
77

88
assert_eq!(middle::simple(2, 3), 5);
9+
assert_eq!(middle::inlined(2, 3), 6);
910
}

src/test/run-make/pipelined/middle.rs

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ extern crate leaf;
55
pub static BAR: &str = leaf::FOO;
66

77
pub use leaf::simple;
8+
pub use leaf::inlined;
89

910
pub fn do_a_thing() {
1011
let s = leaf::GenericStruct {

0 commit comments

Comments
 (0)