52 lines
1.2 KiB
Nix
52 lines
1.2 KiB
Nix
{ lib
|
||
, stdenv
|
||
, fetchFromGitHub
|
||
, glslang
|
||
, meson
|
||
, ninja
|
||
, windows
|
||
, src
|
||
, version
|
||
, dxvkPatches
|
||
}:
|
||
|
||
stdenv.mkDerivation {
|
||
pname = "dxvk";
|
||
inherit src version;
|
||
|
||
nativeBuildInputs = [ glslang meson ninja ];
|
||
buildInputs = [ windows.pthreads ];
|
||
|
||
patches = dxvkPatches;
|
||
|
||
# Replace use of DXVK’s threading classes with the ones from the C++ standard library, which uses
|
||
# mcfgthreads in nixpkgs.
|
||
postPatch = ''
|
||
for class in mutex recursive_mutex condition_variable; do
|
||
for file in $(grep -rl dxvk::$class *); do
|
||
if [ "$(basename "$file")" != "thread.h" ]; then
|
||
substituteInPlace "$file" --replace dxvk::$class std::$class
|
||
fi
|
||
done
|
||
done
|
||
'';
|
||
|
||
mesonFlags =
|
||
let
|
||
arch = if stdenv.is32bit then "32" else "64";
|
||
in
|
||
[
|
||
"--buildtype" "release"
|
||
"--cross-file" "build-win${arch}.txt"
|
||
"--prefix" "${placeholder "out"}"
|
||
];
|
||
|
||
meta = {
|
||
description = "A Vulkan-based translation layer for Direct3D 9/10/11";
|
||
homepage = "https://github.com/doitsujin/dxvk";
|
||
changelog = "https://github.com/doitsujin/dxvk/releases";
|
||
maintainers = [ lib.maintainers.reckenrode ];
|
||
license = lib.licenses.zlib;
|
||
platforms = lib.platforms.windows;
|
||
};
|
||
}
|