pkgs/rocm-packages/clr.nix (82 lines of code) (raw):

{ lib, stdenv, makeWrapper, markForRocmRootHook, rsync, clang, comgr, hipcc, hip-dev, hip-runtime-amd, hsa-rocr, perl, rocm-device-libs, rocm-opencl, rocminfo, setupRocmHook, }: let wrapperArgs = [ "--prefix PATH : $out/bin" "--prefix LD_LIBRARY_PATH : ${hsa-rocr}" "--set HIP_PLATFORM amd" "--set HIP_PATH $out" "--set HIP_CLANG_PATH ${clang}/bin" "--set DEVICE_LIB_PATH ${rocm-device-libs}/amdgcn/bitcode" "--set HSA_PATH ${hsa-rocr}" "--set ROCM_PATH $out" ]; in stdenv.mkDerivation { pname = "rocm-clr"; version = hipcc.version; nativeBuildInputs = [ markForRocmRootHook makeWrapper rsync ]; propagatedBuildInputs = [ comgr rocm-device-libs hsa-rocr perl rocminfo setupRocmHook ]; dontUnpack = true; installPhase = '' runHook preInstall mkdir -p $out for path in ${hipcc} ${hip-dev} ${hip-runtime-amd} ${rocm-opencl}; do rsync -a --exclude=nix-support $path/ $out/ done chmod -R u+w $out # Some build infra expects rocminfo to be in the clr package. Easier # to just symlink it than to patch everything. ln -s ${rocminfo}/bin/* $out/bin wrapProgram $out/bin/hipcc ${lib.concatStringsSep " " wrapperArgs} wrapProgram $out/bin/hipconfig ${lib.concatStringsSep " " wrapperArgs} wrapProgram $out/bin/hipcc.pl ${lib.concatStringsSep " " wrapperArgs} wrapProgram $out/bin/hipconfig.pl ${lib.concatStringsSep " " wrapperArgs} runHook postInstall ''; passthru = { gpuTargets = lib.forEach [ "803" "900" "906" "908" "90a" "940" "941" "942" "1010" "1012" "1030" "1100" "1101" "1102" ] (target: "gfx${target}"); }; }