about summary refs log tree commit diff
path: root/pkgs/development/libraries/gfxstream/default.nix
blob: 196bca7cdc5f71a2b3ec2f303dd40e0046dc6d35 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
{ lib, stdenv, fetchFromGitiles, meson, ninja, pkg-config, python3
, aemu, libdrm, libglvnd, vulkan-headers, vulkan-loader, xorg
}:

stdenv.mkDerivation {
  pname = "gfxstream";
  version = "0.1.2";

  src = fetchFromGitiles {
    url = "https://android.googlesource.com/platform/hardware/google/gfxstream";
    rev = "a29282666c0e2fdbb2c98cfe68a7c0677163ef91";
    hash = "sha256-IYXkaHZPEYIE9KW731GN6x6yRS+FYtP1zyHcaSofhIM=";
  };

  nativeBuildInputs = [ meson ninja pkg-config python3 ];
  buildInputs = [ aemu libglvnd vulkan-headers vulkan-loader xorg.libX11 ]
    ++ lib.optional (lib.meta.availableOn stdenv.hostPlatform libdrm) libdrm;

  # dlopens libvulkan.
  #
  # XXX: Unsure if this is required on Darwin.  If it is, it probably
  #      needs to be done using install_name_tool.
  preConfigure = lib.optionalString (!stdenv.isDarwin) ''
    mesonFlagsArray=(-Dcpp_link_args="-Wl,--push-state -Wl,--no-as-needed -lvulkan -Wl,--pop-state")
  '';

  meta = with lib; {
    homepage = "https://android.googlesource.com/platform/hardware/google/gfxstream";
    description = "Graphics Streaming Kit";
    license = licenses.free; # https://android.googlesource.com/platform/hardware/google/gfxstream/+/refs/heads/main/LICENSE
    maintainers = with maintainers; [ qyliss ];
    platforms = aemu.meta.platforms;
  };
}