about summary refs log tree commit diff
path: root/src/libstd/lib.rs
diff options
context:
space:
mode:
authorJorge Aparicio <japaricious@gmail.com>2016-07-24 21:42:11 -0500
committerAlex Crichton <alex@alexcrichton.com>2016-09-12 21:22:15 -0700
commit3fd5fdd8d3e64e957a7eafe3d6d0b10ef4170d59 (patch)
treecf7fe432fda547436b1e0355cb5d0cfec689833f /src/libstd/lib.rs
parentfa9d8cc8ace2c1f22469b4a6c8e1e0352072c675 (diff)
downloadrust-3fd5fdd8d3e64e957a7eafe3d6d0b10ef4170d59.tar.gz
rust-3fd5fdd8d3e64e957a7eafe3d6d0b10ef4170d59.zip
crate-ify compiler-rt into compiler-builtins
libcompiler-rt.a is dead, long live libcompiler-builtins.rlib

This commit moves the logic that used to build libcompiler-rt.a into a
compiler-builtins crate on top of the core crate and below the std crate.
This new crate still compiles the compiler-rt instrinsics using gcc-rs
but produces an .rlib instead of a static library.

Also, with this commit rustc no longer passes -lcompiler-rt to the
linker. This effectively makes the "no-compiler-rt" field of target
specifications a no-op. Users of `no_std` will have to explicitly add
the compiler-builtins crate to their crate dependency graph *if* they
need the compiler-rt intrinsics. Users of the `std` have to do nothing
extra as the std crate depends on compiler-builtins.

Finally, this a step towards lazy compilation of std with Cargo as the
compiler-rt intrinsics can now be built by Cargo instead of having to
be supplied by the user by some other method.

closes #34400
Diffstat (limited to 'src/libstd/lib.rs')
-rw-r--r--src/libstd/lib.rs3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/libstd/lib.rs b/src/libstd/lib.rs
index 4a637b5cfcf..d227fb1404f 100644
--- a/src/libstd/lib.rs
+++ b/src/libstd/lib.rs
@@ -322,6 +322,9 @@ extern crate unwind;
 #[cfg(stage0)]
 extern crate alloc_system;
 
+// compiler-rt intrinsics
+extern crate compiler_builtins;
+
 // Make std testable by not duplicating lang items and other globals. See #2912
 #[cfg(test)] extern crate std as realstd;