lol
1{ lib, runCommand, stdenv, llvm, lld, version, release_version }:
2
3let
4 targetPrefix = lib.optionalString (stdenv.hostPlatform != stdenv.targetPlatform) "${stdenv.targetPlatform.config}-";
5in
6runCommand "llvm-binutils-${version}"
7{
8 preferLocalBuild = true;
9 passthru = {
10 isLLVM = true;
11 inherit targetPrefix;
12 };
13}
14 (''
15 mkdir -p $out/bin
16 for prog in ${lld}/bin/*; do
17 ln -s $prog $out/bin/${targetPrefix}$(basename $prog)
18 done
19 for prog in ${llvm}/bin/*; do
20 ln -sf $prog $out/bin/${targetPrefix}$(basename $prog)
21 done
22
23 llvmBin="${llvm}/bin"
24
25 ln -s $llvmBin/llvm-ar $out/bin/${targetPrefix}ar
26 ln -s $llvmBin/llvm-ar $out/bin/${targetPrefix}dlltool
27 ln -s $llvmBin/llvm-ar $out/bin/${targetPrefix}ranlib
28 ln -s $llvmBin/llvm-cxxfilt $out/bin/${targetPrefix}c++filt
29 ln -s $llvmBin/llvm-dwp $out/bin/${targetPrefix}dwp
30 ln -s $llvmBin/llvm-nm $out/bin/${targetPrefix}nm
31 ln -s $llvmBin/llvm-objcopy $out/bin/${targetPrefix}objcopy
32 ln -s $llvmBin/llvm-objcopy $out/bin/${targetPrefix}strip
33 ln -s $llvmBin/llvm-objdump $out/bin/${targetPrefix}objdump
34 ln -s $llvmBin/llvm-readobj $out/bin/${targetPrefix}readelf
35 ln -s $llvmBin/llvm-size $out/bin/${targetPrefix}size
36 ln -s $llvmBin/llvm-strings $out/bin/${targetPrefix}strings
37 ln -s $llvmBin/llvm-symbolizer $out/bin/${targetPrefix}addr2line
38
39 if [ -e "$llvmBin/llvm-debuginfod" ]; then
40 ln -s $llvmBin/llvm-debuginfod $out/bin/${targetPrefix}debuginfod
41 ln -s $llvmBin/llvm-debuginfod-find $out/bin/${targetPrefix}debuginfod-find
42 fi
43
44 ln -s ${lld}/bin/lld $out/bin/${targetPrefix}ld
45
46 # Only >=13 show GNU windres compatible in help
47 '' + lib.optionalString (lib.versionAtLeast release_version "13") ''
48 ln -s $llvmBin/llvm-rc $out/bin/${targetPrefix}windres
49 '')