summary refs log tree commit diff
path: root/pkgs/applications/graphics/ImageMagick/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/graphics/ImageMagick/default.nix')
-rw-r--r--pkgs/applications/graphics/ImageMagick/default.nix49
1 files changed, 40 insertions, 9 deletions
diff --git a/pkgs/applications/graphics/ImageMagick/default.nix b/pkgs/applications/graphics/ImageMagick/default.nix
index b732a2ed916..9b17fbde7f5 100644
--- a/pkgs/applications/graphics/ImageMagick/default.nix
+++ b/pkgs/applications/graphics/ImageMagick/default.nix
@@ -1,6 +1,6 @@
-{ lib, stdenv, fetchurl, pkgconfig, libtool
+{ lib, stdenv, fetchurl, fetchpatch, pkgconfig, libtool
 , bzip2, zlib, libX11, libXext, libXt, fontconfig, freetype, ghostscript, libjpeg
-, lcms2, openexr, libpng, librsvg, libtiff, libxml2, openjpeg
+, lcms2, openexr, libpng, librsvg, libtiff, libxml2, openjpeg, libwebp
 }:
 
 let
@@ -9,11 +9,28 @@ let
     else if stdenv.system == "x86_64-linux" || stdenv.system == "x86_64-darwin" then "x86-64"
     else if stdenv.system == "armv7l-linux" then "armv7l"
     else throw "ImageMagick is not supported on this platform.";
+
+  cfg = {
+    version = "6.9.3-9";
+    sha256 = "0q19jgn1iv7zqrw8ibxp4z57iihrc9kyb09k2wnspcacs6vrvinf";
+    patches = [];
+  }
+    # Freeze version on mingw so we don't need to port the patch too often.
+    // lib.optionalAttrs (stdenv.cross.libc or null == "msvcrt") {
+        version = "6.9.2-0";
+        sha256 = "17ir8bw1j7g7srqmsz3rx780sgnc21zfn0kwyj78iazrywldx8h7";
+        patches = [(fetchpatch {
+          name = "mingw-build.patch";
+          url = "https://raw.githubusercontent.com/Alexpux/MINGW-packages/"
+            + "01ca03b2a4ef/mingw-w64-imagemagick/002-build-fixes.patch";
+          sha256 = "1pypszlcx2sf7wfi4p37w1y58ck2r8cd5b2wrrwr9rh87p7fy1c0";
+        })];
+      };
 in
 
 stdenv.mkDerivation rec {
   name = "imagemagick-${version}";
-  version = "6.9.3-8";
+  inherit (cfg) version;
 
   src = fetchurl {
     urls = [
@@ -21,9 +38,11 @@ stdenv.mkDerivation rec {
       # the original source above removes tarballs quickly
       "http://distfiles.macports.org/ImageMagick/ImageMagick-${version}.tar.xz"
     ];
-    sha256 = "129s4cwp6cbhgsr3xr8186q5j02zpbk6kqfk4j7ayb563zsrdb4h";
+    inherit (cfg) sha256;
   };
 
+  patches = [ ./imagetragick.patch ] ++ cfg.patches;
+
   outputs = [ "out" "doc" ];
 
   enableParallelBuilding = true;
@@ -35,17 +54,29 @@ stdenv.mkDerivation rec {
     ++ lib.optionals (ghostscript != null)
       [ "--with-gs-font-dir=${ghostscript}/share/ghostscript/fonts"
         "--with-gslib"
-      ];
+      ]
+    ++ lib.optionals (stdenv.cross.libc or null == "msvcrt")
+      [ "--enable-static" "--disable-shared" ] # due to libxml2 being without DLLs ATM
+    ;
+
+  nativeBuildInputs = [ pkgconfig libtool ];
 
   buildInputs =
-    [ pkgconfig libtool zlib fontconfig freetype ghostscript libjpeg
-      openexr libpng librsvg libtiff libxml2 openjpeg
-    ];
+    [ zlib fontconfig freetype ghostscript
+      libpng libtiff libxml2
+    ]
+    ++ lib.optionals (stdenv.cross.libc or null != "msvcrt")
+      [ openexr librsvg openjpeg ]
+    ;
 
   propagatedBuildInputs =
-    [ bzip2 freetype libjpeg libX11 libXext libXt lcms2 ];
+    [ bzip2 freetype libjpeg lcms2 ]
+    ++ lib.optionals (stdenv.cross.libc or null != "msvcrt")
+      [ libX11 libXext libXt libwebp ]
+    ;
 
   postInstall = ''
+
     (cd "$out/include" && ln -s ImageMagick* ImageMagick)
   '' + lib.optionalString (ghostscript != null) ''
     for la in $out/lib/*.la; do