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