{ lib, stdenv , fetchFromGitHub , bison , cmake , jq , python3 , spirv-headers , spirv-tools }: stdenv.mkDerivation rec { pname = "glslang"; version = "14.1.0"; src = fetchFromGitHub { owner = "KhronosGroup"; repo = "glslang"; rev = version; hash = "sha256-trm5bR3/2w+oQppHQBB+b6l0N0sLjTk5+rRGDfnGb+8="; }; # These get set at all-packages, keep onto them for child drvs passthru = { spirv-tools = spirv-tools; spirv-headers = spirv-headers; }; nativeBuildInputs = [ cmake python3 bison jq ]; postPatch = '' cp --no-preserve=mode -r "${spirv-tools.src}" External/spirv-tools ln -s "${spirv-headers.src}" External/spirv-tools/external/spirv-headers ''; # This is a dirty fix for lib/cmake/SPIRVTargets.cmake:51 which includes this directory postInstall = '' mkdir $out/include/External ''; # Fix the paths in .pc, even though it's unclear if these .pc are really useful. postFixup = '' substituteInPlace $out/lib/pkgconfig/*.pc \ --replace '=''${prefix}//' '=/' # add a symlink for backwards compatibility ln -s $out/bin/glslang $out/bin/glslangValidator ''; meta = with lib; { inherit (src.meta) homepage; description = "Khronos reference front-end for GLSL and ESSL"; license = licenses.asl20; platforms = platforms.unix; maintainers = [ maintainers.ralith ]; }; }