From b989428f7dec7b52d68bed6a21e9b5b0a8086267 Mon Sep 17 00:00:00 2001 From: Scott Abbey Date: Thu, 21 Dec 2017 21:43:16 -0600 Subject: [PATCH] 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. --- src/bootstrap/compile.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/bootstrap/compile.rs b/src/bootstrap/compile.rs index 4c76230ced8b..c8e500a4f68c 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",