diff options
| -rw-r--r-- | compiler/rustc_llvm/build.rs | 5 | ||||
| -rw-r--r-- | src/bootstrap/native.rs | 9 |
2 files changed, 11 insertions, 3 deletions
diff --git a/compiler/rustc_llvm/build.rs b/compiler/rustc_llvm/build.rs index 7f3345d2a70..3b6808d693f 100644 --- a/compiler/rustc_llvm/build.rs +++ b/compiler/rustc_llvm/build.rs @@ -276,7 +276,10 @@ fn main() { "stdc++" }; - // RISC-V requires libatomic for sub-word atomic operations + // RISC-V GCC erroneously requires libatomic for sub-word + // atomic operations. FreeBSD uses Clang as its system + // compiler and provides no libatomic in its base system so + // does not want this. if !target.contains("freebsd") && target.starts_with("riscv") { println!("cargo:rustc-link-lib=atomic"); } diff --git a/src/bootstrap/native.rs b/src/bootstrap/native.rs index f50797285d2..4a754e6da12 100644 --- a/src/bootstrap/native.rs +++ b/src/bootstrap/native.rs @@ -250,8 +250,13 @@ impl Step for Llvm { } if !target.contains("freebsd") && target.starts_with("riscv") { - // In RISC-V, using C++ atomics require linking to `libatomic` but the LLVM build - // system check cannot detect this. Therefore it is set manually here. + // RISC-V GCC erroneously requires linking against + // `libatomic` when using 1-byte and 2-byte C++ + // atomics but the LLVM build system check cannot + // detect this. Therefore it is set manually here. + // FreeBSD uses Clang as its system compiler and + // provides no libatomic in its base system so does + // not want this. if !builder.config.llvm_tools_enabled { cfg.define("CMAKE_EXE_LINKER_FLAGS", "-latomic"); } else { |
