| // `verbatim` is a native link modifier that forces rustc to only accept libraries with |
| // a specified name. This test checks that this modifier works as intended. |
| // This test is the same as native-link-modifier-linker, but with rlibs. |
| // See https://github.com/rust-lang/rust/issues/99425 |
| |
| use run_make_support::rustc; |
| |
| fn main() { |
| // Verbatim allows for the specification of a precise name |
| // - in this case, the unconventional ".ext" extension. |
| rustc() |
| .input("upstream_native_dep.rs") |
| .crate_type("staticlib") |
| .output("upstream_some_strange_name.ext") |
| .run(); |
| rustc() |
| .input("rust_dep.rs") |
| .crate_type("rlib") |
| .arg("-lstatic:+verbatim=upstream_some_strange_name.ext") |
| .run(); |
| |
| // This section voluntarily avoids using static_lib_name helpers to be verbatim. |
| // With verbatim, even these common library names are refused |
| // - it wants upstream_native_dep without |
| // any file extensions. |
| rustc() |
| .input("upstream_native_dep.rs") |
| .crate_type("staticlib") |
| .output("libupstream_native_dep.a") |
| .run(); |
| rustc() |
| .input("upstream_native_dep.rs") |
| .crate_type("staticlib") |
| .output("upstream_native_dep.a") |
| .run(); |
| rustc() |
| .input("upstream_native_dep.rs") |
| .crate_type("staticlib") |
| .output("upstream_native_dep.lib") |
| .run(); |
| rustc() |
| .input("rust_dep.rs") |
| .crate_type("rlib") |
| .arg("-lstatic:+verbatim=upstream_native_dep") |
| .run_fail() |
| .assert_stderr_contains("upstream_native_dep"); |
| } |