De-duplicate consecutive libs when printing native-static-libs
This commit is contained in:
parent
910be1b3e8
commit
ad16606471
3 changed files with 16 additions and 1 deletions
|
@ -1392,6 +1392,11 @@ fn print_native_static_libs(
|
||||||
let mut lib_args: Vec<_> = all_native_libs
|
let mut lib_args: Vec<_> = all_native_libs
|
||||||
.iter()
|
.iter()
|
||||||
.filter(|l| relevant_lib(sess, l))
|
.filter(|l| relevant_lib(sess, l))
|
||||||
|
// Deduplication of successive repeated libraries, see rust-lang/rust#113209
|
||||||
|
//
|
||||||
|
// note: we don't use PartialEq/Eq because NativeLib transitively depends on local
|
||||||
|
// elements like spans, which we don't care about and would make the deduplication impossible
|
||||||
|
.dedup_by(|l1, l2| l1.name == l2.name && l1.kind == l2.kind && l1.verbatim == l2.verbatim)
|
||||||
.filter_map(|lib| {
|
.filter_map(|lib| {
|
||||||
let name = lib.name;
|
let name = lib.name;
|
||||||
match lib.kind {
|
match lib.kind {
|
||||||
|
|
|
@ -5,7 +5,7 @@ include ../tools.mk
|
||||||
|
|
||||||
all:
|
all:
|
||||||
$(RUSTC) --crate-type rlib -lbar_cli bar.rs
|
$(RUSTC) --crate-type rlib -lbar_cli bar.rs
|
||||||
$(RUSTC) foo.rs -lfoo_cli --crate-type staticlib --print native-static-libs 2>&1 \
|
$(RUSTC) foo.rs -lfoo_cli -lfoo_cli --crate-type staticlib --print native-static-libs 2>&1 \
|
||||||
| grep 'note: native-static-libs: ' \
|
| grep 'note: native-static-libs: ' \
|
||||||
| sed 's/note: native-static-libs: \(.*\)/\1/' > $(TMPDIR)/libs.txt
|
| sed 's/note: native-static-libs: \(.*\)/\1/' > $(TMPDIR)/libs.txt
|
||||||
|
|
||||||
|
@ -13,3 +13,7 @@ all:
|
||||||
cat $(TMPDIR)/libs.txt | grep -F "systemd" # in foo.rs
|
cat $(TMPDIR)/libs.txt | grep -F "systemd" # in foo.rs
|
||||||
cat $(TMPDIR)/libs.txt | grep -F "bar_cli"
|
cat $(TMPDIR)/libs.txt | grep -F "bar_cli"
|
||||||
cat $(TMPDIR)/libs.txt | grep -F "foo_cli"
|
cat $(TMPDIR)/libs.txt | grep -F "foo_cli"
|
||||||
|
|
||||||
|
# make sure that foo_cli and glib-2.0 are not consecutively present
|
||||||
|
cat $(TMPDIR)/libs.txt | grep -Fv "foo_cli -lfoo_cli"
|
||||||
|
cat $(TMPDIR)/libs.txt | grep -Fv "glib-2.0 -lglib-2.0"
|
||||||
|
|
|
@ -3,6 +3,7 @@ pub extern "C" fn my_bar_add(left: i32, right: i32) -> i32 {
|
||||||
// Obviously makes no sense but...
|
// Obviously makes no sense but...
|
||||||
unsafe {
|
unsafe {
|
||||||
g_free(std::ptr::null_mut());
|
g_free(std::ptr::null_mut());
|
||||||
|
g_free2(std::ptr::null_mut());
|
||||||
}
|
}
|
||||||
left + right
|
left + right
|
||||||
}
|
}
|
||||||
|
@ -11,3 +12,8 @@ pub extern "C" fn my_bar_add(left: i32, right: i32) -> i32 {
|
||||||
extern "C" {
|
extern "C" {
|
||||||
fn g_free(p: *mut ());
|
fn g_free(p: *mut ());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[link(name = "glib-2.0")]
|
||||||
|
extern "C" {
|
||||||
|
fn g_free2(p: *mut ());
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue