80 lines
2.3 KiB
Nix
80 lines
2.3 KiB
Nix
{ pkgs
|
|
, system ? "x86_64-linux"
|
|
, ...
|
|
}:
|
|
let
|
|
zig = {
|
|
x86_64-linux = builtins.fetchTarball {
|
|
url = "https://ziglang.org/download/0.15.1/zig-x86_64-linux-0.15.1.tar.xz";
|
|
sha256 = "0yar24a1qjg503czwnkdipky1cfb08k0mm9c8gwv827d33df1070";
|
|
};
|
|
aarch64-linux = builtins.fetchTarball {
|
|
url = "https://ziglang.org/download/0.15.1/zig-aarch64-linux-0.15.1.tar.xz";
|
|
sha256 = "19vcv7a1scm4wpj5cgv3dmzajz37fdyx5x1inxfgxzsavbmvq3zy";
|
|
};
|
|
}.${system};
|
|
|
|
make-cc-wrapper = trg: pkgs.writeShellScript "zig-cc-${trg}" ''
|
|
if [ ! -d "$HOME" ]; then
|
|
export ZIG_GLOBAL_CACHE_DIR=/build/.zig-cache
|
|
export ZIG_LOCAL_CACHE_DIR=/build/.zig-cache-local
|
|
fi
|
|
args=()
|
|
for arg in "$@"; do
|
|
if [[ "$skip_next" == true ]]; then
|
|
skip_next=false
|
|
continue
|
|
fi
|
|
if [[ "$arg" != --target=* ]] && \
|
|
[[ "$arg" != -framework ]] && \
|
|
[[ "$arg" != CoreFoundation ]] && \
|
|
[[ "$arg" != Foundation ]] && \
|
|
[[ "$arg" != *CoreFoundation* ]] && \
|
|
[[ "$arg" != *Foundation* ]] && \
|
|
[[ "$arg" != -F ]] && \
|
|
[[ "$arg" != -F* ]]; then
|
|
args+=("$arg")
|
|
elif [[ "$arg" == -framework ]] || [[ "$arg" == -F ]]; then
|
|
skip_next=true
|
|
fi
|
|
done
|
|
|
|
exec "${zig}/zig" cc -fdebug-prefix-map=${toString zig}=/zig -target ${trg} "''${args[@]}"
|
|
'';
|
|
|
|
make-ar-wrapper = pkgs.writeShellScript "zig-ar" ''
|
|
if [ ! -d "$HOME" ]; then
|
|
export ZIG_GLOBAL_CACHE_DIR=/build/.zig-cache
|
|
export ZIG_LOCAL_CACHE_DIR=/build/.zig-cache-local
|
|
fi
|
|
exec "${zig}/zig" ar "$@"
|
|
'';
|
|
|
|
make-ranlib-wrapper = pkgs.writeShellScript "zig-ranlib" ''
|
|
if [ ! -d "$HOME" ]; then
|
|
export ZIG_GLOBAL_CACHE_DIR=/build/.zig-cache
|
|
export ZIG_LOCAL_CACHE_DIR=/build/.zig-cache-local
|
|
fi
|
|
exec "${zig}/zig" ranlib "$@"
|
|
'';
|
|
in
|
|
pkgs.stdenvNoCC.mkDerivation {
|
|
name = "yaar-zig";
|
|
|
|
src = zig;
|
|
|
|
nativeBuildInputs = [ pkgs.coreutils ];
|
|
|
|
dontConfigure = true;
|
|
|
|
dontBuild = true;
|
|
|
|
installPhase = ''
|
|
mkdir -p "$out/bin"
|
|
cp -r "./." "$out"
|
|
cp ${make-cc-wrapper "x86_64-linux-musl"} "$out/bin/zig-cc-amd64-linux"
|
|
cp ${make-cc-wrapper "aarch64-linux-musl"} "$out/bin/zig-cc-arm64-linux"
|
|
cp ${make-ar-wrapper} "$out/bin/zig-ar"
|
|
cp ${make-ranlib-wrapper} "$out/bin/zig-ranlib"
|
|
'';
|
|
}
|