zig: fix cc and bintools (#412540)

This commit is contained in:
Tristan Ross 2025-06-04 10:35:17 -07:00 committed by GitHub
commit 1f38e4cb8d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 14 additions and 7 deletions

View file

@ -4,6 +4,7 @@
zig,
runCommand,
makeWrapper,
coreutils,
}:
let
targetPrefix = lib.optionalString (
@ -26,9 +27,12 @@ runCommand "zig-bintools-${zig.version}"
}
''
mkdir -p $out/bin
for tool in ar objcopy ranlib; do
makeWrapper "$zig/bin/zig" "$out/bin/${targetPrefix}$tool" \
for tool in ar objcopy ranlib ld.lld; do
makeWrapper "$zig/bin/zig" "$out/bin/$tool" \
--add-flags "$tool" \
--suffix PATH : "${lib.makeBinPath [ coreutils ]}" \
--run "export ZIG_GLOBAL_CACHE_DIR=\$(mktemp -d)"
done
ln -s $out/bin/ld.lld $out/bin/ld
''

View file

@ -4,6 +4,7 @@
zig,
stdenv,
makeWrapper,
coreutils,
}:
let
targetPrefix = lib.optionalString (
@ -27,12 +28,13 @@ runCommand "zig-cc-${zig.version}"
''
mkdir -p $out/bin
for tool in cc c++ ld.lld; do
makeWrapper "$zig/bin/zig" "$out/bin/${targetPrefix}$tool" \
makeWrapper "$zig/bin/zig" "$out/bin/$tool" \
--add-flags "$tool" \
--suffix PATH : "${lib.makeBinPath [ coreutils ]}" \
--run "export ZIG_GLOBAL_CACHE_DIR=\$(mktemp -d)"
done
mv $out/bin/${targetPrefix}c++ $out/bin/${targetPrefix}clang++
mv $out/bin/${targetPrefix}cc $out/bin/${targetPrefix}clang
mv $out/bin/${targetPrefix}ld.lld $out/bin/${targetPrefix}ld
ln -s $out/bin/c++ $out/bin/clang++
ln -s $out/bin/cc $out/bin/clang
ln -s $out/bin/ld.lld $out/bin/ld
''

View file

@ -155,10 +155,11 @@ stdenv.mkDerivation (finalAttrs: {
cc = wrapCCWith {
cc = finalAttrs.finalPackage.cc-unwrapped;
bintools = finalAttrs.finalPackage.bintools;
extraPackages = [ ];
nixSupport.cc-cflags =
[
"-target"
"${stdenv.targetPlatform.config}"
"${stdenv.targetPlatform.system}-${stdenv.targetPlatform.parsed.abi.name}"
]
++ lib.optional (
stdenv.targetPlatform.isLinux && !(stdenv.targetPlatform.isStatic or false)