about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/libyuv
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/libyuv')
-rw-r--r--nixpkgs/pkgs/development/libraries/libyuv/default.nix48
-rw-r--r--nixpkgs/pkgs/development/libraries/libyuv/link-library-against-libjpeg.patch11
-rw-r--r--nixpkgs/pkgs/development/libraries/libyuv/yuv.pc13
3 files changed, 72 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/libyuv/default.nix b/nixpkgs/pkgs/development/libraries/libyuv/default.nix
new file mode 100644
index 000000000000..77e32c09de8f
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/libyuv/default.nix
@@ -0,0 +1,48 @@
+{ lib
+, stdenv
+, fetchgit
+, cmake
+, libjpeg
+}:
+
+stdenv.mkDerivation rec {
+  pname = "libyuv";
+  version = "1787"; # Defined in: include/libyuv/version.h
+
+  src = fetchgit {
+    url = "https://chromium.googlesource.com/libyuv/libyuv.git";
+    rev = "eb6e7bb63738e29efd82ea3cf2a115238a89fa51"; # refs/heads/stable
+    sha256 = "sha256-DtRYoaAXb9ZD2OLiKbzKzH5vzuu+Lzu4eHaDgPB9hjU=";
+  };
+
+  nativeBuildInputs = [
+    cmake
+  ];
+
+  # NEON does not work on aarch64, we disable it
+  cmakeFlags = lib.optionals stdenv.isAarch64 ["-DCMAKE_CXX_FLAGS=-DLIBYUV_DISABLE_NEON"];
+
+  buildInputs = [ libjpeg ];
+
+  patches = [
+    ./link-library-against-libjpeg.patch
+  ];
+
+  postPatch = ''
+    mkdir -p $out/lib/pkgconfig
+    cp ${./yuv.pc} $out/lib/pkgconfig/libyuv.pc
+
+    substituteInPlace $out/lib/pkgconfig/libyuv.pc \
+      --replace "@PREFIX@" "$out" \
+      --replace "@VERSION@" "$version"
+  '';
+
+  meta = with lib; {
+    homepage = "https://chromium.googlesource.com/libyuv/libyuv";
+    description = "Open source project that includes YUV scaling and conversion functionality";
+    mainProgram = "yuvconvert";
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ leixb ];
+    license = licenses.bsd3;
+  };
+}
diff --git a/nixpkgs/pkgs/development/libraries/libyuv/link-library-against-libjpeg.patch b/nixpkgs/pkgs/development/libraries/libyuv/link-library-against-libjpeg.patch
new file mode 100644
index 000000000000..d0f3d2968462
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/libyuv/link-library-against-libjpeg.patch
@@ -0,0 +1,11 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 636531ee..af1b0e4e 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -39,6 +39,7 @@ INCLUDE ( FindJPEG )
+ if (JPEG_FOUND)
+   include_directories( ${JPEG_INCLUDE_DIR} )
+   target_link_libraries( yuvconvert ${JPEG_LIBRARY} )
++  target_link_libraries( ${ly_lib_shared} ${JPEG_LIBRARY} )
+   add_definitions( -DHAVE_JPEG )
+ endif()
diff --git a/nixpkgs/pkgs/development/libraries/libyuv/yuv.pc b/nixpkgs/pkgs/development/libraries/libyuv/yuv.pc
new file mode 100644
index 000000000000..ecce62ed0efd
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/libyuv/yuv.pc
@@ -0,0 +1,13 @@
+prefix=@PREFIX@
+exec_prefix=${prefix}
+libdir=${prefix}/lib
+includedir=${prefix}/include
+
+Name: yuv
+Description: WebM Project Yuv codec implementation
+Version: @VERSION@
+Requires:
+Conflicts:
+Libs: -L${libdir} -lyuv -lm
+Libs.private: -lm -lpthread
+Cflags: -I${includedir}