about summary refs log tree commit diff
diff options
context:
space:
mode:
authorScott Abbey <scottabbey2@gmail.com>2017-12-21 21:43:16 -0600
committerScott Abbey <scottabbey2@gmail.com>2017-12-22 02:34:13 -0600
commitb989428f7dec7b52d68bed6a21e9b5b0a8086267 (patch)
tree620ea9b0272b41915d07045f5faaa9f1b46f7445
parentf7a0dffc7870224f87263b4cda81d98b2436d8f0 (diff)
Don't try to statically link libstdc++ on FreeBSD
The code inside this conditional will not work on FreeBSD 10+ because
those versions use clang and libc++ rather than libstdc++.

Since FreeBSD comes with libc++ in the base, presumably all 10+ systems
will have it present.

Searching for libstdc++.a will not work if it is not present.  As a
result, this would previously have set `LLVM_STATIC_STDCPP=libstdc++.a`,
which isn't a valid path and caused problems later on when building
`librustc_llvm`.

This could possibly be updated in the future to look for `libc++.a` on
FreeBSD, by expanding the code inside the conditional.  In one attempt
to run this on x86_64-freebsd, I found that libc++ was not compiled with
PIC, so it failed anyway.
-rw-r--r--src/bootstrap/compile.rs1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/bootstrap/compile.rs b/src/bootstrap/compile.rs
index 4c76230ced8..c8e500a4f68 100644
--- a/src/bootstrap/compile.rs
+++ b/src/bootstrap/compile.rs
@@ -550,6 +550,7 @@ pub fn rustc_cargo(build: &Build,
     // Building with a static libstdc++ is only supported on linux right now,
     // not for MSVC or macOS
     if build.config.llvm_static_stdcpp &&
+       !target.contains("freebsd") &&
        !target.contains("windows") &&
        !target.contains("apple") {
         cargo.env("LLVM_STATIC_STDCPP",