From 76a8ffa6d8d2f93b81d4e9be327a01cab1c893c0 Mon Sep 17 00:00:00 2001 From: Randy Eckenrode Date: Mon, 22 Sep 2025 18:53:09 -0400 Subject: [PATCH] cc-wrapper: use `-cxx-isystem` instead of `-isystem` on Clang This allows Clang to always look for the libc++ headers when compling C++ code (regardless of whether it is invoked with `clang` or `clang++` while not exposing the headers when compiling plain C code. See https://releases.llvm.org/21.1.0/tools/clang/docs/ClangCommandLineReference.html#cmdoption-clang-cxx-isystem-directory --- pkgs/build-support/cc-wrapper/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/build-support/cc-wrapper/default.nix b/pkgs/build-support/cc-wrapper/default.nix index 50ff90609a5e..427161f4742c 100644 --- a/pkgs/build-support/cc-wrapper/default.nix +++ b/pkgs/build-support/cc-wrapper/default.nix @@ -741,14 +741,14 @@ stdenvNoCC.mkDerivation { # https://github.com/NixOS/nixpkgs/pull/209870#issuecomment-1500550903) + optionalString (libcxx == null && isClang && (useGccForLibs && gccForLibs.langCC or false)) '' for dir in ${gccForLibs}/include/c++/*; do - include -isystem "$dir" >> $out/nix-support/libcxx-cxxflags + include -cxx-isystem "$dir" >> $out/nix-support/libcxx-cxxflags done for dir in ${gccForLibs}/include/c++/*/${targetPlatform.config}; do - include -isystem "$dir" >> $out/nix-support/libcxx-cxxflags + include -cxx-isystem "$dir" >> $out/nix-support/libcxx-cxxflags done '' + optionalString (libcxx.isLLVM or false) '' - include -isystem "${getDev libcxx}/include/c++/v1" >> $out/nix-support/libcxx-cxxflags + include -cxx-isystem "${getDev libcxx}/include/c++/v1" >> $out/nix-support/libcxx-cxxflags echo "-stdlib=libc++" >> $out/nix-support/libcxx-ldflags '' # GCC NG friendly libc++