1{ lib, stdenv, fetchFromGitHub, cmake, python3, spirv-headers }:
2
3stdenv.mkDerivation rec {
4 pname = "spirv-tools";
5 version = "1.3.283.0";
6
7 src = fetchFromGitHub {
8 owner = "KhronosGroup";
9 repo = "SPIRV-Tools";
10 rev = "vulkan-sdk-${version}";
11 hash = "sha256-at3krE0torhjg7G+NkX0/ewc26Sg/1t2xW7wghAAuZo=";
12 };
13
14 # The cmake options are sufficient for turning on static building, but not
15 # for disabling shared building, just trim the shared lib from the CMake
16 # description
17 patches = lib.optional stdenv.hostPlatform.isStatic ./no-shared-libs.patch;
18
19 nativeBuildInputs = [ cmake python3 ];
20
21 cmakeFlags = [
22 "-DSPIRV-Headers_SOURCE_DIR=${spirv-headers.src}"
23 # Avoid blanket -Werror to evade build failures on less
24 # tested compilers.
25 "-DSPIRV_WERROR=OFF"
26 ];
27
28 # https://github.com/KhronosGroup/SPIRV-Tools/issues/3905
29 postPatch = ''
30 substituteInPlace CMakeLists.txt \
31 --replace '-P ''${CMAKE_CURRENT_SOURCE_DIR}/cmake/write_pkg_config.cmake' \
32 '-DCMAKE_INSTALL_FULL_LIBDIR=''${CMAKE_INSTALL_FULL_LIBDIR}
33 -DCMAKE_INSTALL_FULL_INCLUDEDIR=''${CMAKE_INSTALL_FULL_INCLUDEDIR}
34 -P ''${CMAKE_CURRENT_SOURCE_DIR}/cmake/write_pkg_config.cmake'
35 substituteInPlace cmake/SPIRV-Tools.pc.in \
36 --replace '$'{prefix}/@CMAKE_INSTALL_LIBDIR@ @CMAKE_INSTALL_FULL_LIBDIR@ \
37 --replace '$'{prefix}/@CMAKE_INSTALL_INCLUDEDIR@ @CMAKE_INSTALL_FULL_INCLUDEDIR@
38 substituteInPlace cmake/SPIRV-Tools-shared.pc.in \
39 --replace '$'{prefix}/@CMAKE_INSTALL_LIBDIR@ @CMAKE_INSTALL_FULL_LIBDIR@ \
40 --replace '$'{prefix}/@CMAKE_INSTALL_INCLUDEDIR@ @CMAKE_INSTALL_FULL_INCLUDEDIR@
41 '';
42
43 meta = with lib; {
44 description = "SPIR-V Tools project provides an API and commands for processing SPIR-V modules";
45 homepage = "https://github.com/KhronosGroup/SPIRV-Tools";
46 license = licenses.asl20;
47 platforms = with platforms; unix ++ windows;
48 maintainers = [ maintainers.ralith ];
49 };
50}