diff --git a/pkgs/by-name/sp/spirv-llvm-translator/package.nix b/pkgs/by-name/sp/spirv-llvm-translator/package.nix index e90a2fa4bcf0f..603c990353821 100644 --- a/pkgs/by-name/sp/spirv-llvm-translator/package.nix +++ b/pkgs/by-name/sp/spirv-llvm-translator/package.nix @@ -14,45 +14,51 @@ let llvmMajor = lib.versions.major llvm.version; - isROCm = lib.hasPrefix "rocm" llvm.pname; - # ROCm, if actively updated will always be at the latest version versions = { + "21" = rec { + version = "21.1.0"; + rev = "v${version}"; + hash = "sha256-kk8BbPl/UBW1gaO/cuOQ9OsiNTEk0TkvRDLKUAh6exk="; + }; + "20" = rec { + version = "20.1.5"; + rev = "v${version}"; + hash = "sha256-GdlC/Vl61nTNdua2s+CW2YOvkSKK6MNOvBc/393iths="; + }; "19" = rec { - version = "19.1.6"; + version = "19.1.10"; rev = "v${version}"; - hash = "sha256-mUvDF5y+cBnqUaHjyiiE8cJGH5MfQMqGFy6bYv9vCVY="; + hash = "sha256-VgA47AGMnOKYNeW95nxJZzmKnYK8D/9okgssPnPqXXI="; }; "18" = rec { - version = "18.1.11"; + version = "18.1.15"; rev = "v${version}"; - hash = "sha256-VoALyFqShKL3bpeoOIdKoseNfDWiRE+j0ppHapXOmEU="; + hash = "sha256-rt3RTZut41uDEh0YmpOzH3sOezeEVWtAIGMKCHLSJBw="; }; "17" = rec { - version = "17.0.11"; + version = "17.0.15"; rev = "v${version}"; - hash = "sha256-Ba4GZS7Rc93Fphj2xaBZ3AqwXvxB9UU0gzPNoDEoaQM="; + hash = "sha256-ETpTQYMMApECDfuRY87HrO/PUxZ13x9dBRJ3ychslUI="; }; "16" = rec { - version = "16.0.11"; + version = "16.0.15"; rev = "v${version}"; - hash = "sha256-PI4cT/PGqpaF5SysOTrEE4D+OcIUsIOMzww4CRPtwBQ="; + hash = "sha256-30i73tGl+1KlP92XA0uxdMTydd9EtaQ4SZ0W1kdm1fQ="; }; "15" = rec { - version = "15.0.13"; + version = "15.0.15"; rev = "v${version}"; - hash = "sha256-RnGbBHUUGjIBcakQJO4nAm3/oIrQ8nkx+BC8Evw6Jmc="; + hash = "sha256-kFVDS+qwoG1AXrZ8LytoiLVbZkTGR9sO+Wrq3VGgWNQ="; }; - "14" = { - version = "14.0.11+unstable-2025-01-28"; - rev = "9df26b6af308cb834a4013deb8094f386f29accd"; - hash = "sha256-8VRQwXFbLcYgHtWKs73yuTsy2kkCgYgPqD+W/GPy1BM="; + "14" = rec { + version = "14.0.14"; + rev = "v${version}"; + hash = "sha256-PW+5w93omLYPZXjRtU4BNY2ztZ86pcjgUQZkrktMq+4="; }; }; - branch = - versions."${if isROCm then "17" else llvmMajor}" - or (throw "Incompatible LLVM version ${llvmMajor}"); + branch = versions."${llvmMajor}" or (throw "Incompatible LLVM version ${llvmMajor}"); in stdenv.mkDerivation { pname = "SPIRV-LLVM-Translator"; @@ -76,27 +82,29 @@ stdenv.mkDerivation { nativeBuildInputs = [ pkg-config cmake - ] - ++ (if isROCm then [ llvm ] else [ llvm.dev ]); + llvm.dev + ]; buildInputs = [ spirv-headers spirv-tools - ] - ++ lib.optionals (!isROCm) [ llvm ]; + llvm + ]; nativeCheckInputs = [ lit ]; cmakeFlags = [ "-DLLVM_INCLUDE_TESTS=ON" - "-DLLVM_DIR=${(if isROCm then llvm else llvm.dev)}" + "-DLLVM_DIR=${llvm.dev}" "-DBUILD_SHARED_LIBS=YES" "-DLLVM_SPIRV_BUILD_EXTERNAL=YES" # RPATH of binary /nix/store/.../bin/llvm-spirv contains a forbidden reference to /build/ "-DCMAKE_SKIP_BUILD_RPATH=ON" "-DLLVM_EXTERNAL_SPIRV_HEADERS_SOURCE_DIR=${spirv-headers.src}" ] - ++ lib.optional (llvmMajor == "19") "-DBASE_LLVM_VERSION=${lib.versions.majorMinor llvm.version}.0"; + ++ lib.optional ( + lib.toInt llvmMajor >= 19 + ) "-DBASE_LLVM_VERSION=${lib.versions.majorMinor llvm.version}.0"; # FIXME: CMake tries to run "/llvm-lit" which of course doesn't exist doCheck = false; @@ -125,5 +133,13 @@ stdenv.mkDerivation { license = licenses.ncsa; platforms = platforms.unix; maintainers = with maintainers; [ gloaming ]; + + # For the LLVM 21 build some commits to spirv-headers + # are required that didn't make it into the final release of 1.4.321 + # For example: 9e3836d Add SPV_INTEL_function_variants + # Once spirv-headers are released again and updated on nixpkgs, + # this will switch over to the nixpkgs version and should no + # longer be broken. + broken = llvmMajor == "21" && lib.versionOlder spirv-headers.version "1.4.322"; }; }