mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-30 02:33:55 +00:00
87 lines
4.1 KiB
Rust
87 lines
4.1 KiB
Rust
// Testing various mixings of rlibs and dylibs. Makes sure that it's possible to
|
|
// link an rlib to a dylib. The dependency tree among the file looks like:
|
|
//
|
|
// foo
|
|
// / \
|
|
// bar1 bar2
|
|
// / \ /
|
|
// baz baz2
|
|
//
|
|
// This is generally testing the permutations of the foo/bar1/bar2 layer against
|
|
// the baz/baz2 layer
|
|
|
|
//@ ignore-cross-compile
|
|
|
|
use run_make_support::{run_in_tmpdir, rustc};
|
|
|
|
fn main() {
|
|
run_in_tmpdir(|| {
|
|
// Building just baz
|
|
rustc().crate_type("rlib").input("foo.rs").run();
|
|
rustc().crate_type("dylib").input("bar1.rs").arg("-Cprefer-dynamic").run();
|
|
rustc().crate_type("dylib,rlib").input("baz.rs").arg("-Cprefer-dynamic").run();
|
|
rustc().crate_type("bin").input("baz.rs").run();
|
|
});
|
|
run_in_tmpdir(|| {
|
|
rustc().crate_type("dylib").input("foo.rs").arg("-Cprefer-dynamic").run();
|
|
rustc().crate_type("rlib").input("bar1.rs").run();
|
|
rustc().crate_type("dylib,rlib").input("baz.rs").arg("-Cprefer-dynamic").run();
|
|
rustc().crate_type("bin").input("baz.rs").run();
|
|
});
|
|
run_in_tmpdir(|| {
|
|
// Building baz2
|
|
rustc().crate_type("rlib").input("foo.rs").run();
|
|
rustc().crate_type("dylib").input("bar1.rs").arg("-Cprefer-dynamic").run();
|
|
rustc().crate_type("dylib").input("bar2.rs").arg("-Cprefer-dynamic").run();
|
|
rustc().crate_type("dylib").input("baz2.rs").run_fail().assert_exit_code(1);
|
|
rustc().crate_type("bin").input("baz2.rs").run_fail().assert_exit_code(1);
|
|
});
|
|
run_in_tmpdir(|| {
|
|
rustc().crate_type("rlib").input("foo.rs").run();
|
|
rustc().crate_type("rlib").input("bar1.rs").run();
|
|
rustc().crate_type("dylib").input("bar2.rs").arg("-Cprefer-dynamic").run();
|
|
rustc().crate_type("dylib,rlib").input("baz2.rs").run();
|
|
rustc().crate_type("bin").input("baz2.rs").run();
|
|
});
|
|
run_in_tmpdir(|| {
|
|
rustc().crate_type("rlib").input("foo.rs").run();
|
|
rustc().crate_type("dylib").input("bar1.rs").arg("-Cprefer-dynamic").run();
|
|
rustc().crate_type("rlib").input("bar2.rs").run();
|
|
rustc().crate_type("dylib,rlib").input("baz2.rs").arg("-Cprefer-dynamic").run();
|
|
rustc().crate_type("bin").input("baz2.rs").run();
|
|
});
|
|
run_in_tmpdir(|| {
|
|
rustc().crate_type("rlib").input("foo.rs").run();
|
|
rustc().crate_type("rlib").input("bar1.rs").run();
|
|
rustc().crate_type("rlib").input("bar2.rs").run();
|
|
rustc().crate_type("dylib,rlib").input("baz2.rs").arg("-Cprefer-dynamic").run();
|
|
rustc().crate_type("bin").input("baz2.rs").run();
|
|
});
|
|
run_in_tmpdir(|| {
|
|
rustc().crate_type("dylib").input("foo.rs").arg("-Cprefer-dynamic").run();
|
|
rustc().crate_type("rlib").input("bar1.rs").run();
|
|
rustc().crate_type("rlib").input("bar2.rs").run();
|
|
rustc().crate_type("dylib,rlib").input("baz2.rs").arg("-Cprefer-dynamic").run();
|
|
rustc().crate_type("bin").input("baz2.rs").run();
|
|
});
|
|
run_in_tmpdir(|| {
|
|
rustc().crate_type("dylib").input("foo.rs").arg("-Cprefer-dynamic").run();
|
|
rustc().crate_type("dylib").input("bar1.rs").arg("-Cprefer-dynamic").run();
|
|
rustc().crate_type("rlib").input("bar2.rs").run();
|
|
rustc().crate_type("dylib,rlib").input("baz2.rs").run();
|
|
rustc().crate_type("bin").input("baz2.rs").run();
|
|
});
|
|
run_in_tmpdir(|| {
|
|
rustc().crate_type("dylib").input("foo.rs").arg("-Cprefer-dynamic").run();
|
|
rustc().crate_type("rlib").input("bar1.rs").run();
|
|
rustc().crate_type("dylib").input("bar2.rs").arg("-Cprefer-dynamic").run();
|
|
rustc().crate_type("dylib,rlib").input("baz2.rs").run();
|
|
rustc().crate_type("bin").input("baz2.rs").run();
|
|
});
|
|
rustc().crate_type("dylib").input("foo.rs").arg("-Cprefer-dynamic").run();
|
|
rustc().crate_type("dylib").input("bar1.rs").arg("-Cprefer-dynamic").run();
|
|
rustc().crate_type("dylib").input("bar2.rs").arg("-Cprefer-dynamic").run();
|
|
rustc().crate_type("dylib,rlib").input("baz2.rs").run();
|
|
rustc().crate_type("bin").input("baz2.rs").run();
|
|
}
|