spirv-llvm-translator: update all versions, support LLVM 20 and 21 (#432015)
This commit is contained in:
@@ -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 = {
|
||||
"19" = rec {
|
||||
version = "19.1.6";
|
||||
"21" = rec {
|
||||
version = "21.1.0";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-mUvDF5y+cBnqUaHjyiiE8cJGH5MfQMqGFy6bYv9vCVY=";
|
||||
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.10";
|
||||
rev = "v${version}";
|
||||
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";
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user