-
Notifications
You must be signed in to change notification settings - Fork 13.2k
/
Copy pathrmake.rs
26 lines (20 loc) · 984 Bytes
/
rmake.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//@ only-elf
//! Ensure ELF raw-dylib is able to link against the verbatim versioned library
//! without it being present, and then be executed against this library.
use run_make_support::{build_native_dynamic_lib, cwd, diff, rfs, run, rustc};
fn main() {
// We compile the binary without having the library present.
// We also set the rpath to the current directory so we can pick up the library at runtime.
rustc()
.crate_type("bin")
.input("main.rs")
.arg(&format!("-Wl,-rpath={}", cwd().display()))
.run();
// Now, *after* building the binary, we build the library...
build_native_dynamic_lib("library");
// ... rename it to have the versioned library name...
rfs::rename("liblibrary.so", "liblibrary.so.1");
// ... and run with this library, ensuring it was linked correctly at runtime.
let output = run("main").stdout_utf8();
diff().expected_file("output.txt").actual_text("actual", output).run();
}