mini-calc: 3.3.3 -> 3.3.5 (#372274)
[NixPkgs.git] / pkgs / by-name / li / libjpeg_turbo / package.nix
blob26baf7f7ed5c5588569e385cf4199533319976e2
2   lib,
3   stdenv,
4   fetchFromGitHub,
5   cmake,
6   nasm,
7   openjdk,
8   enableJava ? false, # whether to build the java wrapper
9   enableJpeg7 ? false, # whether to build libjpeg with v7 compatibility
10   enableJpeg8 ? false, # whether to build libjpeg with v8 compatibility
11   enableStatic ? stdenv.hostPlatform.isStatic,
12   enableShared ? !stdenv.hostPlatform.isStatic,
14   # for passthru.tests
15   dvgrab,
16   epeg,
17   freeimage,
18   gd,
19   graphicsmagick,
20   imagemagick,
21   imlib2,
22   jhead,
23   libjxl,
24   mjpegtools,
25   opencv,
26   python3,
27   vips,
28   testers,
31 assert !(enableJpeg7 && enableJpeg8); # pick only one or none, not both
33 stdenv.mkDerivation (finalAttrs: {
35   pname = "libjpeg-turbo";
36   version = "3.0.4";
38   src = fetchFromGitHub {
39     owner = "libjpeg-turbo";
40     repo = "libjpeg-turbo";
41     rev = finalAttrs.version;
42     hash = "sha256-ZNqhOfZtWcMv10VWIUxn7MSy4KhW/jBrgC1tUFKczqs=";
43   };
45   patches =
46     [
47       # This is needed by freeimage
48       ./0001-Compile-transupp.c-as-part-of-the-library.patch
49     ]
50     ++ lib.optionals (!stdenv.hostPlatform.isMinGW) [
51       ./0002-Make-exported-symbols-in-transupp.c-weak.patch
52     ]
53     ++ lib.optionals stdenv.hostPlatform.isMinGW [
54       ./mingw-boolean.patch
55     ];
57   outputs = [
58     "bin"
59     "dev"
60     "dev_private"
61     "out"
62     "man"
63     "doc"
64   ];
66   postFixup = ''
67     moveToOutput include/transupp.h $dev_private
68   '';
70   nativeBuildInputs =
71     [
72       cmake
73       nasm
74     ]
75     ++ lib.optionals enableJava [
76       openjdk
77     ];
79   cmakeFlags =
80     [
81       "-DENABLE_STATIC=${if enableStatic then "1" else "0"}"
82       "-DENABLE_SHARED=${if enableShared then "1" else "0"}"
83     ]
84     ++ lib.optionals enableJava [
85       "-DWITH_JAVA=1"
86     ]
87     ++ lib.optionals enableJpeg7 [
88       "-DWITH_JPEG7=1"
89     ]
90     ++ lib.optionals enableJpeg8 [
91       "-DWITH_JPEG8=1"
92     ]
93     ++ lib.optionals stdenv.hostPlatform.isRiscV [
94       # https://github.com/libjpeg-turbo/libjpeg-turbo/issues/428
95       # https://github.com/libjpeg-turbo/libjpeg-turbo/commit/88bf1d16786c74f76f2e4f6ec2873d092f577c75
96       "-DFLOATTEST=fp-contract"
97     ];
99   doInstallCheck = true;
100   installCheckTarget = "test";
102   passthru.tests = {
103     inherit
104       dvgrab
105       epeg
106       gd
107       graphicsmagick
108       imagemagick
109       imlib2
110       jhead
111       libjxl
112       mjpegtools
113       opencv
114       vips
115       ;
116     inherit (python3.pkgs) pillow imread pyturbojpeg;
117     pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
118   };
120   meta = with lib; {
121     homepage = "https://libjpeg-turbo.org/";
122     description = "Faster (using SIMD) libjpeg implementation";
123     license = licenses.ijg; # and some parts under other BSD-style licenses
124     pkgConfigModules = [
125       "libjpeg"
126       "libturbojpeg"
127     ];
128     maintainers = with maintainers; [
129       vcunat
130       kamadorueda
131     ];
132     platforms = platforms.all;
133   };