mirror of
https://github.com/rust-lang/rust.git
synced 2024-10-31 22:41:50 +00:00
rollup merge of #20382: alexcrichton/isuse-20376
This commit is contained in:
commit
faf53559c6
@ -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) {
|
||||
|
@ -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)
|
||||
};
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user