From d45b39bb89c0f67b9ef9e4d335fc3bd1b2a33f1c Mon Sep 17 00:00:00 2001 From: Audrey Dutcher Date: Sun, 18 Aug 2024 16:32:17 -0700 Subject: [PATCH] llvmPackages.compiler-rt: Use FreeBSD headers during noLibc build --- .../compilers/llvm/common/compiler-rt/default.nix | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/pkgs/development/compilers/llvm/common/compiler-rt/default.nix b/pkgs/development/compilers/llvm/common/compiler-rt/default.nix index 8417563cc95fe..c549c9eb6f21c 100644 --- a/pkgs/development/compilers/llvm/common/compiler-rt/default.nix +++ b/pkgs/development/compilers/llvm/common/compiler-rt/default.nix @@ -14,6 +14,7 @@ , libllvm , libcxx , linuxHeaders +, freebsd , libxcrypt # Some platforms have switched to using compiler-rt, but still want a @@ -67,7 +68,8 @@ stdenv.mkDerivation ({ ++ [ python3 libllvm.dev ] ++ lib.optional stdenv.isDarwin xcbuild.xcrun; buildInputs = - lib.optional (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isRiscV) linuxHeaders; + lib.optional (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isRiscV) linuxHeaders + ++ lib.optional (stdenv.hostPlatform.isFreeBSD) freebsd.include; env.NIX_CFLAGS_COMPILE = toString ([ "-DSCUDO_DEFAULT_OPTIONS=DeleteSizeMismatch=0:DeallocationTypeMismatch=0" @@ -152,12 +154,11 @@ stdenv.mkDerivation ({ '') + '' substituteInPlace lib/builtins/int_util.c \ --replace "#include " "" - '' + (if stdenv.hostPlatform.isFreeBSD then - # As per above, but in FreeBSD assert is a macro and simply allowing it to be implicitly declared causes Issues!!!!! + '' + (lib.optionalString (!stdenv.hostPlatform.isFreeBSD) + # On FreeBSD, assert/static_assert are macros and allowing them to be implicitly declared causes link errors. + # see description above for why we're nuking assert.h normally but that doesn't work here. + # instead, we add the freebsd.include dependency explicitly '' - substituteInPlace lib/builtins/clear_cache.c lib/builtins/cpu_model${lib.optionalString (lib.versionAtLeast version "18") "/x86"}.c \ - --replace "#include " "#define assert(e) ((e)?(void)0:__assert(__FUNCTION__,__FILE__,__LINE__,#e))" - '' else '' substituteInPlace lib/builtins/clear_cache.c \ --replace "#include " "" substituteInPlace lib/builtins/cpu_model${lib.optionalString (lib.versionAtLeast version "18") "/x86"}.c \