chromium,chromedriver: 129.0.6668.91 -> 129.0.6668.100
[NixPkgs.git] / pkgs / by-name / gl / glfw3 / package.nix
blobba77795b05c89acb07b0dc5351b7e3069f2f0e0b
1 { stdenv, lib, fetchFromGitHub, cmake, pkg-config
2 , libGL, libXrandr, libXinerama, libXcursor, libX11, libXi, libXext
3 , darwin, fixDarwinDylibNames
4 , wayland
5 , wayland-scanner, wayland-protocols, libxkbcommon, libdecor
6 , withMinecraftPatch ? false
7 }:
8 let
9   version = "3.4";
11 stdenv.mkDerivation {
12   pname = "glfw${lib.optionalString withMinecraftPatch "-minecraft"}";
13   inherit version;
15   src = fetchFromGitHub {
16     owner = "glfw";
17     repo = "GLFW";
18     rev = version;
19     hash = "sha256-FcnQPDeNHgov1Z07gjFze0VMz2diOrpbKZCsI96ngz0=";
20   };
22   # Fix linkage issues on X11 (https://github.com/NixOS/nixpkgs/issues/142583)
23   patches = [
24     ./x11.patch
25   ] ++ lib.optionals withMinecraftPatch [
26     ./0009-Defer-setting-cursor-position-until-the-cursor-is-lo.patch
27   ];
29   propagatedBuildInputs = lib.optionals (!stdenv.hostPlatform.isWindows) [ libGL ];
31   nativeBuildInputs = [ cmake pkg-config ]
32     ++ lib.optionals stdenv.hostPlatform.isDarwin [ fixDarwinDylibNames ]
33     ++ lib.optionals stdenv.hostPlatform.isLinux [ wayland-scanner ];
35   buildInputs =
36     lib.optionals stdenv.hostPlatform.isDarwin (with darwin.apple_sdk.frameworks; [ Carbon Cocoa Kernel ])
37     ++ lib.optionals stdenv.hostPlatform.isLinux [
38       wayland
39       wayland-protocols
40       libxkbcommon
41       libX11
42       libXrandr
43       libXinerama
44       libXcursor
45       libXi
46       libXext
47     ];
49   cmakeFlags = [
50     "-DBUILD_SHARED_LIBS=ON"
51   ] ++ lib.optionals (!stdenv.hostPlatform.isDarwin && !stdenv.hostPlatform.isWindows) [
52     "-DCMAKE_C_FLAGS=-D_GLFW_GLX_LIBRARY='\"${lib.getLib libGL}/lib/libGL.so.1\"'"
53     "-DCMAKE_C_FLAGS=-D_GLFW_EGL_LIBRARY='\"${lib.getLib libGL}/lib/libEGL.so.1\"'"
54   ];
56   postPatch = lib.optionalString stdenv.hostPlatform.isLinux ''
57     substituteInPlace src/wl_init.c \
58       --replace-fail "libxkbcommon.so.0" "${lib.getLib libxkbcommon}/lib/libxkbcommon.so.0" \
59       --replace-fail "libdecor-0.so.0" "${lib.getLib libdecor}/lib/libdecor-0.so.0" \
60       --replace-fail "libwayland-client.so.0" "${lib.getLib wayland}/lib/libwayland-client.so.0" \
61       --replace-fail "libwayland-cursor.so.0" "${lib.getLib wayland}/lib/libwayland-cursor.so.0" \
62       --replace-fail "libwayland-egl.so.1" "${lib.getLib wayland}/lib/libwayland-egl.so.1"
63   '';
65   # glfw may dlopen libwayland-client.so:
66   postFixup = lib.optionalString stdenv.hostPlatform.isLinux ''
67     patchelf ''${!outputLib}/lib/libglfw.so --add-rpath ${lib.getLib wayland}/lib
68   '';
70   meta = with lib; {
71     description = "Multi-platform library for creating OpenGL contexts and managing input, including keyboard, mouse, joystick and time";
72     homepage = "https://www.glfw.org/";
73     license = licenses.zlib;
74     maintainers = with maintainers; [ marcweber Scrumplex twey ];
75     platforms = platforms.unix ++ platforms.windows;
76   };