glfw: add version with wayland support (#129367)

authored by Lucas Ransan and committed by GitHub 86bb1290 ae7c092d

+48 -4
+20 -4
pkgs/development/libraries/glfw/3.x.nix
··· 1 { stdenv, lib, fetchFromGitHub, cmake 2 , libGL, libXrandr, libXinerama, libXcursor, libX11, libXi, libXext 3 , Cocoa, Kernel, fixDarwinDylibNames 4 }: 5 6 stdenv.mkDerivation rec { ··· 14 sha256 = "sha256-BP4wxjgm0x0E68tNz5eudkVUyBnXkQlP7LY3ppZunhw="; 15 }; 16 17 propagatedBuildInputs = [ libGL ]; 18 19 nativeBuildInputs = [ cmake ] 20 - ++ lib.optional stdenv.isDarwin fixDarwinDylibNames; 21 22 - buildInputs = [ libX11 libXrandr libXinerama libXcursor libXi libXext ] 23 - ++ lib.optionals stdenv.isDarwin [ Cocoa Kernel ]; 24 25 cmakeFlags = [ 26 "-DBUILD_SHARED_LIBS=ON" 27 - ] ++ lib.optional (!stdenv.isDarwin) [ 28 "-DCMAKE_C_FLAGS=-D_GLFW_GLX_LIBRARY='\"${lib.getLib libGL}/lib/libGL.so.1\"'" 29 ]; 30 31 meta = with lib; { 32 description = "Multi-platform library for creating OpenGL contexts and managing input, including keyboard, mouse, joystick and time";
··· 1 { stdenv, lib, fetchFromGitHub, cmake 2 , libGL, libXrandr, libXinerama, libXcursor, libX11, libXi, libXext 3 , Cocoa, Kernel, fixDarwinDylibNames 4 + , waylandSupport ? false, extra-cmake-modules, wayland 5 + , wayland-protocols, libxkbcommon 6 }: 7 8 stdenv.mkDerivation rec { ··· 16 sha256 = "sha256-BP4wxjgm0x0E68tNz5eudkVUyBnXkQlP7LY3ppZunhw="; 17 }; 18 19 + patches = lib.optional waylandSupport ./wayland.patch; 20 + 21 propagatedBuildInputs = [ libGL ]; 22 23 nativeBuildInputs = [ cmake ] 24 + ++ lib.optional stdenv.isDarwin fixDarwinDylibNames 25 + ++ lib.optional waylandSupport extra-cmake-modules; 26 27 + buildInputs = 28 + if waylandSupport 29 + then [ wayland wayland-protocols libxkbcommon ] 30 + else [ libX11 libXrandr libXinerama libXcursor libXi libXext ] 31 + ++ lib.optionals stdenv.isDarwin [ Cocoa Kernel ]; 32 33 cmakeFlags = [ 34 "-DBUILD_SHARED_LIBS=ON" 35 + ] ++ lib.optionals (!stdenv.isDarwin) [ 36 "-DCMAKE_C_FLAGS=-D_GLFW_GLX_LIBRARY='\"${lib.getLib libGL}/lib/libGL.so.1\"'" 37 + ] ++ lib.optionals waylandSupport [ 38 + "-DGLFW_USE_WAYLAND=ON" 39 + "-DCMAKE_C_FLAGS=-D_GLFW_EGL_LIBRARY='\"${lib.getLib libGL}/lib/libEGL.so.1\"'" 40 ]; 41 + 42 + postPatch = lib.optionalString waylandSupport '' 43 + substituteInPlace src/wl_init.c \ 44 + --replace "libxkbcommon.so.0" "${lib.getLib libxkbcommon}/lib/libxkbcommon.so.0" 45 + ''; 46 47 meta = with lib; { 48 description = "Multi-platform library for creating OpenGL contexts and managing input, including keyboard, mouse, joystick and time";
+25
pkgs/development/libraries/glfw/wayland.patch
···
··· 1 + From 46fb81c69e8acdb70907409f98dd01e387408414 Mon Sep 17 00:00:00 2001 2 + From: Stone Tickle <lattis@mochiro.moe> 3 + Date: Fri, 5 Jun 2020 12:51:25 +0900 4 + Subject: [PATCH] set O_NONBLOCK on repeat timerfd 5 + 6 + --- 7 + src/wl_init.c | 2 +- 8 + 1 file changed, 1 insertion(+), 1 deletion(-) 9 + 10 + diff --git a/src/wl_init.c b/src/wl_init.c 11 + index 49e7cc52..43569bef 100644 12 + --- a/src/wl_init.c 13 + +++ b/src/wl_init.c 14 + @@ -1166,7 +1166,7 @@ int _glfwPlatformInit(void) 15 + 16 + _glfw.wl.timerfd = -1; 17 + if (_glfw.wl.seatVersion >= 4) 18 + - _glfw.wl.timerfd = timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC); 19 + + _glfw.wl.timerfd = timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC | TFD_NONBLOCK); 20 + 21 + if (_glfw.wl.pointer && _glfw.wl.shm) 22 + { 23 + -- 24 + 2.31.1 25 +
+3
pkgs/top-level/all-packages.nix
··· 15310 }); 15311 15312 glfw = glfw3; 15313 glfw2 = callPackage ../development/libraries/glfw/2.x.nix { }; 15314 glfw3 = callPackage ../development/libraries/glfw/3.x.nix { 15315 inherit (darwin.apple_sdk.frameworks) Cocoa Kernel;
··· 15310 }); 15311 15312 glfw = glfw3; 15313 + glfw-wayland = glfw.override { 15314 + waylandSupport = true; 15315 + }; 15316 glfw2 = callPackage ../development/libraries/glfw/2.x.nix { }; 15317 glfw3 = callPackage ../development/libraries/glfw/3.x.nix { 15318 inherit (darwin.apple_sdk.frameworks) Cocoa Kernel;