summary refs log tree commit diff
path: root/pkgs/development/libraries/openjpeg/generic.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/libraries/openjpeg/generic.nix')
-rw-r--r--pkgs/development/libraries/openjpeg/generic.nix83
1 files changed, 83 insertions, 0 deletions
diff --git a/pkgs/development/libraries/openjpeg/generic.nix b/pkgs/development/libraries/openjpeg/generic.nix
new file mode 100644
index 00000000000..4ffcd62f982
--- /dev/null
+++ b/pkgs/development/libraries/openjpeg/generic.nix
@@ -0,0 +1,83 @@
+{ stdenv, cmake, pkgconfig, libpng, libtiff, lcms2, glib/*passthru only*/
+, sharedLibsSupport ? true # Build shared libraries
+, codecSupport ? true # Codec executables
+, mj2Support ? true # MJ2 executables
+, jpwlLibSupport ? true # JPWL library & executables
+, jpipLibSupport ? true # JPIP library & executables
+, jpipServerSupport ? false, curl ? null, fcgi ? null # JPIP Server
+#, opjViewerSupport ? false, wxGTK ? null # OPJViewer executable
+, openjpegJarSupport ? false, jdk ? null # Openjpeg jar (Java)
+, jp3dSupport ? true # # JP3D comp
+, thirdPartySupport ? false # Third party libraries - OFF: only build when found, ON: always build
+, testsSupport ? false
+# Inherit generics
+, branch, src, version, ...
+}:
+
+assert jpipServerSupport -> (jpipLibSupport && (curl != null) && (fcgi != null));
+#assert opjViewerSupport -> (wxGTK != null);
+assert openjpegJarSupport -> (jdk != null);
+assert testsSupport -> codecSupport;
+
+let
+  mkFlag = optSet: flag: if optSet then "-D${flag}=ON" else "-D${flag}=OFF";
+in
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+  name = "openjpeg-${version}";
+  inherit branch;
+  inherit version;
+  inherit src;
+
+  cmakeFlags = [
+    (mkFlag sharedLibsSupport "BUILD_SHARED_LIBS")
+    (mkFlag codecSupport "BUILD_CODEC")
+    (mkFlag mj2Support "BUILD_MJ2")
+    (mkFlag jpwlLibSupport "BUILD_JPWL")
+    (mkFlag jpipLibSupport "BUILD_JPIP")
+    (mkFlag jpipServerSupport "BUILD_JPIP_SERVER")
+    #(mkFlag opjViewerSupport "BUILD_VIEWER")
+    (mkFlag openjpegJarSupport "BUILD_JAVA")
+    (mkFlag jp3dSupport "BUILD_JP3D")
+    (mkFlag thirdPartySupport "BUILD_THIRDPARTY")
+    (mkFlag testsSupport "BUILD_TESTING")
+  ];
+
+  nativebuildInputs = [ pkgconfig ];
+
+  buildInputs = [ cmake ]
+    ++ optionals jpipServerSupport [ curl fcgi ]
+    #++ optional opjViewerSupport wxGTK
+    ++ optional openjpegJarSupport jdk;
+
+  propagatedBuildInputs = [ libpng libtiff lcms2 ];
+
+  postInstall = glib.flattenInclude + ''
+    mkdir -p "$out/lib/pkgconfig"
+    cat > "$out/lib/pkgconfig/libopenjp2.pc" <<EOF
+    prefix=$out
+    libdir=$out/lib
+    includedir=$out/include
+
+    Name: openjp2
+    Description: JPEG2000 library (Part 1 and 2)
+    URL: http://www.openjpeg.org/
+    Version: ${version}
+    Libs: -L$out/lib -lopenjp2
+    Cflags: -I$out/include
+    EOF
+  '';
+
+  passthru = {
+    incDir = "openjpeg-${branch}";
+  };
+
+  meta = {
+    description = "Open-source JPEG 2000 codec written in C language";
+    homepage    = http://www.openjpeg.org/;
+    license     = licenses.bsd2;
+    maintainer  = with maintainers; [ codyopel ];
+    platforms   = platforms.all;
+  };
+}