1{
2 lib,
3 runCommand,
4 zig,
5 stdenv,
6 makeWrapper,
7}:
8let
9 targetPrefix = lib.optionalString (
10 stdenv.hostPlatform != stdenv.targetPlatform
11 ) "${stdenv.targetPlatform.config}-";
12in
13runCommand "zig-cc-${zig.version}"
14 {
15 pname = "zig-cc";
16 inherit (zig) version meta;
17
18 nativeBuildInputs = [ makeWrapper ];
19
20 passthru = {
21 isZig = true;
22 inherit targetPrefix;
23 };
24
25 inherit zig;
26 }
27 ''
28 mkdir -p $out/bin
29 for tool in cc c++ ld.lld; do
30 makeWrapper "$zig/bin/zig" "$out/bin/${targetPrefix}$tool" \
31 --add-flags "$tool" \
32 --run "export ZIG_GLOBAL_CACHE_DIR=\$(mktemp -d)"
33 done
34
35 mv $out/bin/${targetPrefix}c++ $out/bin/${targetPrefix}clang++
36 mv $out/bin/${targetPrefix}cc $out/bin/${targetPrefix}clang
37 mv $out/bin/${targetPrefix}ld.lld $out/bin/${targetPrefix}ld
38 ''