| // `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-rustc, but without rlibs. |
| // See https://github.com/rust-lang/rust/issues/99425 |
| |
| //@ ignore-apple |
| // Reason: linking fails due to the unusual ".ext" staticlib name. |
| |
| 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("local_native_dep.rs") |
| .crate_type("staticlib") |
| .output("local_some_strange_name.ext") |
| .run(); |
| rustc().input("main.rs").arg("-lstatic:+verbatim=local_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 local_native_dep without |
| // any file extensions. |
| rustc() |
| .input("local_native_dep.rs") |
| .crate_type("staticlib") |
| .output("liblocal_native_dep.a") |
| .run(); |
| rustc().input("local_native_dep.rs").crate_type("staticlib").output("local_native_dep.a").run(); |
| rustc() |
| .input("local_native_dep.rs") |
| .crate_type("staticlib") |
| .output("local_native_dep.lib") |
| .run(); |
| rustc() |
| .input("main.rs") |
| .arg("-lstatic:+verbatim=local_native_dep") |
| .run_fail() |
| .assert_stderr_contains("local_native_dep"); |
| } |