From 7971f0d40b8ffb4a615f8eb654c74969fecfe9f2 Mon Sep 17 00:00:00 2001 From: Audrey Dutcher Date: Sun, 23 Feb 2025 14:55:03 -0700 Subject: [PATCH] clang-wrapper: add special case for FreeBSD headers Replicate https://github.com/freebsd/freebsd-src/commit/f382bac49b1378da3c2dd66bf721beaa16b5d471 --- .../compilers/llvm/common/default.nix | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/pkgs/development/compilers/llvm/common/default.nix b/pkgs/development/compilers/llvm/common/default.nix index 42a6c950a39c4e..268096b81177ef 100644 --- a/pkgs/development/compilers/llvm/common/default.nix +++ b/pkgs/development/compilers/llvm/common/default.nix @@ -336,12 +336,25 @@ let metadata.release_version else lib.versions.major metadata.release_version; - mkExtraBuildCommands0 = cc: '' - rsrc="$out/resource-root" - mkdir "$rsrc" - ln -s "${lib.getLib cc}/lib/clang/${clangVersion}/include" "$rsrc" - echo "-resource-dir=$rsrc" >> $out/nix-support/cc-cflags - ''; + mkExtraBuildCommands0 = + cc: + '' + rsrc="$out/resource-root" + mkdir "$rsrc" + '' + # clang standard c headers are incompatible with FreeBSD so we have to put them in -idirafter instead of -resource-dir + # see https://github.com/freebsd/freebsd-src/commit/f382bac49b1378da3c2dd66bf721beaa16b5d471 + + ( + if stdenv.targetPlatform.isFreeBSD then + '' + echo "-idirafter ${lib.getLib cc}/lib/clang/${clangVersion}/include" >> $out/nix-support/cc-cflags + '' + else + '' + ln -s "${lib.getLib cc}/lib/clang/${clangVersion}/include" "$rsrc" + echo "-resource-dir=$rsrc" >> $out/nix-support/cc-cflags + '' + ); mkExtraBuildCommandsBasicRt = cc: mkExtraBuildCommands0 cc