rollup merge of #20382: alexcrichton/isuse-20376

This commit is contained in:
Alex Crichton 2015-01-02 09:16:47 -08:00
commit faf53559c6
4 changed files with 45 additions and 28 deletions

View file

@ -744,7 +744,7 @@ pub fn rustc_short_optgroups() -> Vec<RustcOptGroup> {
opt::multi("l", "", "Link the generated crate(s) to the specified native
library NAME. The optional KIND can be one of,
static, dylib, or framework. If omitted, dylib is
assumed.", "NAME[:KIND]"),
assumed.", "[KIND=]NAME"),
opt::multi("", "crate-type", "Comma separated list of types of crates
for the compiler to emit",
"[bin|lib|rlib|dylib|staticlib]"),
@ -1017,6 +1017,24 @@ pub fn build_session_options(matches: &getopts::Matches) -> Options {
}
let libs = matches.opt_strs("l").into_iter().map(|s| {
let mut parts = s.splitn(1, '=');
let kind = parts.next().unwrap();
if let Some(name) = parts.next() {
let kind = match kind {
"dylib" => cstore::NativeUnknown,
"framework" => cstore::NativeFramework,
"static" => cstore::NativeStatic,
s => {
early_error(format!("unknown library kind `{}`, expected \
one of dylib, framework, or static",
s)[]);
}
};
return (name.to_string(), kind)
}
// FIXME(acrichto) remove this once crates have stopped using it, this
// is deprecated behavior now.
let mut parts = s.rsplitn(1, ':');
let kind = parts.next().unwrap();
let (name, kind) = match (parts.next(), kind) {

View file

@ -34,15 +34,14 @@ impl SearchPaths {
}
pub fn add_path(&mut self, path: &str) {
let (kind, path) = if path.ends_with(":native") {
(PathKind::Native, path.slice_to(path.len() - ":native".len()))
} else if path.ends_with(":crate") {
(PathKind::Crate, path.slice_to(path.len() - ":crate".len()))
} else if path.ends_with(":dependency") {
(PathKind::Dependency,
path.slice_to(path.len() - ":dependency".len()))
} else if path.ends_with(":all") {
(PathKind::All, path.slice_to(path.len() - ":all".len()))
let (kind, path) = if path.starts_with("native=") {
(PathKind::Native, path.slice_from("native=".len()))
} else if path.starts_with("crate=") {
(PathKind::Crate, path.slice_from("crate=".len()))
} else if path.starts_with("dependency=") {
(PathKind::Dependency, path.slice_from("dependency=".len()))
} else if path.starts_with("all=") {
(PathKind::All, path.slice_from("all=".len()))
} else {
(PathKind::All, path)
};

View file

@ -6,25 +6,25 @@ all: $(TMPDIR)/libnative.a
mv $(TMPDIR)/libnative.a $(TMPDIR)/native
$(RUSTC) a.rs
mv $(TMPDIR)/liba.rlib $(TMPDIR)/crate
$(RUSTC) b.rs -L $(TMPDIR)/crate:native && exit 1 || exit 0
$(RUSTC) b.rs -L $(TMPDIR)/crate:dependency && exit 1 || exit 0
$(RUSTC) b.rs -L $(TMPDIR)/crate:crate
$(RUSTC) b.rs -L $(TMPDIR)/crate
$(RUSTC) c.rs -L $(TMPDIR)/crate:native && exit 1 || exit 0
$(RUSTC) c.rs -L $(TMPDIR)/crate:crate && exit 1 || exit 0
$(RUSTC) c.rs -L $(TMPDIR)/crate:dependency
$(RUSTC) c.rs -L $(TMPDIR)/crate
$(RUSTC) d.rs -L $(TMPDIR)/native:dependency && exit 1 || exit 0
$(RUSTC) d.rs -L $(TMPDIR)/native:crate && exit 1 || exit 0
$(RUSTC) d.rs -L $(TMPDIR)/native:native
$(RUSTC) d.rs -L $(TMPDIR)/native
$(RUSTC) b.rs -L native=$(TMPDIR)/crate && exit 1 || exit 0
$(RUSTC) b.rs -L dependency=$(TMPDIR)/crate && exit 1 || exit 0
$(RUSTC) b.rs -L crate=$(TMPDIR)/crate
$(RUSTC) b.rs -L all=$(TMPDIR)/crate
$(RUSTC) c.rs -L native=$(TMPDIR)/crate && exit 1 || exit 0
$(RUSTC) c.rs -L crate=$(TMPDIR)/crate && exit 1 || exit 0
$(RUSTC) c.rs -L dependency=$(TMPDIR)/crate
$(RUSTC) c.rs -L all=$(TMPDIR)/crate
$(RUSTC) d.rs -L dependency=$(TMPDIR)/native && exit 1 || exit 0
$(RUSTC) d.rs -L crate=$(TMPDIR)/native && exit 1 || exit 0
$(RUSTC) d.rs -L native=$(TMPDIR)/native
$(RUSTC) d.rs -L all=$(TMPDIR)/native
mkdir -p $(TMPDIR)/e1
mkdir -p $(TMPDIR)/e2
$(RUSTC) e.rs -o $(TMPDIR)/e1/libe.rlib
$(RUSTC) e.rs -o $(TMPDIR)/e2/libe.rlib
$(RUSTC) f.rs -L $(TMPDIR)/e1 -L $(TMPDIR)/e2 && exit 1 || exit 0
$(RUSTC) f.rs -L $(TMPDIR)/e1:crate -L $(TMPDIR)/e2 && exit 1 || exit 0
$(RUSTC) f.rs -L $(TMPDIR)/e1:crate -L $(TMPDIR)/e2:crate && exit 1 || exit 0
$(RUSTC) f.rs -L $(TMPDIR)/e1:native -L $(TMPDIR)/e2
$(RUSTC) f.rs -L $(TMPDIR)/e1:dependency -L $(TMPDIR)/e2
$(RUSTC) f.rs -L $(TMPDIR)/e1:dependency -L $(TMPDIR)/e2:crate
$(RUSTC) f.rs -L crate=$(TMPDIR)/e1 -L $(TMPDIR)/e2 && exit 1 || exit 0
$(RUSTC) f.rs -L crate=$(TMPDIR)/e1 -L crate=$(TMPDIR)/e2 && exit 1 || exit 0
$(RUSTC) f.rs -L native=$(TMPDIR)/e1 -L $(TMPDIR)/e2
$(RUSTC) f.rs -L dependency=$(TMPDIR)/e1 -L $(TMPDIR)/e2
$(RUSTC) f.rs -L dependency=$(TMPDIR)/e1 -L crate=$(TMPDIR)/e2

View file

@ -1,7 +1,7 @@
-include ../tools.mk
all: $(TMPDIR)/libbar.a
$(RUSTC) foo.rs -lbar:static
$(RUSTC) foo.rs -lstatic=bar
$(RUSTC) main.rs
$(call RUN,main)