about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/librustc/middle/dependency_format.rs10
-rw-r--r--src/test/auxiliary/issue-12133-dylib.rs2
-rw-r--r--src/test/auxiliary/syntax-extension-with-dll-deps-1.rs1
-rw-r--r--src/test/auxiliary/syntax-extension-with-dll-deps-2.rs1
-rw-r--r--src/test/run-make/c-dynamic-dylib/Makefile2
-rw-r--r--src/test/run-make/c-static-dylib/Makefile2
-rw-r--r--src/test/run-make/dylib-chain/Makefile6
-rw-r--r--src/test/run-make/issue-15460/Makefile2
-rw-r--r--src/test/run-make/mixing-deps/Makefile2
-rw-r--r--src/test/run-make/mixing-formats/Makefile38
-rw-r--r--src/test/run-make/prefer-dylib/Makefile2
-rw-r--r--src/test/run-make/simple-dylib/Makefile2
-rw-r--r--src/test/run-make/static-dylib-by-default/Makefile9
-rw-r--r--src/test/run-make/static-dylib-by-default/bar.rs18
-rw-r--r--src/test/run-make/static-dylib-by-default/foo.rs14
-rw-r--r--src/test/run-make/static-dylib-by-default/main.c16
-rw-r--r--src/test/run-make/suspicious-library/Makefile2
-rw-r--r--src/test/run-make/symlinked-libraries/Makefile2
18 files changed, 97 insertions, 34 deletions
diff --git a/src/librustc/middle/dependency_format.rs b/src/librustc/middle/dependency_format.rs
index 0a28c93a34e..20be7406204 100644
--- a/src/librustc/middle/dependency_format.rs
+++ b/src/librustc/middle/dependency_format.rs
@@ -123,6 +123,16 @@ fn calculate_type(sess: &session::Session,
             return Vec::new();
         }
 
+        // Generating a dylib without `-C prefer-dynamic` means that we're going
+        // to try to eagerly statically link all dependencies. This is normally
+        // done for end-product dylibs, not intermediate products.
+        config::CrateTypeDylib if !sess.opts.cg.prefer_dynamic => {
+            match attempt_static(sess) {
+                Some(v) => return v,
+                None => {}
+            }
+        }
+
         // Everything else falls through below
         config::CrateTypeExecutable | config::CrateTypeDylib => {},
     }
diff --git a/src/test/auxiliary/issue-12133-dylib.rs b/src/test/auxiliary/issue-12133-dylib.rs
index 858d7269cd8..ea22258f67d 100644
--- a/src/test/auxiliary/issue-12133-dylib.rs
+++ b/src/test/auxiliary/issue-12133-dylib.rs
@@ -8,6 +8,4 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-// no-prefer-dynamic
-
 #![crate_type = "dylib"]
diff --git a/src/test/auxiliary/syntax-extension-with-dll-deps-1.rs b/src/test/auxiliary/syntax-extension-with-dll-deps-1.rs
index a6e17e73322..338e04fbb07 100644
--- a/src/test/auxiliary/syntax-extension-with-dll-deps-1.rs
+++ b/src/test/auxiliary/syntax-extension-with-dll-deps-1.rs
@@ -8,7 +8,6 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-// no-prefer-dynamic
 // force-host
 
 #![crate_type = "dylib"]
diff --git a/src/test/auxiliary/syntax-extension-with-dll-deps-2.rs b/src/test/auxiliary/syntax-extension-with-dll-deps-2.rs
index 7a4339aa9f0..88548bb5410 100644
--- a/src/test/auxiliary/syntax-extension-with-dll-deps-2.rs
+++ b/src/test/auxiliary/syntax-extension-with-dll-deps-2.rs
@@ -9,7 +9,6 @@
 // except according to those terms.
 
 // force-host
-// no-prefer-dynamic
 
 #![crate_type = "dylib"]
 #![feature(plugin_registrar, quote, globs)]
diff --git a/src/test/run-make/c-dynamic-dylib/Makefile b/src/test/run-make/c-dynamic-dylib/Makefile
index c4720c418a7..83bddd4c73c 100644
--- a/src/test/run-make/c-dynamic-dylib/Makefile
+++ b/src/test/run-make/c-dynamic-dylib/Makefile
@@ -6,7 +6,7 @@ all:
 	echo ignored
 else
 all: $(call DYLIB,cfoo)
