{ lib, stdenv, fetchFromGitHub, fetchpatch, cmake, nasm, openjdk, enableJava ? false, # whether to build the java wrapper enableJpeg7 ? false, # whether to build libjpeg with v7 compatibility enableJpeg8 ? false, # whether to build libjpeg with v8 compatibility enableStatic ? stdenv.hostPlatform.isStatic, enableShared ? !stdenv.hostPlatform.isStatic, # for passthru.tests # , dvgrab # , epeg # , freeimage # , gd # , graphicsmagick # , imagemagick # , imlib2 # , jhead # , libjxl # , mjpegtools # , opencv # , python3 # , vips # , testers }: assert !(enableJpeg7 && enableJpeg8); # pick only one or none, not both stdenv.mkDerivation (finalAttrs: { pname = "libjpeg-turbo"; version = "3.0.2"; src = fetchFromGitHub { owner = "libjpeg-turbo"; repo = "libjpeg-turbo"; rev = finalAttrs.version; hash = "sha256-xHjd0WHN50b75wdWPHUwfmJGsiWKmj+zA59UwakIo74="; }; patches = [ (fetchpatch { name = "CMAKE_CROSSCOMPILING_EMULATOR=env-fix.patch"; url = "https://github.com/libjpeg-turbo/libjpeg-turbo/compare/36c51dd3eb60ebde3ca77d3cfa7df3422f1aaaf1..b6ee1016abbc55116304ad396cf88aa19391e10a.patch"; hash = "sha256-dNwXicvZEsG02TBaM5nYMlZ+VczT/Dfx6ZM/6huZpwE="; }) # This is needed by freeimage ./0001-Compile-transupp.c-as-part-of-the-library.patch ] ++ lib.optionals (!stdenv.hostPlatform.isMinGW) [ ./0002-Make-exported-symbols-in-transupp.c-weak.patch ] ++ lib.optionals stdenv.hostPlatform.isMinGW [ ./mingw-boolean.patch ]; outputs = [ "bin" "dev" "dev_private" "out" "man" "doc" ]; postFixup = '' moveToOutput include/transupp.h $dev_private ''; nativeBuildInputs = [ cmake nasm ] ++ lib.optionals enableJava [ openjdk ]; cmakeFlags = [ "-DENABLE_STATIC=${if enableStatic then "1" else "0"}" "-DENABLE_SHARED=${if enableShared then "1" else "0"}" ] ++ lib.optionals enableJava [ "-DWITH_JAVA=1" ] ++ lib.optionals enableJpeg7 [ "-DWITH_JPEG7=1" ] ++ lib.optionals enableJpeg8 [ "-DWITH_JPEG8=1" ] ++ lib.optionals stdenv.hostPlatform.isRiscV [ # https://github.com/libjpeg-turbo/libjpeg-turbo/issues/428 # https://github.com/libjpeg-turbo/libjpeg-turbo/commit/88bf1d16786c74f76f2e4f6ec2873d092f577c75 "-DFLOATTEST=fp-contract" ]; doInstallCheck = true; installCheckTarget = "test"; # passthru.tests = { # inherit # dvgrab # epeg # freeimage # gd # graphicsmagick # imagemagick # imlib2 # jhead # libjxl # mjpegtools # opencv # vips; # inherit (python3.pkgs) pillow imread pyturbojpeg; # pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; # }; meta = with lib; { homepage = "https://libjpeg-turbo.org/"; description = "A faster (using SIMD) libjpeg implementation"; license = licenses.ijg; # and some parts under other BSD-style licenses pkgConfigModules = [ "libjpeg" "libturbojpeg" ]; maintainers = with maintainers; [ vcunat colemickens kamadorueda ]; platforms = platforms.all; }; })