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