-	$(RUSTC) foo.rs
+	$(RUSTC) foo.rs -C prefer-dynamic
 	$(RUSTC) bar.rs
 	$(call RUN,bar)
 	$(call REMOVE_DYLIBS,cfoo)
diff --git a/src/test/run-make/c-static-dylib/Makefile b/src/test/run-make/c-static-dylib/Makefile
index 6b047846cfd..9914e12d569 100644
--- a/src/test/run-make/c-static-dylib/Makefile
+++ b/src/test/run-make/c-static-dylib/Makefile
@@ -1,7 +1,7 @@
 -include ../tools.mk
 
 all: $(call STATICLIB,cfoo)
-	$(RUSTC) foo.rs
+	$(RUSTC) foo.rs -C prefer-dynamic
 	$(RUSTC) bar.rs
 	rm $(TMPDIR)/$(call STATICLIB_GLOB,cfoo)
 	$(call RUN,bar)
diff --git a/src/test/run-make/dylib-chain/Makefile b/src/test/run-make/dylib-chain/Makefile
index 2149f245147..a33177197b1 100644
--- a/src/test/run-make/dylib-chain/Makefile
+++ b/src/test/run-make/dylib-chain/Makefile
@@ -1,9 +1,9 @@
 -include ../tools.mk
 
 all:
-	$(RUSTC) m1.rs
-	$(RUSTC) m2.rs
-	$(RUSTC) m3.rs
+	$(RUSTC) m1.rs -C prefer-dynamic
+	$(RUSTC) m2.rs -C prefer-dynamic
+	$(RUSTC) m3.rs -C prefer-dynamic
 	$(RUSTC) m4.rs
 	$(call RUN,m4)
 	$(call REMOVE_DYLIBS,m1)
diff --git a/src/test/run-make/issue-15460/Makefile b/src/test/run-make/issue-15460/Makefile
index e6dd5c4c1af..bc5e9b72869 100644
--- a/src/test/run-make/issue-15460/Makefile
+++ b/src/test/run-make/issue-15460/Makefile
@@ -1,6 +1,6 @@
 -include ../tools.mk
 
 all: $(TMPDIR)/libfoo.a
-	$(RUSTC) foo.rs -C extra-filename=-383hf8
+	$(RUSTC) foo.rs -C extra-filename=-383hf8 -C prefer-dynamic
 	$(RUSTC) bar.rs
 	$(call RUN,bar)
diff --git a/src/test/run-make/mixing-deps/Makefile b/src/test/run-make/mixing-deps/Makefile
index 76106ada144..0e52d4a8bef 100644
--- a/src/test/run-make/mixing-deps/Makefile
+++ b/src/test/run-make/mixing-deps/Makefile
@@ -1,7 +1,7 @@
 -include ../tools.mk
 
 all:
-	$(RUSTC) both.rs
+	$(RUSTC) both.rs -C prefer-dynamic
 	$(RUSTC) dylib.rs -C prefer-dynamic
 	$(RUSTC) prog.rs
 	$(call RUN,prog)
diff --git a/src/test/run-make/mixing-formats/Makefile b/src/test/run-make/mixing-formats/Makefile
index e665cb2e535..48257669baf 100644
--- a/src/test/run-make/mixing-formats/Makefile
+++ b/src/test/run-make/mixing-formats/Makefile
@@ -15,60 +15,60 @@
 all:
 	# Building just baz
 	$(RUSTC) --crate-type=rlib  foo.rs
