rollup merge of #20382: alexcrichton/isuse-20376
This commit is contained in:
commit
faf53559c6
4 changed files with 45 additions and 28 deletions
|
@ -744,7 +744,7 @@ pub fn rustc_short_optgroups() -> Vec<RustcOptGroup> {
|
||||||
opt::multi("l", "", "Link the generated crate(s) to the specified native
|
opt::multi("l", "", "Link the generated crate(s) to the specified native
|
||||||
library NAME. The optional KIND can be one of,
|
library NAME. The optional KIND can be one of,
|
||||||
static, dylib, or framework. If omitted, dylib is
|
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
|
opt::multi("", "crate-type", "Comma separated list of types of crates
|
||||||
for the compiler to emit",
|
for the compiler to emit",
|
||||||
"[bin|lib|rlib|dylib|staticlib]"),
|
"[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 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 mut parts = s.rsplitn(1, ':');
|
||||||
let kind = parts.next().unwrap();
|
let kind = parts.next().unwrap();
|
||||||
let (name, kind) = match (parts.next(), kind) {
|
let (name, kind) = match (parts.next(), kind) {
|
||||||
|
|
|
@ -34,15 +34,14 @@ impl SearchPaths {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn add_path(&mut self, path: &str) {
|
pub fn add_path(&mut self, path: &str) {
|
||||||
let (kind, path) = if path.ends_with(":native") {
|
let (kind, path) = if path.starts_with("native=") {
|
||||||
(PathKind::Native, path.slice_to(path.len() - ":native".len()))
|
(PathKind::Native, path.slice_from("native=".len()))
|
||||||
} else if path.ends_with(":crate") {
|
} else if path.starts_with("crate=") {
|
||||||
(PathKind::Crate, path.slice_to(path.len() - ":crate".len()))
|
(PathKind::Crate, path.slice_from("crate=".len()))
|
||||||
} else if path.ends_with(":dependency") {
|
} else if path.starts_with("dependency=") {
|
||||||
(PathKind::Dependency,
|
(PathKind::Dependency, path.slice_from("dependency=".len()))
|
||||||
path.slice_to(path.len() - ":dependency".len()))
|
} else if path.starts_with("all=") {
|
||||||
} else if path.ends_with(":all") {
|
(PathKind::All, path.slice_from("all=".len()))
|
||||||
(PathKind::All, path.slice_to(path.len() - ":all".len()))
|
|
||||||
} else {
|
} else {
|
||||||
(PathKind::All, path)
|
(PathKind::All, path)
|
||||||
};
|
};
|
||||||
|
|
|
@ -6,25 +6,25 @@ all: $(TMPDIR)/libnative.a
|
||||||
mv $(TMPDIR)/libnative.a $(TMPDIR)/native
|
mv $(TMPDIR)/libnative.a $(TMPDIR)/native
|
||||||
$(RUSTC) a.rs
|
$(RUSTC) a.rs
|
||||||
mv $(TMPDIR)/liba.rlib $(TMPDIR)/crate
|
mv $(TMPDIR)/liba.rlib $(TMPDIR)/crate
|
||||||
$(RUSTC) b.rs -L $(TMPDIR)/crate:native && exit 1 || exit 0
|
$(RUSTC) b.rs -L native=$(TMPDIR)/crate && exit 1 || exit 0
|
||||||
$(RUSTC) b.rs -L $(TMPDIR)/crate:dependency && exit 1 || exit 0
|
$(RUSTC) b.rs -L dependency=$(TMPDIR)/crate && exit 1 || exit 0
|
||||||
$(RUSTC) b.rs -L $(TMPDIR)/crate:crate
|
$(RUSTC) b.rs -L crate=$(TMPDIR)/crate
|
||||||
$(RUSTC) b.rs -L $(TMPDIR)/crate
|
$(RUSTC) b.rs -L all=$(TMPDIR)/crate
|
||||||
$(RUSTC) c.rs -L $(TMPDIR)/crate:native && exit 1 || exit 0
|
$(RUSTC) c.rs -L native=$(TMPDIR)/crate && exit 1 || exit 0
|
||||||
$(RUSTC) c.rs -L $(TMPDIR)/crate:crate && exit 1 || exit 0
|
$(RUSTC) c.rs -L crate=$(TMPDIR)/crate && exit 1 || exit 0
|
||||||
$(RUSTC) c.rs -L $(TMPDIR)/crate:dependency
|
$(RUSTC) c.rs -L dependency=$(TMPDIR)/crate
|
||||||
$(RUSTC) c.rs -L $(TMPDIR)/crate
|
$(RUSTC) c.rs -L all=$(TMPDIR)/crate
|
||||||
$(RUSTC) d.rs -L $(TMPDIR)/native:dependency && exit 1 || exit 0
|
$(RUSTC) d.rs -L dependency=$(TMPDIR)/native && exit 1 || exit 0
|
||||||
$(RUSTC) d.rs -L $(TMPDIR)/native:crate && exit 1 || exit 0
|
$(RUSTC) d.rs -L crate=$(TMPDIR)/native && exit 1 || exit 0
|
||||||
$(RUSTC) d.rs -L $(TMPDIR)/native:native
|
$(RUSTC) d.rs -L native=$(TMPDIR)/native
|
||||||
$(RUSTC) d.rs -L $(TMPDIR)/native
|
$(RUSTC) d.rs -L all=$(TMPDIR)/native
|
||||||
mkdir -p $(TMPDIR)/e1
|
mkdir -p $(TMPDIR)/e1
|
||||||
mkdir -p $(TMPDIR)/e2
|
mkdir -p $(TMPDIR)/e2
|
||||||
$(RUSTC) e.rs -o $(TMPDIR)/e1/libe.rlib
|
$(RUSTC) e.rs -o $(TMPDIR)/e1/libe.rlib
|
||||||
$(RUSTC) e.rs -o $(TMPDIR)/e2/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 -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 crate=$(TMPDIR)/e1 -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 crate=$(TMPDIR)/e1 -L crate=$(TMPDIR)/e2 && exit 1 || exit 0
|
||||||
$(RUSTC) f.rs -L $(TMPDIR)/e1:native -L $(TMPDIR)/e2
|
$(RUSTC) f.rs -L native=$(TMPDIR)/e1 -L $(TMPDIR)/e2
|
||||||
$(RUSTC) f.rs -L $(TMPDIR)/e1:dependency -L $(TMPDIR)/e2
|
$(RUSTC) f.rs -L dependency=$(TMPDIR)/e1 -L $(TMPDIR)/e2
|
||||||
$(RUSTC) f.rs -L $(TMPDIR)/e1:dependency -L $(TMPDIR)/e2:crate
|
$(RUSTC) f.rs -L dependency=$(TMPDIR)/e1 -L crate=$(TMPDIR)/e2
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
-include ../tools.mk
|
-include ../tools.mk
|
||||||
|
|
||||||
all: $(TMPDIR)/libbar.a
|
all: $(TMPDIR)/libbar.a
|
||||||
$(RUSTC) foo.rs -lbar:static
|
$(RUSTC) foo.rs -lstatic=bar
|
||||||
$(RUSTC) main.rs
|
$(RUSTC) main.rs
|
||||||
$(call RUN,main)
|
$(call RUN,main)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue