Explain why libatomic is not needed on FreeBSD riscv64

From Jessica Clarke (jrtc27@)
This commit is contained in:
Tobias Kortkamp 2021-12-03 18:48:53 +01:00
parent 47474f1055
commit e24045e587
No known key found for this signature in database
GPG Key ID: F4815C5F893E655D
2 changed files with 11 additions and 3 deletions

View File

@ -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");
}

View File

@ -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 {