mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-09-29 19:30:11 +00:00
clang: skip the -nostdlibinc patch on Darwin
This commit is contained in:
@@ -81,13 +81,17 @@ let
|
||||
# Make sure clang passes the correct location of libLTO to ld64
|
||||
substituteInPlace lib/Driver/ToolChains/Darwin.cpp \
|
||||
--replace-fail 'StringRef P = llvm::sys::path::parent_path(D.Dir);' 'StringRef P = "${lib.getLib libllvm}";'
|
||||
'' + (if lib.versionOlder release_version "13" then ''
|
||||
sed -i -e 's/DriverArgs.hasArg(options::OPT_nostdlibinc)/true/' \
|
||||
-e 's/Args.hasArg(options::OPT_nostdlibinc)/true/' \
|
||||
lib/Driver/ToolChains/*.cpp
|
||||
'' else ''
|
||||
(cd tools && ln -s ../../clang-tools-extra extra)
|
||||
'') + lib.optionalString stdenv.hostPlatform.isMusl ''
|
||||
'' + (
|
||||
# See the comment on the `add-nostdlibinc-flag.patch` patch in
|
||||
# `../default.nix` for why we skip Darwin here.
|
||||
if lib.versionOlder release_version "13" && (!stdenv.hostPlatform.isDarwin || !stdenv.targetPlatform.isDarwin) then ''
|
||||
sed -i -e 's/DriverArgs.hasArg(options::OPT_nostdlibinc)/true/' \
|
||||
-e 's/Args.hasArg(options::OPT_nostdlibinc)/true/' \
|
||||
lib/Driver/ToolChains/*.cpp
|
||||
'' else ''
|
||||
(cd tools && ln -s ../../clang-tools-extra extra)
|
||||
''
|
||||
) + lib.optionalString stdenv.hostPlatform.isMusl ''
|
||||
sed -i -e 's/lgcc_s/lgcc_eh/' lib/Driver/ToolChains/*.cpp
|
||||
'';
|
||||
|
||||
|
||||
@@ -529,8 +529,24 @@ 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
|
||||
++ [
|
||||
./clang/add-nostdlibinc-flag.patch
|
||||
(substituteAll {
|
||||
src =
|
||||
if (lib.versionOlder metadata.release_version "16") then
|
||||
|
||||
Reference in New Issue
Block a user