// A similar test to pass-linker-flags, testing that the `-l link-arg` flag // respects the order relative to other `-l` flags, but this time, the flags // are passed on the compilation of a dependency. This test checks that the // downstream compiled binary contains the linker arguments of the dependency, // and in the correct order. // See https://github.com/rust-lang/rust/issues/99427 use run_make_support::{regex, rust_lib_name, rustc}; fn main() { // Build dependencies rustc().input("native_dep_1.rs").crate_type("staticlib").run(); rustc().input("native_dep_2.rs").crate_type("staticlib").run(); rustc() .input("rust_dep_flag.rs") .arg("-lstatic:-bundle=native_dep_1") .arg("-llink-arg=some_flag") .arg("-lstatic:-bundle=native_dep_2") .crate_type("lib") .arg("-Zunstable-options") .run(); rustc().input("rust_dep_attr.rs").crate_type("lib").run(); // Check sequence of linker arguments let out_flag = rustc() .input("main.rs") .extern_("lib", rust_lib_name("rust_dep_flag")) .crate_type("bin") .print("link-args") .run_unchecked() .stdout_utf8(); let out_attr = rustc() .input("main.rs") .extern_("lib", rust_lib_name("rust_dep_attr")) .crate_type("bin") .print("link-args") .run_unchecked() .stdout_utf8(); let re = regex::Regex::new("native_dep_1.*some_flag.*native_dep_2").unwrap(); assert!(re.is_match(&out_flag)); assert!(re.is_match(&out_attr)); }