summary refs log tree commit diff
path: root/pkgs/development/libraries/imlib2/default.nix
blob: 2790eaf460bb70b2203d9b9d62dc8a20407c57bb (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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
{ lib, stdenv, fetchurl
# Image file formats
, libjpeg, libtiff, giflib, libpng, libwebp
# imlib2 can load images from ID3 tags.
, libid3tag, librsvg, libheif
, freetype , bzip2, pkg-config
, x11Support ? true, xlibsWrapper ? null
# Compilation error on Darwin with librsvg. For more information see:
# https://github.com/NixOS/nixpkgs/pull/166452#issuecomment-1090725613
, svgSupport ? !stdenv.isDarwin
, heifSupport ? !stdenv.isDarwin

# for passthru.tests
, libcaca
, diffoscopeMinimal
, feh
, icewm
, openbox
, fluxbox
, enlightenment
}:

let
  inherit (lib) optional;
in
stdenv.mkDerivation rec {
  pname = "imlib2";
  version = "1.8.1";

  src = fetchurl {
    url = "mirror://sourceforge/enlightenment/${pname}-${version}.tar.xz";
    hash = "sha256-Ui4ecOZbwO3f4gdhfRXJo5VmKnwJBmHaqiwpT7fZ/ao=";
  };

  buildInputs = [
    libjpeg libtiff giflib libpng libwebp
    bzip2 freetype libid3tag
  ] ++ optional x11Support xlibsWrapper
    ++ optional heifSupport libheif
    ++ optional svgSupport librsvg;

  nativeBuildInputs = [ pkg-config ];

  enableParallelBuilding = true;

  # Do not build amd64 assembly code on Darwin, because it fails to compile
  # with unknow directive errors
  configureFlags = optional stdenv.isDarwin "--enable-amd64=no"
    ++ optional (!svgSupport) "--without-svg"
    ++ optional (!heifSupport) "--without-heif"
    ++ optional (!x11Support) "--without-x";

  outputs = [ "bin" "out" "dev" ];

  passthru.tests = {
    inherit
      libcaca
      diffoscopeMinimal
      feh
      icewm
      openbox
      fluxbox
      enlightenment;
  };

  meta = with lib; {
    description = "Image manipulation library";

    longDescription = ''
      This is the Imlib 2 library - a library that does image file loading and
      saving as well as rendering, manipulation, arbitrary polygon support, etc.
      It does ALL of these operations FAST. Imlib2 also tries to be highly
      intelligent about doing them, so writing naive programs can be done
      easily, without sacrificing speed.
    '';

    homepage = "https://docs.enlightenment.org/api/imlib2/html";
    changelog = "https://git.enlightenment.org/legacy/imlib2.git/plain/ChangeLog?h=v${version}";
    license = licenses.imlib2;
    platforms = platforms.unix;
    maintainers = with maintainers; [ spwhitt ];
  };
}