summaryrefslogtreecommitdiffstats
path: root/pkgs/by-name/im/imlib2/package.nix
blob: 716707df70ab08133d848943ea88f49815737bcc (plain)
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
{
  lib,
  stdenv,
  fetchurl,
  # Image file formats
  libjpeg,
  libtiff,
  giflib,
  libpng,
  libwebp,
  libjxl,
  libspectre,
  # imlib2 can load images from ID3 tags.
  libid3tag,
  librsvg,
  libheif,
  freetype,
  bzip2,
  pkg-config,
  x11Support ? true,
  webpSupport ? true,
  svgSupport ? false,
  heifSupport ? false,
  jxlSupport ? false,
  psSupport ? false,

  # for passthru.tests
  libcaca,
  diffoscopeMinimal,
  feh,
  icewm,
  openbox,
  fluxbox,
  enlightenment,
  libxft,
  libxext,
  testers,

  gitUpdater,
}:

let
  inherit (lib) optional optionals;
in
stdenv.mkDerivation (finalAttrs: {
  pname = "imlib2";
  version = "1.12.6";

  src = fetchurl {
    url = "mirror://sourceforge/enlightenment/imlib2-${finalAttrs.version}.tar.xz";
    hash = "sha256-JQ+XUvadxSLlKagaqpOVcF9/wxL/JFPl3lmsK6HyhY8=";
  };

  buildInputs = [
    libjpeg
    libtiff
    giflib
    libpng
    bzip2
    freetype
    libid3tag
  ]
  ++ optionals x11Support [
    libxft
    libxext
  ]
  ++ optional heifSupport libheif
  ++ optional svgSupport librsvg
  ++ optional webpSupport libwebp
  ++ optional jxlSupport libjxl
  ++ optional psSupport libspectre;

  nativeBuildInputs = [ pkg-config ];

  enableParallelBuilding = true;

  # Do not build amd64 assembly code on Darwin, because it fails to compile
  # with unknown directive errors
  configureFlags =
    optional stdenv.hostPlatform.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
        ;
      pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
    };
    updateScript = gitUpdater {
      # No nicer place to find latest release.
      url = "https://git.enlightenment.org/old/legacy-imlib2.git";
      rev-prefix = "v";
    };
  };

  meta = {
    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/old/legacy-imlib2/raw/tag/v${finalAttrs.version}/ChangeLog";
    license = lib.licenses.imlib2;
    pkgConfigModules = [ "imlib2" ];
    platforms = lib.platforms.unix;
    maintainers = [ ];
  };
})