1{ lib, stdenv, fetchFromGitHub, cmake, python3, spirv-headers }:
2
3stdenv.mkDerivation rec {
4 pname = "spirv-tools";
5 version = "2023.2";
6
7 src = fetchFromGitHub {
8 owner = "KhronosGroup";
9 repo = "SPIRV-Tools";
10 rev = "v${version}";
11 hash = "sha256-l44Ru0WjROQEDNU/2YQJGti1uDZP9osRdfsXus5EGX0=";
12 };
13
14 nativeBuildInputs = [ cmake python3 ];
15
16 cmakeFlags = [
17 "-DSPIRV-Headers_SOURCE_DIR=${spirv-headers.src}"
18 # Avoid blanket -Werror to evade build failures on less
19 # tested compilers.
20 "-DSPIRV_WERROR=OFF"
21 ];
22
23 # https://github.com/KhronosGroup/SPIRV-Tools/issues/3905
24 postPatch = ''
25 substituteInPlace CMakeLists.txt \
26 --replace '-P ''${CMAKE_CURRENT_SOURCE_DIR}/cmake/write_pkg_config.cmake' \
27 '-DCMAKE_INSTALL_FULL_LIBDIR=''${CMAKE_INSTALL_FULL_LIBDIR}
28 -DCMAKE_INSTALL_FULL_INCLUDEDIR=''${CMAKE_INSTALL_FULL_INCLUDEDIR}
29 -P ''${CMAKE_CURRENT_SOURCE_DIR}/cmake/write_pkg_config.cmake'
30 substituteInPlace cmake/SPIRV-Tools.pc.in \
31 --replace '$'{prefix}/@CMAKE_INSTALL_LIBDIR@ @CMAKE_INSTALL_FULL_LIBDIR@ \
32 --replace '$'{prefix}/@CMAKE_INSTALL_INCLUDEDIR@ @CMAKE_INSTALL_FULL_INCLUDEDIR@
33 substituteInPlace cmake/SPIRV-Tools-shared.pc.in \
34 --replace '$'{prefix}/@CMAKE_INSTALL_LIBDIR@ @CMAKE_INSTALL_FULL_LIBDIR@ \
35 --replace '$'{prefix}/@CMAKE_INSTALL_INCLUDEDIR@ @CMAKE_INSTALL_FULL_INCLUDEDIR@
36 '';
37
38 meta = with lib; {
39 description = "The SPIR-V Tools project provides an API and commands for processing SPIR-V modules";
40 homepage = "https://github.com/KhronosGroup/SPIRV-Tools";
41 license = licenses.asl20;
42 platforms = platforms.unix;
43 maintainers = [ maintainers.ralith ];
44 };
45}