Skip to content

Commit

Permalink
llvmPackages.clang: move add-nostdlibinc-flag.patch to cc-wrapper (#3…
Browse files Browse the repository at this point in the history
  • Loading branch information
emilazy authored Nov 17, 2024
2 parents 9550374 + 7047ba9 commit 597a7ad
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 35 deletions.
14 changes: 14 additions & 0 deletions pkgs/build-support/cc-wrapper/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -629,6 +629,20 @@ stdenvNoCC.mkDerivation {
echo " -L${libcxx_solib}" >> $out/nix-support/cc-ldflags
''

## Prevent clang from seeing /usr/include. There is a desire to achieve this
## through alternate means because it breaks -sysroot and related functionality.
#
# This flag prevents global system header directories from
# leaking through on non‐NixOS Linux. However, on macOS, the
# SDK path is used as the sysroot, and forcing `-nostdlibinc`
# breaks `-isysroot` with an unwrapped compiler. As macOS has
# no `/usr/include`, there’s essentially no risk to dropping
# the flag there. See discussion in NixOS/nixpkgs#191152.
#
+ optionalString ((cc.isClang or false) && !targetPlatform.isDarwin) ''
echo " -nostdlibinc" >> $out/nix-support/cc-cflags
''

##
## Man page and info support
##
Expand Down

This file was deleted.

17 changes: 0 additions & 17 deletions pkgs/development/compilers/llvm/common/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -540,23 +540,6 @@ let
# mis-compilation in firefox.
# See: https://bugzilla.mozilla.org/show_bug.cgi?id=1741454
(metadata.getVersionFile "clang/revert-malloc-alignment-assumption.patch")
# This patch prevents global system header directories from
# leaking through on non‐NixOS Linux. However, on macOS, the
# SDK path is used as the sysroot, and forcing `-nostdlibinc`
# breaks `-isysroot` with an unwrapped compiler. As macOS has
# no `/usr/include`, there’s essentially no risk to skipping
# the patch there. It’s possible that Homebrew headers in
# `/usr/local/include` might leak through to unwrapped
# compilers being used without an SDK set or something, but
# it hopefully shouldn’t matter.
#
# TODO: Figure out a better solution to this whole problem so
# that we won’t have to choose between breaking unwrapped
# compilers breaking libclang when we can do Linux‐to‐Darwin
# cross‐compilation again.
++ lib.optional (
!args.stdenv.hostPlatform.isDarwin || !args.stdenv.targetPlatform.isDarwin
) ./clang/add-nostdlibinc-flag.patch
++ [
(substituteAll {
src =
Expand Down

0 comments on commit 597a7ad

Please sign in to comment.