1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 cmake,
6 threadingSupport ? true, # multi-threading
7 openglSupport ? false,
8 libglut,
9 libGL,
10 libGLU, # OpenGL (required for vwebp)
11 pngSupport ? true,
12 libpng, # PNG image format
13 jpegSupport ? true,
14 libjpeg, # JPEG image format
15 tiffSupport ? true,
16 libtiff, # TIFF image format
17 gifSupport ? true,
18 giflib, # GIF image format
19 swap16bitcspSupport ? false, # Byte swap for 16bit color spaces
20 libwebpmuxSupport ? true, # Build libwebpmux
21
22 # for passthru.tests
23 gd,
24 graphicsmagick,
25 haskellPackages,
26 imagemagick,
27 imlib2,
28 libjxl,
29 opencv,
30 python3,
31 vips,
32}:
33
34stdenv.mkDerivation rec {
35 pname = "libwebp";
36 version = "1.6.0";
37
38 src = fetchFromGitHub {
39 owner = "webmproject";
40 repo = "libwebp";
41 rev = "v${version}";
42 hash = "sha256-7i4fGBTsTjAkBzCjVqXqX4n22j6dLgF/0mz4ajNA45U=";
43 };
44
45 cmakeFlags = [
46 (lib.cmakeBool "BUILD_SHARED_LIBS" true)
47 (lib.cmakeBool "WEBP_USE_THREAD" threadingSupport)
48 (lib.cmakeBool "WEBP_BUILD_VWEBP" openglSupport)
49 (lib.cmakeBool "WEBP_BUILD_IMG2WEBP" (pngSupport || jpegSupport || tiffSupport))
50 (lib.cmakeBool "WEBP_BUILD_GIF2WEBP" gifSupport)
51 (lib.cmakeBool "WEBP_BUILD_ANIM_UTILS" false) # Not installed
52 (lib.cmakeBool "WEBP_BUILD_EXTRAS" false) # Not installed
53 (lib.cmakeBool "WEBP_ENABLE_SWAP_16BIT_CSP" swap16bitcspSupport)
54 (lib.cmakeBool "WEBP_BUILD_LIBWEBPMUX" libwebpmuxSupport)
55 ];
56
57 nativeBuildInputs = [ cmake ];
58 buildInputs =
59 [ ]
60 ++ lib.optionals openglSupport [
61 libglut
62 libGL
63 libGLU
64 ]
65 ++ lib.optionals pngSupport [ libpng ]
66 ++ lib.optionals jpegSupport [ libjpeg ]
67 ++ lib.optionals tiffSupport [ libtiff ]
68 ++ lib.optionals gifSupport [ giflib ];
69
70 passthru.tests = {
71 inherit
72 gd
73 graphicsmagick
74 imagemagick
75 imlib2
76 libjxl
77 opencv
78 vips
79 ;
80 inherit (python3.pkgs) pillow imread;
81 haskell-webp = haskellPackages.webp;
82 };
83
84 meta = with lib; {
85 description = "Tools and library for the WebP image format";
86 homepage = "https://developers.google.com/speed/webp/";
87 license = licenses.bsd3;
88 platforms = platforms.all;
89 maintainers = with maintainers; [ ajs124 ];
90 };
91}