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

View file

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

View file

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