tbb: fix version script with lld 17+

LLVM 17 enabled "--no-undefined-version" by default in Clang. We disable
this by specifying the "--undefined-version" flag to $NIX_LDFLAGS when
we use LLVM 17+.

Ref: #315243
This commit is contained in:
Tristan Ross
2024-05-27 23:27:06 -07:00
parent d406e6309c
commit f7b22f6de5
2 changed files with 6 additions and 0 deletions
@@ -60,6 +60,9 @@ stdenv.mkDerivation rec {
else if stdenv.hostPlatform.isi686 then "arch=ia32"
else throw "Unsupported cross architecture"));
# Fix undefined reference errors with version script under LLVM.
NIX_LDFLAGS = lib.optionalString (stdenv.cc.bintools.isLLVM && lib.versionAtLeast stdenv.cc.bintools.version "17") "--undefined-version";
enableParallelBuilding = true;
installPhase = ''
@@ -39,6 +39,9 @@ stdenv.mkDerivation rec {
# https://gcc.gnu.org/PR108854
lib.optionals (stdenv.cc.isGNU && stdenv.isx86_32) [ "-O2" ];
# Fix undefined reference errors with version script under LLVM.
NIX_LDFLAGS = lib.optionalString (stdenv.cc.bintools.isLLVM && lib.versionAtLeast stdenv.cc.bintools.version "17") "--undefined-version";
# Disable failing test on musl
# test/conformance/conformance_resumable_tasks.cpp:37:24: error: suspend is not a member of tbb::v1::task; did you mean tbb::detail::r1::suspend?
postPatch = lib.optionalString stdenv.hostPlatform.isMusl ''