about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/webrtc-audio-processing
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/webrtc-audio-processing')
-rw-r--r--nixpkgs/pkgs/development/libraries/webrtc-audio-processing/0.3.nix33
-rw-r--r--nixpkgs/pkgs/development/libraries/webrtc-audio-processing/default.nix45
-rw-r--r--nixpkgs/pkgs/development/libraries/webrtc-audio-processing/enable-powerpc.patch37
-rw-r--r--nixpkgs/pkgs/development/libraries/webrtc-audio-processing/enable-riscv.patch18
4 files changed, 133 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/webrtc-audio-processing/0.3.nix b/nixpkgs/pkgs/development/libraries/webrtc-audio-processing/0.3.nix
new file mode 100644
index 000000000000..30e2a343e2d0
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/webrtc-audio-processing/0.3.nix
@@ -0,0 +1,33 @@
+{ lib, stdenv, fetchurl, darwin }:
+
+stdenv.mkDerivation rec {
+  pname = "webrtc-audio-processing";
+  version = "0.3.1";
+
+  src = fetchurl {
+    url = "https://freedesktop.org/software/pulseaudio/webrtc-audio-processing/webrtc-audio-processing-${version}.tar.xz";
+    sha256 = "1gsx7k77blfy171b6g3m0k0s0072v6jcawhmx1kjs9w5zlwdkzd0";
+  };
+
+  outputs = [ "out" "dev" ];
+
+  patches = [
+    ./enable-riscv.patch
+    ./enable-powerpc.patch
+  ];
+
+  buildInputs = lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [ ApplicationServices ]);
+
+  patchPhase = lib.optionalString stdenv.hostPlatform.isMusl ''
+    substituteInPlace webrtc/base/checks.cc --replace 'defined(__UCLIBC__)' 1
+  '';
+
+  meta = with lib; {
+    homepage = "https://www.freedesktop.org/software/pulseaudio/webrtc-audio-processing";
+    description = "A more Linux packaging friendly copy of the AudioProcessing module from the WebRTC project";
+    license = licenses.bsd3;
+    # https://gitlab.freedesktop.org/pulseaudio/webrtc-audio-processing/-/blob/v0.3.1/webrtc/rtc_base/system/arch.h
+    # + our patches
+    platforms = intersectLists platforms.unix (platforms.arm ++ platforms.aarch64 ++ platforms.mips ++ platforms.power ++ platforms.riscv ++ platforms.x86);
+  };
+}
diff --git a/nixpkgs/pkgs/development/libraries/webrtc-audio-processing/default.nix b/nixpkgs/pkgs/development/libraries/webrtc-audio-processing/default.nix
new file mode 100644
index 000000000000..ad2b12de8910
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/webrtc-audio-processing/default.nix
@@ -0,0 +1,45 @@
+{ lib
+, stdenv
+, fetchFromGitLab
+, darwin
+, abseil-cpp
+, meson
+, ninja
+, pkg-config
+}:
+
+stdenv.mkDerivation rec {
+  pname = "webrtc-audio-processing";
+  version = "1.3";
+
+  src = fetchFromGitLab {
+    domain = "gitlab.freedesktop.org";
+    owner = "pulseaudio";
+    repo = "webrtc-audio-processing";
+    rev = "v${version}";
+    hash = "sha256-8CDt4kMt2Owzyv22dqWIcFuHeg4Y3FxB405cLw3FZ+g=";
+  };
+
+  outputs = [ "out" "dev" ];
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+  ];
+
+  propagatedBuildInputs = [
+    abseil-cpp
+  ];
+
+  buildInputs = lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [ ApplicationServices Foundation ]);
+
+  meta = with lib; {
+    homepage = "https://www.freedesktop.org/software/pulseaudio/webrtc-audio-processing";
+    description = "A more Linux packaging friendly copy of the AudioProcessing module from the WebRTC project";
+    license = licenses.bsd3;
+    # https://gitlab.freedesktop.org/pulseaudio/webrtc-audio-processing/-/blob/master/webrtc/rtc_base/system/arch.h
+    # x86-32 disabled due to https://gitlab.freedesktop.org/pulseaudio/webrtc-audio-processing/-/issues/5
+    platforms = intersectLists platforms.unix (platforms.aarch64 ++ platforms.mips ++ platforms.riscv ++ platforms.x86_64);
+  };
+}
diff --git a/nixpkgs/pkgs/development/libraries/webrtc-audio-processing/enable-powerpc.patch b/nixpkgs/pkgs/development/libraries/webrtc-audio-processing/enable-powerpc.patch
new file mode 100644
index 000000000000..636cae4df854
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/webrtc-audio-processing/enable-powerpc.patch
@@ -0,0 +1,37 @@
+This patch was extracted from the Gentoo powerpc64le-qtwebengine
+patchset, referenced here:
+
+  https://gitweb.gentoo.org/repo/gentoo.git/tree/dev-qt/qtwebengine/qtwebengine-5.15.3_p20220406.ebuild
+
+and downloaded from here:
+
+  https://dev.gentoo.org/~asturm/distfiles/${PN}-5.15.3_p20220406-patchset.tar.xz
+
+From 4bbb4482e14ad27cf0bd5032b1b5d4abba29dc99 Mon Sep 17 00:00:00 2001
+From: Georgy Yakovlev <gyakovlev@gentoo.org>
+Date: Fri, 27 Nov 2020 13:05:45 -0800
+Subject: [PATCH] 5.15.2 ppc64le patchet
+
+diff --git a/webrtc/typedefs.h b/webrtc/typedefs.h
+index ce1f3e8..fd39a16 100644
+--- a/webrtc/typedefs.h
++++ b/webrtc/typedefs.h
+@@ -38,6 +38,18 @@
+ #define WEBRTC_ARCH_X86
+ #define WEBRTC_ARCH_32_BITS
+ #define WEBRTC_ARCH_LITTLE_ENDIAN
++#elif defined(__PPC__)
++#define WEBRTC_ARCH_PPC_FAMILY
++#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
++#define WEBRTC_ARCH_LITTLE_ENDIAN
++#else
++#define WEBRTC_ARCH_BIG_ENDIAN
++#endif
++#if defined(__LP64__)
++#define WEBRTC_ARCH_64_BITS
++#else
++#define WEBRTC_ARCH_32_BITS
++#endif
+ #elif defined(__ARMEL__)
+ // TODO(ajm): We'd prefer to control platform defines here, but this is
+ // currently provided by the Android makefiles. Commented to avoid duplicate
diff --git a/nixpkgs/pkgs/development/libraries/webrtc-audio-processing/enable-riscv.patch b/nixpkgs/pkgs/development/libraries/webrtc-audio-processing/enable-riscv.patch
new file mode 100644
index 000000000000..d61c33548a73
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/webrtc-audio-processing/enable-riscv.patch
@@ -0,0 +1,18 @@
+diff --git a/webrtc/typedefs.h b/webrtc/typedefs.h
+index d875490..ce1f3e8 100644
+--- a/webrtc/typedefs.h
++++ b/webrtc/typedefs.h
+@@ -26,6 +26,13 @@
+ #elif defined(__aarch64__)
+ #define WEBRTC_ARCH_64_BITS
+ #define WEBRTC_ARCH_LITTLE_ENDIAN
++#elif defined(__riscv) || defined(__riscv__)
++#define WEBRTC_ARCH_LITTLE_ENDIAN
++#if __riscv_xlen == 64
++#define WEBRTC_ARCH_64_BITS
++#else
++#define WEBRTC_ARCH_32_BITS
++#endif
+ #elif defined(_M_IX86) || defined(__i386__)
+ #define WEBRTC_ARCH_X86_FAMILY
+ #define WEBRTC_ARCH_X86