-	$(RUSTC) --crate-type=dylib bar1.rs
-	$(RUSTC) --crate-type=dylib,rlib baz.rs
+	$(RUSTC) --crate-type=dylib bar1.rs -C prefer-dynamic
+	$(RUSTC) --crate-type=dylib,rlib baz.rs -C prefer-dynamic
 	$(RUSTC) --crate-type=bin baz.rs
 	rm $(TMPDIR)/*
-	$(RUSTC) --crate-type=dylib foo.rs
+	$(RUSTC) --crate-type=dylib foo.rs -C prefer-dynamic
 	$(RUSTC) --crate-type=rlib  bar1.rs
-	$(RUSTC) --crate-type=dylib,rlib baz.rs
+	$(RUSTC) --crate-type=dylib,rlib baz.rs -C prefer-dynamic
 	$(RUSTC) --crate-type=bin baz.rs
 	rm $(TMPDIR)/*
 	# Building baz2
 	$(RUSTC) --crate-type=rlib  foo.rs
-	$(RUSTC) --crate-type=dylib bar1.rs
-	$(RUSTC) --crate-type=dylib bar2.rs
+	$(RUSTC) --crate-type=dylib bar1.rs -C prefer-dynamic
+	$(RUSTC) --crate-type=dylib bar2.rs -C prefer-dynamic
 	$(RUSTC) --crate-type=dylib baz2.rs && exit 1 || exit 0
 	$(RUSTC) --crate-type=bin baz2.rs && exit 1 || exit 0
 	rm $(TMPDIR)/*
 	$(RUSTC) --crate-type=rlib  foo.rs
 	$(RUSTC) --crate-type=rlib  bar1.rs
-	$(RUSTC) --crate-type=dylib bar2.rs
+	$(RUSTC) --crate-type=dylib bar2.rs -C prefer-dynamic
 	$(RUSTC) --crate-type=dylib,rlib baz2.rs
 	$(RUSTC) --crate-type=bin baz2.rs
 	rm $(TMPDIR)/*
 	$(RUSTC) --crate-type=rlib  foo.rs
-	$(RUSTC) --crate-type=dylib bar1.rs
+	$(RUSTC) --crate-type=dylib bar1.rs -C prefer-dynamic
 	$(RUSTC) --crate-type=rlib  bar2.rs
-	$(RUSTC) --crate-type=dylib,rlib baz2.rs
+	$(RUSTC) --crate-type=dylib,rlib baz2.rs -C prefer-dynamic
 	$(RUSTC) --crate-type=bin baz2.rs
 	rm $(TMPDIR)/*
 	$(RUSTC) --crate-type=rlib  foo.rs
 	$(RUSTC) --crate-type=rlib  bar1.rs
 	$(RUSTC) --crate-type=rlib  bar2.rs
-	$(RUSTC) --crate-type=dylib,rlib baz2.rs
+	$(RUSTC) --crate-type=dylib,rlib baz2.rs -C prefer-dynamic
 	$(RUSTC) --crate-type=bin baz2.rs
 	rm $(TMPDIR)/*
-	$(RUSTC) --crate-type=dylib foo.rs
+	$(RUSTC) --crate-type=dylib foo.rs -C prefer-dynamic
 	$(RUSTC) --crate-type=rlib  bar1.rs
 	$(RUSTC) --crate-type=rlib  bar2.rs
-	$(RUSTC) --crate-type=dylib,rlib baz2.rs
+	$(RUSTC) --crate-type=dylib,rlib baz2.rs -C prefer-dynamic
 	$(RUSTC) --crate-type=bin baz2.rs
 	rm $(TMPDIR)/*
-	$(RUSTC) --crate-type=dylib foo.rs
-	$(RUSTC) --crate-type=dylib bar1.rs
+	$(RUSTC) --crate-type=dylib foo.rs -C prefer-dynamic
+	$(RUSTC) --crate-type=dylib bar1.rs -C prefer-dynamic
 	$(RUSTC) --crate-type=rlib  bar2.rs
 	$(RUSTC) --crate-type=dylib,rlib baz2.rs
 	$(RUSTC) --crate-type=bin baz2.rs
 	rm $(TMPDIR)/*
-	$(RUSTC) --crate-type=dylib foo.rs
+	$(RUSTC) --crate-type=dylib foo.rs -C prefer-dynamic
 	$(RUSTC) --crate-type=rlib  bar1.rs
-	$(RUSTC) --crate-type=dylib bar2.rs
+	$(RUSTC) --crate-type=dylib bar2.rs -C prefer-dynamic
 	$(RUSTC) --crate-type=dylib,rlib baz2.rs
 	$(RUSTC) --crate-type=bin baz2.rs
 	rm $(TMPDIR)/*
-	$(RUSTC) --crate-type=dylib foo.rs
-	$(RUSTC) --crate-type=dylib bar1.rs
-	$(RUSTC) --crate-type=dylib bar2.rs
+	$(RUSTC) --crate-type=dylib foo.rs -C prefer-dynamic
+	$(RUSTC) --crate-type=dylib bar1.rs -C prefer-dynamic
+	$(RUSTC) --crate-type=dylib bar2.rs -C prefer-dynamic
 	$(RUSTC) --crate-type=dylib,rlib baz2.rs
 	$(RUSTC) --crate-type=bin baz2.rs
diff --git a/src/test/run-make/prefer-dylib/Makefile b/src/test/run-make/prefer-dylib/Makefile
index fe9bbb95095..bd44feecf2a 100644
--- a/src/test/run-make/prefer-dylib/Makefile
+++ b/src/test/run-make/prefer-dylib/Makefile
@@ -1,7 +1,7 @@
 -include ../tools.mk
 
 all:
-	$(RUSTC) bar.rs --crate-type=dylib --crate-type=rlib
+	$(RUSTC) bar.rs --crate-type=dylib --crate-type=rlib -C prefer-dynamic
 	$(RUSTC) foo.rs -C prefer-dynamic
 	$(call RUN,foo)
 	rm $(TMPDIR)/*bar*
diff --git a/src/test/run-make/simple-dylib/Makefile b/src/test/run-make/simple-dylib/Makefile
index 84e6e079e6f..26730820fea 100644
--- a/src/test/run-make/simple-dylib/Makefile
+++ b/src/test/run-make/simple-dylib/Makefile
@@ -1,5 +1,5 @@
 -include ../tools.mk
 all:
-	$(RUSTC) bar.rs --crate-type=dylib
+	$(RUSTC) bar.rs --crate-type=dylib -C prefer-dynamic
 	$(RUSTC) foo.rs
 	$(call RUN,foo)
diff --git a/src/test/run-make/static-dylib-by-default/Makefile b/src/test/run-make/static-dylib-by-default/Makefile
new file mode 100644
index 00000000000..20bed0abbfd
--- /dev/null
+++ b/src/test/run-make/static-dylib-by-default/Makefile
@@ -0,0 +1,9 @@
+-include ../tools.mk
+
+all:
+	$(RUSTC) foo.rs
+	$(RUSTC) bar.rs
+	$(CC) main.c -o $(call RUN_BINFILE,main) -lbar
+	rm $(TMPDIR)/*.rlib
+	rm $(call DYLIB,foo)
+	$(call RUN,main)
diff --git a/src/test/run-make/static-dylib-by-default/bar.rs b/src/test/run-make/static-dylib-by-default/bar.rs
new file mode 100644
index 00000000000..63da277dece
--- /dev/null
+++ b/src/test/run-make/static-dylib-by-default/bar.rs
@@ -0,0 +1,18 @@
+// 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.
+
+#![crate_type = "dylib"]
+
+extern crate foo;
+
+#[no_mangle]
+pub extern fn bar() {
+    foo::foo();
+}
diff --git a/src/test/run-make/static-dylib-by-default/foo.rs b/src/test/run-make/static-dylib-by-default/foo.rs
new file mode 100644
index 00000000000..341040e653c
--- /dev/null
+++ b/src/test/run-make/static-dylib-by-default/foo.rs
@@ -0,0 +1,14 @@
+// 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.
+
+#![crate_type = "rlib"]
+#![crate_type = "dylib"]
+
+pub fn foo() {}
diff --git a/src/test/run-make/static-dylib-by-default/main.c b/src/test/run-make/static-dylib-by-default/main.c
new file mode 100644
index 00000000000..30bb0783edf
--- /dev/null
+++ b/src/test/run-make/static-dylib-by-default/main.c
@@ -0,0 +1,16 @@
+// 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.
+
+extern void bar();
+
+int main() {
+    bar();
+    return 0;
+}
diff --git a/src/test/run-make/suspicious-library/Makefile b/src/test/run-make/suspicious-library/Makefile
index 621f3064b5c..12f437075fb 100644
--- a/src/test/run-make/suspicious-library/Makefile
+++ b/src/test/run-make/suspicious-library/Makefile
@@ -1,7 +1,7 @@
 -include ../tools.mk
 
 all:
-	$(RUSTC) foo.rs
+	$(RUSTC) foo.rs -C prefer-dynamic
 	touch $(call DYLIB,foo-something-special)
 	touch $(call DYLIB,foo-something-special2)
 	$(RUSTC) bar.rs
diff --git a/src/test/run-make/symlinked-libraries/Makefile b/src/test/run-make/symlinked-libraries/Makefile
index 9eb2c135230..ac595546aa7 100644
--- a/src/test/run-make/symlinked-libraries/Makefile
+++ b/src/test/run-make/symlinked-libraries/Makefile
@@ -4,7 +4,7 @@
 ifndef IS_WINDOWS
 
 all:
-	$(RUSTC) foo.rs
+	$(RUSTC) foo.rs -C prefer-dynamic
 	mkdir -p $(TMPDIR)/other
 	ln -nsf $(TMPDIR)/$(call DYLIB_GLOB,foo) $(TMPDIR)/other
 	$(RUSTC) bar.rs -L $(TMPDIR)/other