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