Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at release-18.03 67 lines 2.2 kB view raw
1{ stdenv, fetchgit, fetchFromGitHub, cmake, pkgconfig, git, python3, 2 python3Packages, glslang, spirv-tools, x11, libxcb, libXrandr, 3 libXext, wayland, libGL, makeWrapper }: 4 5let 6 version = "1.0.61.1"; 7 src = fetchFromGitHub { 8 owner = "KhronosGroup"; 9 repo = "Vulkan-LoaderAndValidationLayers"; 10 rev = "sdk-${version}"; 11 sha256 = "043kw6wnrpdplnb40x6n9rgf3gygsn9jiv91y458sydbhalfr945"; 12 }; 13in 14 15stdenv.mkDerivation rec { 16 name = "vulkan-loader-${version}"; 17 inherit version src; 18 19 nativeBuildInputs = [ makeWrapper pkgconfig ]; 20 buildInputs = [ cmake git python3 python3Packages.lxml 21 glslang spirv-tools x11 libxcb libXrandr libXext wayland 22 ]; 23 enableParallelBuilding = true; 24 25 cmakeFlags = [ 26 "-DBUILD_WSI_MIR_SUPPORT=OFF" 27 "-DFALLBACK_DATA_DIRS=${libGL.driverLink}/share:/usr/local/share:/usr/share" 28 ]; 29 30 outputs = [ "out" "dev" "demos" ]; 31 32 preConfigure = '' 33 checkRev() { 34 [ "$2" = $(cat "external_revisions/$1_revision") ] || (echo "ERROR: dependency $1 is revision $2 but should be revision" $(cat "external_revisions/$1_revision") && exit 1) 35 } 36 checkRev spirv-tools "${spirv-tools.src.rev}" 37 checkRev spirv-headers "${spirv-tools.headers.rev}" 38 checkRev glslang "${glslang.src.rev}" 39 ''; 40 41 installPhase = '' 42 mkdir -p $out/lib $out/bin 43 cp -d loader/libvulkan.so* $out/lib 44 cp demos/vulkaninfo $out/bin 45 mkdir -p $out/lib $out/share/vulkan/explicit_layer.d 46 cp -L layers/*.so $out/lib/ 47 cp -L layers/*.json $out/share/vulkan/explicit_layer.d/ 48 sed -i "s:\\./lib:$out/lib/lib:g" "$out/share/vulkan/"*/*.json 49 mkdir -p $dev/include 50 cp -rv ../include $dev/ 51 mkdir -p $demos/share/vulkan-demos 52 cp demos/*.spv demos/*.ppm $demos/share/vulkan-demos 53 mkdir -p $demos/bin 54 find demos -type f -executable -not -name vulkaninfo -exec cp -v {} $demos/bin \; 55 for p in cube cubepp; do 56 wrapProgram $demos/bin/$p --run "cd $demos/share/vulkan-demos" 57 done 58 ''; 59 60 meta = with stdenv.lib; { 61 description = "LunarG Vulkan loader"; 62 homepage = "http://www.lunarg.com"; 63 platforms = platforms.linux; 64 license = licenses.asl20; 65 maintainers = [ maintainers.ralith ]; 66 }; 67}