Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / development / libraries / libjpeg-turbo / default.nix
blob711f05779e851cd377e183711521f7cef002a05b
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 = "2.1.5.1";
37   src = fetchFromGitHub {
38     owner = "libjpeg-turbo";
39     repo = "libjpeg-turbo";
40     rev = finalAttrs.version;
41     sha256 = "sha256-96SBBZp+/4WkXLvHKSPItNi5WuzdVccI/ZcbJOFjYYk=";
42   };
44   # This is needed by freeimage
45   patches = [ ./0001-Compile-transupp.c-as-part-of-the-library.patch ]
46     ++ lib.optional stdenv.hostPlatform.isMinGW
47     ./mingw-boolean.patch;
49   outputs = [ "bin" "dev" "dev_private" "out" "man" "doc" ];
51   postFixup = ''
52     moveToOutput include/transupp.h $dev_private
53   '';
55   nativeBuildInputs = [
56     cmake
57     nasm
58   ] ++ lib.optionals enableJava [
59     openjdk
60   ];
62   cmakeFlags = [
63     "-DENABLE_STATIC=${if enableStatic then "1" else "0"}"
64     "-DENABLE_SHARED=${if enableShared then "1" else "0"}"
65   ] ++ lib.optionals enableJava [
66     "-DWITH_JAVA=1"
67   ] ++ lib.optionals enableJpeg7 [
68     "-DWITH_JPEG7=1"
69   ] ++ lib.optionals enableJpeg8 [
70     "-DWITH_JPEG8=1"
71   ] ++ lib.optionals stdenv.hostPlatform.isRiscV [
72     # https://github.com/libjpeg-turbo/libjpeg-turbo/issues/428
73     # https://github.com/libjpeg-turbo/libjpeg-turbo/commit/88bf1d16786c74f76f2e4f6ec2873d092f577c75
74     "-DFLOATTEST=fp-contract"
75   ];
77   doInstallCheck = true;
78   installCheckTarget = "test";
80   passthru.tests = {
81     inherit
82       dvgrab
83       epeg
84       freeimage
85       gd
86       graphicsmagick
87       imagemagick
88       imlib2
89       jhead
90       libjxl
91       mjpegtools
92       opencv
93       vips;
94     inherit (python3.pkgs) pillow imread pyturbojpeg;
95     pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
96   };
98   meta = with lib; {
99     homepage = "https://libjpeg-turbo.org/";
100     description = "A faster (using SIMD) libjpeg implementation";
101     license = licenses.ijg; # and some parts under other BSD-style licenses
102     pkgConfigModules = [ "libjpeg" "libturbojpeg" ];
103     maintainers = with maintainers; [ vcunat colemickens kamadorueda ];
104     platforms = platforms.all;
105   };