]> git.lizzy.rs Git - rust.git/commitdiff
Don't try to statically link libstdc++ on FreeBSD
authorScott Abbey <scottabbey2@gmail.com>
Fri, 22 Dec 2017 03:43:16 +0000 (21:43 -0600)
committerScott Abbey <scottabbey2@gmail.com>
Fri, 22 Dec 2017 08:34:13 +0000 (02:34 -0600)
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.

src/bootstrap/compile.rs

index 4c76230ced8bc96242083264e4b41ffa44d2e11f..c8e500a4f68c0615bb07061c5a6c1b80dd7dd320 100644 (file)
@@ -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",