rustc: Don't deduplicate libraries linked to

Linker argument order with respect to libraries is important enough that we
shouldn't be attempting to filter out libraries getting passed through to the
linker. When linking with a native library that has multiple dependant native
libraries, it's useful to have control over the link argument order.
This commit is contained in:
Alex Crichton 2014-03-04 13:17:30 -08:00
parent a15448c85a
commit 4cdc6ce337
5 changed files with 31 additions and 6 deletions

View File

@ -154,15 +154,10 @@ impl CStore {
.collect()
}
pub fn add_used_library(&self, lib: ~str, kind: NativeLibaryKind)
-> bool {
pub fn add_used_library(&self, lib: ~str, kind: NativeLibaryKind) {
assert!(!lib.is_empty());
let mut used_libraries = self.used_libraries.borrow_mut();
if used_libraries.get().iter().any(|&(ref x, _)| x == &lib) {
return false;
}
used_libraries.get().push((lib, kind));
true
}
pub fn get_used_libraries<'a>(&'a self)

View File

@ -0,0 +1,6 @@
-include ../tools.mk
all: $(call STATICLIB,foo) $(call STATICLIB,bar)
$(RUSTC) main.rs
$(call RUN,main)

View File

@ -0,0 +1,3 @@
extern void foo();
void bar() { foo(); }

View File

@ -0,0 +1 @@
void foo() {}

View File

@ -0,0 +1,20 @@
// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.
#[link(name = "foo")]
#[link(name = "bar")]
#[link(name = "foo")]
extern {
fn bar();
}
fn main() {
unsafe { bar() }
}