Skip to content

Commit 9efa25c

Browse files
committed
Support native library modifiers (RFC 2951)
1 parent fba7fed commit 9efa25c

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

src/lib.rs

+16-1
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ pub struct Build {
114114
compiler: Option<PathBuf>,
115115
archiver: Option<PathBuf>,
116116
cargo_metadata: bool,
117+
link_lib_modifiers: Option<String>,
117118
pic: Option<bool>,
118119
use_plt: Option<bool>,
119120
static_crt: Option<bool>,
@@ -312,6 +313,7 @@ impl Build {
312313
compiler: None,
313314
archiver: None,
314315
cargo_metadata: true,
316+
link_lib_modifiers: None,
315317
pic: None,
316318
use_plt: None,
317319
static_crt: None,
@@ -898,6 +900,16 @@ impl Build {
898900
self
899901
}
900902

903+
/// Configures native library modifiers that will be added to the
904+
/// `rustc-link-lib=static:MODIFIERS=LIBRARY_NAME` metadata line
905+
/// emitted for cargo if `cargo_metadata` is enabled.
906+
/// See https://doc.rust-lang.org/rustc/command-line-arguments.html#-l-link-the-generated-crate-to-a-native-library
907+
/// for the list of modifiers accepted by rustc.
908+
pub fn link_lib_modifiers(&mut self, link_lib_modifiers: Option<&str>) -> &mut Build {
909+
self.link_lib_modifiers = link_lib_modifiers.map(ToString::to_string);
910+
self
911+
}
912+
901913
/// Configures whether the compiler will emit position independent code.
902914
///
903915
/// This option defaults to `false` for `windows-gnu` and bare metal targets and
@@ -1014,7 +1026,10 @@ impl Build {
10141026
}
10151027
}
10161028

1017-
self.print(&format!("cargo:rustc-link-lib=static={}", lib_name));
1029+
match &self.link_lib_modifiers {
1030+
Some(m) => self.print(&format!("cargo:rustc-link-lib=static:{}={}", m, lib_name)),
1031+
None => self.print(&format!("cargo:rustc-link-lib=static={}", lib_name)),
1032+
}
10181033
self.print(&format!("cargo:rustc-link-search=native={}", dst.display()));
10191034

10201035
// Add specific C++ libraries, if enabled.

0 commit comments

Comments
 (0)