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]"),
}
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) {
}
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)
};
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
-include ../tools.mk
all: $(TMPDIR)/libbar.a
- $(RUSTC) foo.rs -lbar:static
+ $(RUSTC) foo.rs -lstatic=bar
$(RUSTC) main.rs
$(call RUN,main)