sm-commit AT lists.ibiblio.org
Subject: Source Mage code commit list
List archive
[SM-Commit] GIT changes to master grimoire by Pavel Vinogradov (eb9234194fab7eb0b27a90e31aeba063966b5d06)
- From: Pavel Vinogradov <scm AT sourcemage.org>
- To: sm-commit AT lists.ibiblio.org
- Subject: [SM-Commit] GIT changes to master grimoire by Pavel Vinogradov (eb9234194fab7eb0b27a90e31aeba063966b5d06)
- Date: Tue, 11 Apr 2023 17:51:24 +0000
GIT changes to master grimoire by Pavel Vinogradov <public AT sourcemage.org>:
http/firefox/DEPENDS
| 2
http/firefox/DETAILS
| 4
http/firefox/HISTORY
| 5
http/firefox/patches/0011-musl-getcontext-is-only-avaliable-on-glibc-systems.patch
| 28
http/firefox/patches/0011-musl-sys-auvx.h-avaliable-on-more-then-just-glibc-sy.patch
| 51
http/firefox/patches/0012-musl-make-SYS_fork-non-fatal-musl-uses-it-for-fork-2.patch
| 28
http/firefox/patches/0012-musl-sys-auvx.h-avaliable-on-more-then-just-glibc-sy.patch
| 51
http/firefox/patches/0013-musl-include-net-if.h-before-linux-if.h-to-avoid-red.patch
| 27
http/firefox/patches/0013-musl-make-SYS_fork-non-fatal-musl-uses-it-for-fork-2.patch
| 28
http/firefox/patches/0014-Make-PGO-use-toolchain.patch
| 33
http/firefox/patches/0014-musl-include-net-if.h-before-linux-if.h-to-avoid-red.patch
| 27
http/firefox/patches/0015-Make-PGO-use-toolchain.patch
| 33
http/firefox/patches/0015-bmo-1516081-Disable-watchdog-during-PGO-builds.patch
| 55
http/firefox/patches/0016-bmo-1516081-Disable-watchdog-during-PGO-builds.patch
| 55
http/firefox/patches/0016-bmo-1516803-force-one-LTO-partition-for-sandbox-when.patch
| 32
http/firefox/patches/0017-bmo-1516803-force-one-LTO-partition-for-sandbox-when.patch
| 32
http/firefox/patches/0017-libaom-Use-NEON_FLAGS-instead-of-VPX_ASFLAGS-for-lib.patch
| 28
http/firefox/patches/0018-build-Disable-Werror.patch
| 24
http/firefox/patches/0018-libaom-Use-NEON_FLAGS-instead-of-VPX_ASFLAGS-for-lib.patch
| 28
http/firefox/patches/0019-LTO-Only-enable-LTO-for-Rust-when-complete-build-use.patch
| 34
http/firefox/patches/0019-build-Disable-Werror.patch
| 24
http/firefox/patches/0020-Enable-FLAC-on-platforms-without-ffvpx-via-ffmpeg.patch
| 23
http/firefox/patches/0020-LTO-Only-enable-LTO-for-Rust-when-complete-build-use.patch
| 34
http/firefox/patches/0021-Enable-FLAC-on-platforms-without-ffvpx-via-ffmpeg.patch
| 23
http/firefox/patches/0021-bmo-1670333-OpenH264-Fix-decoding-if-it-starts-on-no.patch
| 96 +
http/firefox/patches/0022-bmo-1663844-OpenH264-Allow-using-OpenH264-GMP-decode.patch
| 37
http/firefox/patches/0022-bmo-1670333-OpenH264-Fix-decoding-if-it-starts-on-no.patch
| 96 -
http/firefox/patches/0023-bgo-816975-fix-build-on-x86.patch
| 16
http/firefox/patches/0023-bmo-1663844-OpenH264-Allow-using-OpenH264-GMP-decode.patch
| 37
http/firefox/patches/0024-bgo-816975-fix-build-on-x86.patch
| 16
http/firefox/patches/0024-bmo-1559213-fix-system-av1-libs.patch
| 23
http/firefox/patches/0025-bmo-1196777-Set-GDK_FOCUS_CHANGE_MASK.patch
| 13
http/firefox/patches/0025-bmo-1559213-fix-system-av1-libs.patch
| 23
http/firefox/patches/0026-bmo-1196777-Set-GDK_FOCUS_CHANGE_MASK.patch
| 13
http/firefox/patches/0026-bmo-1754469-memory_mozalloc_throw.patch
| 69
http/firefox/patches/0027-bgo-860033-firefox-wayland-no-dbus.patch
| 49
http/firefox/patches/0027-bmo-1754469-memory_mozalloc_throw.patch
| 69
http/firefox/patches/0028-qm-qm-fix-sqlite3-on-ppc-with-clang.patch
| 55
http/firefox/patches/0028-rhbz-2115253-vaapi-fixes.patch
| 20
http/firefox/patches/0029-bgo-860033-firefox-wayland-no-dbus.patch
| 49
http/firefox/patches/0029-fix-building-gcc-pgo.patch
| 50
http/firefox/patches/0030-bmo-1775202-ppc64-webrtc-missing-conditions-109.patch
| 16
http/firefox/patches/0030-qm-qm-fix-sqlite3-on-ppc-with-clang.patch
| 55
http/firefox/patches/0031-bmo-1822728-increase-child-process-shutdown-timeout.patch
| 37
http/firefox/patches/0031-fix-building-gcc-pgo.patch
| 50
http/firefox/patches/0032-bmo-1775202-ppc64-webrtc-missing-conditions-109.patch
| 16
http/firefox/patches/0032-bmo-1826583-dont-crash-on-wayland-log-handler.patch
| 27
http/firefox/patches/0033-bmo-1821363-use-fully-specified-xsimd-batch.patch
| 41
http/firefox/patches/0034-bmo-1822901-declare-arch-specific-xsimd-specialization.patch
| 755 ----------
49 files changed, 831 insertions(+), 1606 deletions(-)
New commits:
commit eb9234194fab7eb0b27a90e31aeba063966b5d06
Author: Pavel Vinogradov <public AT sourcemage.org>
Commit: Pavel Vinogradov <public AT sourcemage.org>
http/firefox: version 112.0, SECURITY_PATCH++
diff --git a/http/firefox/DEPENDS b/http/firefox/DEPENDS
index 8b84f10..cdbc760 100755
--- a/http/firefox/DEPENDS
+++ b/http/firefox/DEPENDS
@@ -53,7 +53,7 @@ depends libwebp "--with-system-webp"
&&
depends nspr "--with-system-nspr" &&
-local NSS_BRANCH="3.88" &&
+local NSS_BRANCH="3.89" &&
if spell_ok nss &&
is_version_less "$(installed_version nss)" "${NSS_BRANCH}"; then
depends -sub "${NSS_BRANCH}" nss "--with-system-nss"
diff --git a/http/firefox/DETAILS b/http/firefox/DETAILS
index b77f1fe..1ccc9f1 100755
--- a/http/firefox/DETAILS
+++ b/http/firefox/DETAILS
@@ -1,6 +1,6 @@
SPELL=firefox
- VERSION=111.0.1
- SECURITY_PATCH=174
+ VERSION=112.0
+ SECURITY_PATCH=175
SOURCE="${SPELL}-${VERSION}.source.tar.xz"
# Watch: http://releases.mozilla.org/pub/firefox/releases/
/releases/([0-9.]+)/
SOURCE_URL[0]="http://releases.mozilla.org/pub/${SPELL}/releases/${VERSION}/source/${SOURCE}"
diff --git a/http/firefox/HISTORY b/http/firefox/HISTORY
index b199e05..b3acf53 100644
--- a/http/firefox/HISTORY
+++ b/http/firefox/HISTORY
@@ -1,3 +1,8 @@
+2023-04-11 Pavel Vinogradov <public AT sourcemage.org>
+ * DETAILS: version 112.0, SECURITY_PATCH++
+ * DEPENDS: nss >= 3.89
+ * patches/*: updated
+
2023-04-04 Pavel Vinogradov <public AT sourcemage.org>
* patches/*: updated
diff --git
a/http/firefox/patches/0011-musl-getcontext-is-only-avaliable-on-glibc-systems.patch
b/http/firefox/patches/0011-musl-getcontext-is-only-avaliable-on-glibc-systems.patch
deleted file mode 100644
index e9cf02e..0000000
---
a/http/firefox/patches/0011-musl-getcontext-is-only-avaliable-on-glibc-systems.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 3283cc3981f99894dec1219fbf380489905827a9 Mon Sep 17 00:00:00 2001
-From: "Jory A. Pratt" <anarchy AT gentoo.org>
-Date: Mon, 6 Apr 2020 20:10:47 +0200
-Subject: [PATCH 14/30] musl: getcontext is only avaliable on glibc systems
-
-Signed-off-by: Thomas Deutschmann <whissi AT gentoo.org>
----
- tools/profiler/core/platform-linux-android.cpp | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/tools/profiler/core/platform-linux-android.cpp
b/tools/profiler/core/platform-linux-android.cpp
-index d065387552..aaca9e81e4 100644
---- a/tools/profiler/core/platform-linux-android.cpp
-+++ b/tools/profiler/core/platform-linux-android.cpp
-@@ -603,8 +603,10 @@ static void PlatformInit(PSLockRef aLock) {}
-
- #if defined(HAVE_NATIVE_UNWIND)
- void Registers::SyncPopulate() {
-+#if defined(__GLIBC__)
- if (!getcontext(&mContextSyncStorage)) {
- PopulateRegsFromContext(*this, &mContextSyncStorage);
- }
-+#endif
- }
- #endif
---
-2.34.1
-
diff --git
a/http/firefox/patches/0011-musl-sys-auvx.h-avaliable-on-more-then-just-glibc-sy.patch
b/http/firefox/patches/0011-musl-sys-auvx.h-avaliable-on-more-then-just-glibc-sy.patch
new file mode 100644
index 0000000..121c8cd
--- /dev/null
+++
b/http/firefox/patches/0011-musl-sys-auvx.h-avaliable-on-more-then-just-glibc-sy.patch
@@ -0,0 +1,51 @@
+From beed745f96bbc18a3c22a728095c9a2eef7435ee Mon Sep 17 00:00:00 2001
+From: "Jory A. Pratt" <anarchy AT gentoo.org>
+Date: Mon, 6 Apr 2020 20:12:09 +0200
+Subject: [PATCH 15/30] musl: sys/auvx.h avaliable on more then just glibc
+ systems
+
+Signed-off-by: Thomas Deutschmann <whissi AT gentoo.org>
+---
+ .../system_wrappers/source/cpu_features_linux.cc | 12 +++---------
+ 1 file changed, 3 insertions(+), 9 deletions(-)
+
+diff --git
a/third_party/libwebrtc/system_wrappers/source/cpu_features_linux.cc
b/third_party/libwebrtc/system_wrappers/source/cpu_features_linux.cc
+index 335bed4da3..c2c98dae8a 100644
+--- a/third_party/libwebrtc/system_wrappers/source/cpu_features_linux.cc
++++ b/third_party/libwebrtc/system_wrappers/source/cpu_features_linux.cc
+@@ -12,13 +12,7 @@
+ #include <stdlib.h>
+ #include <string.h>
+
+-#ifdef __GLIBC_PREREQ
+-#define WEBRTC_GLIBC_PREREQ(a, b) __GLIBC_PREREQ(a, b)
+-#else
+-#define WEBRTC_GLIBC_PREREQ(a, b) 0
+-#endif
+-
+-#if WEBRTC_GLIBC_PREREQ(2, 16)
++#if defined(__linux__)
+ #include <sys/auxv.h>
+ #else
+ #include <errno.h>
+@@ -40,7 +34,7 @@ uint64_t GetCPUFeaturesARM(void) {
+ int architecture = 0;
+ uint64_t hwcap = 0;
+ const char* platform = NULL;
+-#if WEBRTC_GLIBC_PREREQ(2, 16)
++#if defined(__linux__)
+ hwcap = getauxval(AT_HWCAP);
+ platform = (const char*)getauxval(AT_PLATFORM);
+ #else
+@@ -64,7 +58,7 @@ uint64_t GetCPUFeaturesARM(void) {
+ }
+ close(fd);
+ }
+-#endif // WEBRTC_GLIBC_PREREQ(2, 16)
++#endif // (__linux__)
+ #if defined(__aarch64__)
+ architecture = 8;
+ if ((hwcap & HWCAP_FP) != 0)
+--
+2.34.1
+
diff --git
a/http/firefox/patches/0012-musl-make-SYS_fork-non-fatal-musl-uses-it-for-fork-2.patch
b/http/firefox/patches/0012-musl-make-SYS_fork-non-fatal-musl-uses-it-for-fork-2.patch
new file mode 100644
index 0000000..9de0db7
--- /dev/null
+++
b/http/firefox/patches/0012-musl-make-SYS_fork-non-fatal-musl-uses-it-for-fork-2.patch
@@ -0,0 +1,28 @@
+From 6d36ed9e971861321bb381e25516500069314eb6 Mon Sep 17 00:00:00 2001
+From: Johannes <johannes.brechtmann AT gmail.com>
+Date: Fri, 1 May 2020 17:20:29 +0200
+Subject: [PATCH 16/30] musl: make SYS_fork non-fatal, musl uses it for
fork(2)
+
+Signed-off-by: Thomas Deutschmann <whissi AT gentoo.org>
+---
+ security/sandbox/linux/SandboxFilter.cpp | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/security/sandbox/linux/SandboxFilter.cpp
b/security/sandbox/linux/SandboxFilter.cpp
+index eb72d944c8..8ce22d6f65 100644
+--- a/security/sandbox/linux/SandboxFilter.cpp
++++ b/security/sandbox/linux/SandboxFilter.cpp
+@@ -1537,6 +1537,10 @@ class ContentSandboxPolicy : public
SandboxPolicyCommon {
+ // usually do something reasonable on error.
+ case __NR_clone:
+ return ClonePolicy(Error(EPERM));
++# ifdef __NR_fork
++ case __NR_fork:
++ return Error(ENOSYS);
++# endif
+
+ case __NR_clone3:
+ return Error(ENOSYS);
+--
+2.34.1
+
diff --git
a/http/firefox/patches/0012-musl-sys-auvx.h-avaliable-on-more-then-just-glibc-sy.patch
b/http/firefox/patches/0012-musl-sys-auvx.h-avaliable-on-more-then-just-glibc-sy.patch
deleted file mode 100644
index 121c8cd..0000000
---
a/http/firefox/patches/0012-musl-sys-auvx.h-avaliable-on-more-then-just-glibc-sy.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From beed745f96bbc18a3c22a728095c9a2eef7435ee Mon Sep 17 00:00:00 2001
-From: "Jory A. Pratt" <anarchy AT gentoo.org>
-Date: Mon, 6 Apr 2020 20:12:09 +0200
-Subject: [PATCH 15/30] musl: sys/auvx.h avaliable on more then just glibc
- systems
-
-Signed-off-by: Thomas Deutschmann <whissi AT gentoo.org>
----
- .../system_wrappers/source/cpu_features_linux.cc | 12 +++---------
- 1 file changed, 3 insertions(+), 9 deletions(-)
-
-diff --git
a/third_party/libwebrtc/system_wrappers/source/cpu_features_linux.cc
b/third_party/libwebrtc/system_wrappers/source/cpu_features_linux.cc
-index 335bed4da3..c2c98dae8a 100644
---- a/third_party/libwebrtc/system_wrappers/source/cpu_features_linux.cc
-+++ b/third_party/libwebrtc/system_wrappers/source/cpu_features_linux.cc
-@@ -12,13 +12,7 @@
- #include <stdlib.h>
- #include <string.h>
-
--#ifdef __GLIBC_PREREQ
--#define WEBRTC_GLIBC_PREREQ(a, b) __GLIBC_PREREQ(a, b)
--#else
--#define WEBRTC_GLIBC_PREREQ(a, b) 0
--#endif
--
--#if WEBRTC_GLIBC_PREREQ(2, 16)
-+#if defined(__linux__)
- #include <sys/auxv.h>
- #else
- #include <errno.h>
-@@ -40,7 +34,7 @@ uint64_t GetCPUFeaturesARM(void) {
- int architecture = 0;
- uint64_t hwcap = 0;
- const char* platform = NULL;
--#if WEBRTC_GLIBC_PREREQ(2, 16)
-+#if defined(__linux__)
- hwcap = getauxval(AT_HWCAP);
- platform = (const char*)getauxval(AT_PLATFORM);
- #else
-@@ -64,7 +58,7 @@ uint64_t GetCPUFeaturesARM(void) {
- }
- close(fd);
- }
--#endif // WEBRTC_GLIBC_PREREQ(2, 16)
-+#endif // (__linux__)
- #if defined(__aarch64__)
- architecture = 8;
- if ((hwcap & HWCAP_FP) != 0)
---
-2.34.1
-
diff --git
a/http/firefox/patches/0013-musl-include-net-if.h-before-linux-if.h-to-avoid-red.patch
b/http/firefox/patches/0013-musl-include-net-if.h-before-linux-if.h-to-avoid-red.patch
new file mode 100644
index 0000000..de77780
--- /dev/null
+++
b/http/firefox/patches/0013-musl-include-net-if.h-before-linux-if.h-to-avoid-red.patch
@@ -0,0 +1,27 @@
+From 08a7a0d7fa52e1bdacdcb47e847cf5ecd980ee6f Mon Sep 17 00:00:00 2001
+From: Rasmus Thomsen <oss AT cogitri.dev>
+Date: Wed, 28 Oct 2020 17:50:24 +0100
+Subject: [PATCH 17/30] musl: include net/if.h before linux/if.h to avoid
+ redefinition
+
+Bug: https://bugs.gentoo.org/751469
+Signed-off-by: Thomas Deutschmann <whissi AT gentoo.org>
+---
+ .../webrtc/transport/third_party/nICEr/src/stun/addrs-netlink.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git
a/dom/media/webrtc/transport/third_party/nICEr/src/stun/addrs-netlink.c
b/dom/media/webrtc/transport/third_party/nICEr/src/stun/addrs-netlink.c
+index 73e85c6ccc..9eca548638 100644
+--- a/dom/media/webrtc/transport/third_party/nICEr/src/stun/addrs-netlink.c
++++ b/dom/media/webrtc/transport/third_party/nICEr/src/stun/addrs-netlink.c
+@@ -31,6 +31,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
+ */
+
+ #if defined(LINUX)
++#include <net/if.h>
+ #include "addrs-netlink.h"
+ #include <csi_platform.h>
+ #include <assert.h>
+--
+2.34.1
+
diff --git
a/http/firefox/patches/0013-musl-make-SYS_fork-non-fatal-musl-uses-it-for-fork-2.patch
b/http/firefox/patches/0013-musl-make-SYS_fork-non-fatal-musl-uses-it-for-fork-2.patch
deleted file mode 100644
index 9de0db7..0000000
---
a/http/firefox/patches/0013-musl-make-SYS_fork-non-fatal-musl-uses-it-for-fork-2.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 6d36ed9e971861321bb381e25516500069314eb6 Mon Sep 17 00:00:00 2001
-From: Johannes <johannes.brechtmann AT gmail.com>
-Date: Fri, 1 May 2020 17:20:29 +0200
-Subject: [PATCH 16/30] musl: make SYS_fork non-fatal, musl uses it for
fork(2)
-
-Signed-off-by: Thomas Deutschmann <whissi AT gentoo.org>
----
- security/sandbox/linux/SandboxFilter.cpp | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/security/sandbox/linux/SandboxFilter.cpp
b/security/sandbox/linux/SandboxFilter.cpp
-index eb72d944c8..8ce22d6f65 100644
---- a/security/sandbox/linux/SandboxFilter.cpp
-+++ b/security/sandbox/linux/SandboxFilter.cpp
-@@ -1537,6 +1537,10 @@ class ContentSandboxPolicy : public
SandboxPolicyCommon {
- // usually do something reasonable on error.
- case __NR_clone:
- return ClonePolicy(Error(EPERM));
-+# ifdef __NR_fork
-+ case __NR_fork:
-+ return Error(ENOSYS);
-+# endif
-
- case __NR_clone3:
- return Error(ENOSYS);
---
-2.34.1
-
diff --git a/http/firefox/patches/0014-Make-PGO-use-toolchain.patch
b/http/firefox/patches/0014-Make-PGO-use-toolchain.patch
new file mode 100644
index 0000000..3f72b05
--- /dev/null
+++ b/http/firefox/patches/0014-Make-PGO-use-toolchain.patch
@@ -0,0 +1,33 @@
+From 45d43bb2dc1c1c033c860951c93261e98647f851 Mon Sep 17 00:00:00 2001
+From: Thomas Deutschmann <whissi AT gentoo.org>
+Date: Mon, 6 Apr 2020 20:13:34 +0200
+Subject: [PATCH 18/30] Make PGO use toolchain
+
+Signed-off-by: Thomas Deutschmann <whissi AT gentoo.org>
+---
+ build/unix/mozconfig.unix | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/build/unix/mozconfig.unix b/build/unix/mozconfig.unix
+index 9ca9c97fce..9f86fe0940 100644
+--- a/build/unix/mozconfig.unix
++++ b/build/unix/mozconfig.unix
+@@ -4,6 +4,15 @@ if [ -n "$FORCE_GCC" ]; then
+ CC="$MOZ_FETCHES_DIR/gcc/bin/gcc"
+ CXX="$MOZ_FETCHES_DIR/gcc/bin/g++"
+
++ if [ -n "$MOZ_PGO" ]; then
++ if [ -z "$USE_ARTIFACT" ]; then
++ ac_add_options --enable-lto
++ fi
++ export AR="$topsrcdir/gcc/bin/gcc-ar"
++ export NM="$topsrcdir/gcc/bin/gcc-nm"
++ export RANLIB="$topsrcdir/gcc/bin/gcc-ranlib"
++ fi
++
+ # We want to make sure we use binutils and other binaries in the
tooltool
+ # package.
+ mk_add_options "export PATH=$MOZ_FETCHES_DIR/gcc/bin:$PATH"
+--
+2.34.1
+
diff --git
a/http/firefox/patches/0014-musl-include-net-if.h-before-linux-if.h-to-avoid-red.patch
b/http/firefox/patches/0014-musl-include-net-if.h-before-linux-if.h-to-avoid-red.patch
deleted file mode 100644
index de77780..0000000
---
a/http/firefox/patches/0014-musl-include-net-if.h-before-linux-if.h-to-avoid-red.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 08a7a0d7fa52e1bdacdcb47e847cf5ecd980ee6f Mon Sep 17 00:00:00 2001
-From: Rasmus Thomsen <oss AT cogitri.dev>
-Date: Wed, 28 Oct 2020 17:50:24 +0100
-Subject: [PATCH 17/30] musl: include net/if.h before linux/if.h to avoid
- redefinition
-
-Bug: https://bugs.gentoo.org/751469
-Signed-off-by: Thomas Deutschmann <whissi AT gentoo.org>
----
- .../webrtc/transport/third_party/nICEr/src/stun/addrs-netlink.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git
a/dom/media/webrtc/transport/third_party/nICEr/src/stun/addrs-netlink.c
b/dom/media/webrtc/transport/third_party/nICEr/src/stun/addrs-netlink.c
-index 73e85c6ccc..9eca548638 100644
---- a/dom/media/webrtc/transport/third_party/nICEr/src/stun/addrs-netlink.c
-+++ b/dom/media/webrtc/transport/third_party/nICEr/src/stun/addrs-netlink.c
-@@ -31,6 +31,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
- */
-
- #if defined(LINUX)
-+#include <net/if.h>
- #include "addrs-netlink.h"
- #include <csi_platform.h>
- #include <assert.h>
---
-2.34.1
-
diff --git a/http/firefox/patches/0015-Make-PGO-use-toolchain.patch
b/http/firefox/patches/0015-Make-PGO-use-toolchain.patch
deleted file mode 100644
index 3f72b05..0000000
--- a/http/firefox/patches/0015-Make-PGO-use-toolchain.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 45d43bb2dc1c1c033c860951c93261e98647f851 Mon Sep 17 00:00:00 2001
-From: Thomas Deutschmann <whissi AT gentoo.org>
-Date: Mon, 6 Apr 2020 20:13:34 +0200
-Subject: [PATCH 18/30] Make PGO use toolchain
-
-Signed-off-by: Thomas Deutschmann <whissi AT gentoo.org>
----
- build/unix/mozconfig.unix | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
-diff --git a/build/unix/mozconfig.unix b/build/unix/mozconfig.unix
-index 9ca9c97fce..9f86fe0940 100644
---- a/build/unix/mozconfig.unix
-+++ b/build/unix/mozconfig.unix
-@@ -4,6 +4,15 @@ if [ -n "$FORCE_GCC" ]; then
- CC="$MOZ_FETCHES_DIR/gcc/bin/gcc"
- CXX="$MOZ_FETCHES_DIR/gcc/bin/g++"
-
-+ if [ -n "$MOZ_PGO" ]; then
-+ if [ -z "$USE_ARTIFACT" ]; then
-+ ac_add_options --enable-lto
-+ fi
-+ export AR="$topsrcdir/gcc/bin/gcc-ar"
-+ export NM="$topsrcdir/gcc/bin/gcc-nm"
-+ export RANLIB="$topsrcdir/gcc/bin/gcc-ranlib"
-+ fi
-+
- # We want to make sure we use binutils and other binaries in the
tooltool
- # package.
- mk_add_options "export PATH=$MOZ_FETCHES_DIR/gcc/bin:$PATH"
---
-2.34.1
-
diff --git
a/http/firefox/patches/0015-bmo-1516081-Disable-watchdog-during-PGO-builds.patch
b/http/firefox/patches/0015-bmo-1516081-Disable-watchdog-during-PGO-builds.patch
new file mode 100644
index 0000000..70cf5c3
--- /dev/null
+++
b/http/firefox/patches/0015-bmo-1516081-Disable-watchdog-during-PGO-builds.patch
@@ -0,0 +1,55 @@
+From 2502829abc1a02a08cc1934538c3d30e6f4f6fae Mon Sep 17 00:00:00 2001
+From: Thomas Deutschmann <whissi AT gentoo.org>
+Date: Mon, 6 Apr 2020 20:27:06 +0200
+Subject: [PATCH 19/30] bmo#1516081: Disable watchdog during PGO builds
+
+Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1516081
+Signed-off-by: Thomas Deutschmann <whissi AT gentoo.org>
+---
+ build/moz.configure/lto-pgo.configure | 4 ++--
+ toolkit/components/terminator/nsTerminator.cpp | 7 +++++++
+ 2 files changed, 9 insertions(+), 2 deletions(-)
+
+diff --git a/build/moz.configure/lto-pgo.configure
b/build/moz.configure/lto-pgo.configure
+index e5a4e6f913..567ccf0ba4 100644
+--- a/build/moz.configure/lto-pgo.configure
++++ b/build/moz.configure/lto-pgo.configure
+@@ -84,7 +84,7 @@ set_config("PGO_PROFILE_PATH", pgo_profile_path)
+ def pgo_flags(compiler, profdata, target_is_windows):
+ if compiler.type == "gcc":
+ return namespace(
+- gen_cflags=["-fprofile-generate"],
++ gen_cflags=["-fprofile-generate",
"-DMOZ_PROFILE_INSTRUMENTATION"],
+ gen_ldflags=["-fprofile-generate"],
+ use_cflags=["-fprofile-use", "-fprofile-correction",
"-Wcoverage-mismatch"],
+ use_ldflags=["-fprofile-use"],
+@@ -98,7 +98,7 @@ def pgo_flags(compiler, profdata, target_is_windows):
+ else:
+ gen_ldflags = ["-fprofile-generate"]
+
+- gen_cflags = [prefix + "-fprofile-generate"]
++ gen_cflags = [prefix + "-fprofile-generate",
"-DMOZ_PROFILE_INSTRUMENTATION"]
+ if target_is_windows:
+ # native llvm-profdata.exe on Windows can't read profile data
+ # if name compression is enabled (which cross-compiling enables
+diff --git a/toolkit/components/terminator/nsTerminator.cpp
b/toolkit/components/terminator/nsTerminator.cpp
+index 194bb36e2d..c960d44137 100644
+--- a/toolkit/components/terminator/nsTerminator.cpp
++++ b/toolkit/components/terminator/nsTerminator.cpp
+@@ -466,6 +466,13 @@ void nsTerminator::StartWatchdog() {
+ }
+ #endif
+
++ // Disable watchdog for PGO train builds - writting profile information at
++ // exit may take time and it is better to make build hang rather than
++ // silently produce poorly performing binary.
++#ifdef MOZ_PROFILE_INSTRUMENTATION
++ crashAfterMS = INT32_MAX;
++#endif
++
+ UniquePtr<Options> options(new Options());
+ const PRIntervalTime ticksDuration =
+ PR_MillisecondsToInterval(HEARTBEAT_INTERVAL_MS);
+--
+2.34.1
+
diff --git
a/http/firefox/patches/0016-bmo-1516081-Disable-watchdog-during-PGO-builds.patch
b/http/firefox/patches/0016-bmo-1516081-Disable-watchdog-during-PGO-builds.patch
deleted file mode 100644
index 70cf5c3..0000000
---
a/http/firefox/patches/0016-bmo-1516081-Disable-watchdog-during-PGO-builds.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 2502829abc1a02a08cc1934538c3d30e6f4f6fae Mon Sep 17 00:00:00 2001
-From: Thomas Deutschmann <whissi AT gentoo.org>
-Date: Mon, 6 Apr 2020 20:27:06 +0200
-Subject: [PATCH 19/30] bmo#1516081: Disable watchdog during PGO builds
-
-Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1516081
-Signed-off-by: Thomas Deutschmann <whissi AT gentoo.org>
----
- build/moz.configure/lto-pgo.configure | 4 ++--
- toolkit/components/terminator/nsTerminator.cpp | 7 +++++++
- 2 files changed, 9 insertions(+), 2 deletions(-)
-
-diff --git a/build/moz.configure/lto-pgo.configure
b/build/moz.configure/lto-pgo.configure
-index e5a4e6f913..567ccf0ba4 100644
---- a/build/moz.configure/lto-pgo.configure
-+++ b/build/moz.configure/lto-pgo.configure
-@@ -84,7 +84,7 @@ set_config("PGO_PROFILE_PATH", pgo_profile_path)
- def pgo_flags(compiler, profdata, target_is_windows):
- if compiler.type == "gcc":
- return namespace(
-- gen_cflags=["-fprofile-generate"],
-+ gen_cflags=["-fprofile-generate",
"-DMOZ_PROFILE_INSTRUMENTATION"],
- gen_ldflags=["-fprofile-generate"],
- use_cflags=["-fprofile-use", "-fprofile-correction",
"-Wcoverage-mismatch"],
- use_ldflags=["-fprofile-use"],
-@@ -98,7 +98,7 @@ def pgo_flags(compiler, profdata, target_is_windows):
- else:
- gen_ldflags = ["-fprofile-generate"]
-
-- gen_cflags = [prefix + "-fprofile-generate"]
-+ gen_cflags = [prefix + "-fprofile-generate",
"-DMOZ_PROFILE_INSTRUMENTATION"]
- if target_is_windows:
- # native llvm-profdata.exe on Windows can't read profile data
- # if name compression is enabled (which cross-compiling enables
-diff --git a/toolkit/components/terminator/nsTerminator.cpp
b/toolkit/components/terminator/nsTerminator.cpp
-index 194bb36e2d..c960d44137 100644
---- a/toolkit/components/terminator/nsTerminator.cpp
-+++ b/toolkit/components/terminator/nsTerminator.cpp
-@@ -466,6 +466,13 @@ void nsTerminator::StartWatchdog() {
- }
- #endif
-
-+ // Disable watchdog for PGO train builds - writting profile information at
-+ // exit may take time and it is better to make build hang rather than
-+ // silently produce poorly performing binary.
-+#ifdef MOZ_PROFILE_INSTRUMENTATION
-+ crashAfterMS = INT32_MAX;
-+#endif
-+
- UniquePtr<Options> options(new Options());
- const PRIntervalTime ticksDuration =
- PR_MillisecondsToInterval(HEARTBEAT_INTERVAL_MS);
---
-2.34.1
-
diff --git
a/http/firefox/patches/0016-bmo-1516803-force-one-LTO-partition-for-sandbox-when.patch
b/http/firefox/patches/0016-bmo-1516803-force-one-LTO-partition-for-sandbox-when.patch
new file mode 100644
index 0000000..ef8f9b2
--- /dev/null
+++
b/http/firefox/patches/0016-bmo-1516803-force-one-LTO-partition-for-sandbox-when.patch
@@ -0,0 +1,32 @@
+From 0501ed4bbdbf8d16a69a4460d2ada33ac259365d Mon Sep 17 00:00:00 2001
+From: Thomas Deutschmann <whissi AT gentoo.org>
+Date: Wed, 15 Apr 2020 00:27:25 +0200
+Subject: [PATCH 20/30] bmo#1516803: force one LTO partition for sandbox when
+ using GCC
+
+Signed-off-by: Thomas Deutschmann <whissi AT gentoo.org>
+---
+ security/sandbox/linux/moz.build | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/security/sandbox/linux/moz.build
b/security/sandbox/linux/moz.build
+index e62d1a99a4..913b9ba2ce 100644
+--- a/security/sandbox/linux/moz.build
++++ b/security/sandbox/linux/moz.build
+@@ -114,9 +114,10 @@ if CONFIG["CC_TYPE"] in ("clang", "gcc"):
+ # gcc lto likes to put the top level asm in syscall.cc in a different
partition
+ # from the function using it which breaks the build. Work around that by
+ # forcing there to be only one partition.
+-for f in CONFIG["OS_CXXFLAGS"]:
+- if f.startswith("-flto") and CONFIG["CC_TYPE"] != "clang":
+- LDFLAGS += ["--param", "lto-partitions=1"]
++if CONFIG["CC_TYPE"] != "clang" and CONFIG["MOZ_LTO_LDFLAGS"] is not None:
++ for f in CONFIG["MOZ_LTO_LDFLAGS"]:
++ if f.startswith("-flto"):
++ LDFLAGS += ["--param", "lto-partitions=1"]
+
+ DEFINES["NS_NO_XPCOM"] = True
+ DisableStlWrapping()
+--
+2.34.1
+
diff --git
a/http/firefox/patches/0017-bmo-1516803-force-one-LTO-partition-for-sandbox-when.patch
b/http/firefox/patches/0017-bmo-1516803-force-one-LTO-partition-for-sandbox-when.patch
deleted file mode 100644
index ef8f9b2..0000000
---
a/http/firefox/patches/0017-bmo-1516803-force-one-LTO-partition-for-sandbox-when.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 0501ed4bbdbf8d16a69a4460d2ada33ac259365d Mon Sep 17 00:00:00 2001
-From: Thomas Deutschmann <whissi AT gentoo.org>
-Date: Wed, 15 Apr 2020 00:27:25 +0200
-Subject: [PATCH 20/30] bmo#1516803: force one LTO partition for sandbox when
- using GCC
-
-Signed-off-by: Thomas Deutschmann <whissi AT gentoo.org>
----
- security/sandbox/linux/moz.build | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/security/sandbox/linux/moz.build
b/security/sandbox/linux/moz.build
-index e62d1a99a4..913b9ba2ce 100644
---- a/security/sandbox/linux/moz.build
-+++ b/security/sandbox/linux/moz.build
-@@ -114,9 +114,10 @@ if CONFIG["CC_TYPE"] in ("clang", "gcc"):
- # gcc lto likes to put the top level asm in syscall.cc in a different
partition
- # from the function using it which breaks the build. Work around that by
- # forcing there to be only one partition.
--for f in CONFIG["OS_CXXFLAGS"]:
-- if f.startswith("-flto") and CONFIG["CC_TYPE"] != "clang":
-- LDFLAGS += ["--param", "lto-partitions=1"]
-+if CONFIG["CC_TYPE"] != "clang" and CONFIG["MOZ_LTO_LDFLAGS"] is not None:
-+ for f in CONFIG["MOZ_LTO_LDFLAGS"]:
-+ if f.startswith("-flto"):
-+ LDFLAGS += ["--param", "lto-partitions=1"]
-
- DEFINES["NS_NO_XPCOM"] = True
- DisableStlWrapping()
---
-2.34.1
-
diff --git
a/http/firefox/patches/0017-libaom-Use-NEON_FLAGS-instead-of-VPX_ASFLAGS-for-lib.patch
b/http/firefox/patches/0017-libaom-Use-NEON_FLAGS-instead-of-VPX_ASFLAGS-for-lib.patch
new file mode 100644
index 0000000..85c305f
--- /dev/null
+++
b/http/firefox/patches/0017-libaom-Use-NEON_FLAGS-instead-of-VPX_ASFLAGS-for-lib.patch
@@ -0,0 +1,28 @@
+From 6e220b49aee7dbdcafd255f6260517c5c551f9b1 Mon Sep 17 00:00:00 2001
+From: Mike Hommey <mh AT glandium.org>
+Date: Mon, 26 Nov 2018 09:59:56 +0900
+Subject: [PATCH 23/30] libaom: Use NEON_FLAGS instead of VPX_ASFLAGS for
+ libaom neon code
+
+Bug: https://bugs.gentoo.org/730606
+Signed-off-by: Thomas Deutschmann <whissi AT gentoo.org>
+---
+ media/libaom/moz.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/media/libaom/moz.build b/media/libaom/moz.build
+index fd8c7f2b33..db3f9ca6ec 100644
+--- a/media/libaom/moz.build
++++ b/media/libaom/moz.build
+@@ -55,7 +55,7 @@ elif CONFIG['CPU_ARCH'] == 'arm':
+
+ for f in SOURCES:
+ if f.endswith('neon.c'):
+- SOURCES[f].flags += CONFIG['VPX_ASFLAGS']
++ SOURCES[f].flags += CONFIG['NEON_FLAGS']
+
+ if CONFIG['OS_TARGET'] == 'Android':
+ # For cpu-features.h
+--
+2.34.1
+
diff --git a/http/firefox/patches/0018-build-Disable-Werror.patch
b/http/firefox/patches/0018-build-Disable-Werror.patch
new file mode 100644
index 0000000..e1df117
--- /dev/null
+++ b/http/firefox/patches/0018-build-Disable-Werror.patch
@@ -0,0 +1,24 @@
+diff -Naur a/build/moz.configure/warnings.configure
b/build/moz.configure/warnings.configure
+--- a/build/moz.configure/warnings.configure 2022-10-10 19:05:25.000000000
+0300
++++ b/build/moz.configure/warnings.configure 2022-10-18 13:59:24.514026407
+0300
+@@ -160,6 +160,9 @@
+ # false positives depending on optimization
+ check_and_add_warning("-Wno-error=array-bounds")
+
++# can't get rid of those PGO warnings
++check_and_add_warning("-Wno-error=coverage-mismatch")
++
+ # false positives depending on optimizations
+ check_and_add_warning("-Wno-error=free-nonheap-object")
+
+@@ -279,8 +282,8 @@
+ # build, but we're not sure why.
+ check_and_add_warning("-Wno-enum-compare")
+
+-# Make it an error to be missing function declarations for C code.
+-check_and_add_warning("-Werror=implicit-function-declaration", c_compiler)
++check_and_add_warning("-Werror=implicit-function-declaration",
++ when="--enable-warnings-as-errors")
+
+ # New in clang 11. We can't really do anything about this warning.
+ check_and_add_warning("-Wno-psabi")
diff --git
a/http/firefox/patches/0018-libaom-Use-NEON_FLAGS-instead-of-VPX_ASFLAGS-for-lib.patch
b/http/firefox/patches/0018-libaom-Use-NEON_FLAGS-instead-of-VPX_ASFLAGS-for-lib.patch
deleted file mode 100644
index 85c305f..0000000
---
a/http/firefox/patches/0018-libaom-Use-NEON_FLAGS-instead-of-VPX_ASFLAGS-for-lib.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 6e220b49aee7dbdcafd255f6260517c5c551f9b1 Mon Sep 17 00:00:00 2001
-From: Mike Hommey <mh AT glandium.org>
-Date: Mon, 26 Nov 2018 09:59:56 +0900
-Subject: [PATCH 23/30] libaom: Use NEON_FLAGS instead of VPX_ASFLAGS for
- libaom neon code
-
-Bug: https://bugs.gentoo.org/730606
-Signed-off-by: Thomas Deutschmann <whissi AT gentoo.org>
----
- media/libaom/moz.build | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/media/libaom/moz.build b/media/libaom/moz.build
-index fd8c7f2b33..db3f9ca6ec 100644
---- a/media/libaom/moz.build
-+++ b/media/libaom/moz.build
-@@ -55,7 +55,7 @@ elif CONFIG['CPU_ARCH'] == 'arm':
-
- for f in SOURCES:
- if f.endswith('neon.c'):
-- SOURCES[f].flags += CONFIG['VPX_ASFLAGS']
-+ SOURCES[f].flags += CONFIG['NEON_FLAGS']
-
- if CONFIG['OS_TARGET'] == 'Android':
- # For cpu-features.h
---
-2.34.1
-
diff --git
a/http/firefox/patches/0019-LTO-Only-enable-LTO-for-Rust-when-complete-build-use.patch
b/http/firefox/patches/0019-LTO-Only-enable-LTO-for-Rust-when-complete-build-use.patch
new file mode 100644
index 0000000..32bd0eb
--- /dev/null
+++
b/http/firefox/patches/0019-LTO-Only-enable-LTO-for-Rust-when-complete-build-use.patch
@@ -0,0 +1,34 @@
+From 685e82ac82921720c6cd9c6c45703ff034f081e7 Mon Sep 17 00:00:00 2001
+From: Thomas Deutschmann <whissi AT gentoo.org>
+Date: Sat, 29 Aug 2020 22:30:59 +0200
+Subject: [PATCH 25/30] LTO: Only enable LTO for Rust when complete build uses
+ LTO
+
+Signed-off-by: Thomas Deutschmann <whissi AT gentoo.org>
+---
+ config/makefiles/rust.mk | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/config/makefiles/rust.mk b/config/makefiles/rust.mk
+index 75570d32b9..924722a506 100644
+--- a/config/makefiles/rust.mk
++++ b/config/makefiles/rust.mk
+@@ -87,6 +87,7 @@ endif
+ # These flags are passed via `cargo rustc` and only apply to the final rustc
+ # invocation (i.e., only the top-level crate, not its dependencies).
+ cargo_rustc_flags = $(CARGO_RUSTCFLAGS)
++ifdef MOZ_LTO
+ ifndef DEVELOPER_OPTIONS
+ ifndef MOZ_DEBUG_RUST
+ # Enable link-time optimization for release builds, but not when linking
+@@ -106,6 +107,7 @@ endif
+ endif
+ endif
+ endif
++endif
+
+ ifdef CARGO_INCREMENTAL
+ export CARGO_INCREMENTAL
+--
+2.34.1
+
diff --git a/http/firefox/patches/0019-build-Disable-Werror.patch
b/http/firefox/patches/0019-build-Disable-Werror.patch
deleted file mode 100644
index e1df117..0000000
--- a/http/firefox/patches/0019-build-Disable-Werror.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff -Naur a/build/moz.configure/warnings.configure
b/build/moz.configure/warnings.configure
---- a/build/moz.configure/warnings.configure 2022-10-10 19:05:25.000000000
+0300
-+++ b/build/moz.configure/warnings.configure 2022-10-18 13:59:24.514026407
+0300
-@@ -160,6 +160,9 @@
- # false positives depending on optimization
- check_and_add_warning("-Wno-error=array-bounds")
-
-+# can't get rid of those PGO warnings
-+check_and_add_warning("-Wno-error=coverage-mismatch")
-+
- # false positives depending on optimizations
- check_and_add_warning("-Wno-error=free-nonheap-object")
-
-@@ -279,8 +282,8 @@
- # build, but we're not sure why.
- check_and_add_warning("-Wno-enum-compare")
-
--# Make it an error to be missing function declarations for C code.
--check_and_add_warning("-Werror=implicit-function-declaration", c_compiler)
-+check_and_add_warning("-Werror=implicit-function-declaration",
-+ when="--enable-warnings-as-errors")
-
- # New in clang 11. We can't really do anything about this warning.
- check_and_add_warning("-Wno-psabi")
diff --git
a/http/firefox/patches/0020-Enable-FLAC-on-platforms-without-ffvpx-via-ffmpeg.patch
b/http/firefox/patches/0020-Enable-FLAC-on-platforms-without-ffvpx-via-ffmpeg.patch
new file mode 100644
index 0000000..5e48dd2
--- /dev/null
+++
b/http/firefox/patches/0020-Enable-FLAC-on-platforms-without-ffvpx-via-ffmpeg.patch
@@ -0,0 +1,23 @@
+Enable FLAC on platforms without ffvpx like powerpc*
+
+--- a/dom/media/flac/FlacDecoder.cpp
++++ b/dom/media/flac/FlacDecoder.cpp
+@@ -7,6 +7,7 @@
+ #include "FlacDecoder.h"
+ #include "MediaContainerType.h"
+ #include "mozilla/StaticPrefs_media.h"
++#include "PDMFactory.h"
+
+ namespace mozilla {
+
+@@ -14,6 +15,10 @@ namespace mozilla {
+ bool FlacDecoder::IsEnabled() {
+ #ifdef MOZ_FFVPX
+ return StaticPrefs::media_flac_enabled();
++#elif defined(MOZ_FFMPEG)
++ RefPtr<PDMFactory> platform = new PDMFactory();
++ return StaticPrefs::media_flac_enabled() &&
++ (platform->SupportsMimeType("audio/flac"_ns) !=
media::DecodeSupport::Unsupported);
+ #else
+ return false;
+ #endif
diff --git
a/http/firefox/patches/0020-LTO-Only-enable-LTO-for-Rust-when-complete-build-use.patch
b/http/firefox/patches/0020-LTO-Only-enable-LTO-for-Rust-when-complete-build-use.patch
deleted file mode 100644
index 32bd0eb..0000000
---
a/http/firefox/patches/0020-LTO-Only-enable-LTO-for-Rust-when-complete-build-use.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 685e82ac82921720c6cd9c6c45703ff034f081e7 Mon Sep 17 00:00:00 2001
-From: Thomas Deutschmann <whissi AT gentoo.org>
-Date: Sat, 29 Aug 2020 22:30:59 +0200
-Subject: [PATCH 25/30] LTO: Only enable LTO for Rust when complete build uses
- LTO
-
-Signed-off-by: Thomas Deutschmann <whissi AT gentoo.org>
----
- config/makefiles/rust.mk | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/config/makefiles/rust.mk b/config/makefiles/rust.mk
-index 75570d32b9..924722a506 100644
---- a/config/makefiles/rust.mk
-+++ b/config/makefiles/rust.mk
-@@ -87,6 +87,7 @@ endif
- # These flags are passed via `cargo rustc` and only apply to the final rustc
- # invocation (i.e., only the top-level crate, not its dependencies).
- cargo_rustc_flags = $(CARGO_RUSTCFLAGS)
-+ifdef MOZ_LTO
- ifndef DEVELOPER_OPTIONS
- ifndef MOZ_DEBUG_RUST
- # Enable link-time optimization for release builds, but not when linking
-@@ -106,6 +107,7 @@ endif
- endif
- endif
- endif
-+endif
-
- ifdef CARGO_INCREMENTAL
- export CARGO_INCREMENTAL
---
-2.34.1
-
diff --git
a/http/firefox/patches/0021-Enable-FLAC-on-platforms-without-ffvpx-via-ffmpeg.patch
b/http/firefox/patches/0021-Enable-FLAC-on-platforms-without-ffvpx-via-ffmpeg.patch
deleted file mode 100644
index 5e48dd2..0000000
---
a/http/firefox/patches/0021-Enable-FLAC-on-platforms-without-ffvpx-via-ffmpeg.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Enable FLAC on platforms without ffvpx like powerpc*
-
---- a/dom/media/flac/FlacDecoder.cpp
-+++ b/dom/media/flac/FlacDecoder.cpp
-@@ -7,6 +7,7 @@
- #include "FlacDecoder.h"
- #include "MediaContainerType.h"
- #include "mozilla/StaticPrefs_media.h"
-+#include "PDMFactory.h"
-
- namespace mozilla {
-
-@@ -14,6 +15,10 @@ namespace mozilla {
- bool FlacDecoder::IsEnabled() {
- #ifdef MOZ_FFVPX
- return StaticPrefs::media_flac_enabled();
-+#elif defined(MOZ_FFMPEG)
-+ RefPtr<PDMFactory> platform = new PDMFactory();
-+ return StaticPrefs::media_flac_enabled() &&
-+ (platform->SupportsMimeType("audio/flac"_ns) !=
media::DecodeSupport::Unsupported);
- #else
- return false;
- #endif
diff --git
a/http/firefox/patches/0021-bmo-1670333-OpenH264-Fix-decoding-if-it-starts-on-no.patch
b/http/firefox/patches/0021-bmo-1670333-OpenH264-Fix-decoding-if-it-starts-on-no.patch
new file mode 100644
index 0000000..856361d
--- /dev/null
+++
b/http/firefox/patches/0021-bmo-1670333-OpenH264-Fix-decoding-if-it-starts-on-no.patch
@@ -0,0 +1,96 @@
+From 0b53fcfa8ee76ccc2d77abb947810f631efaecd9 Mon Sep 17 00:00:00 2001
+From: Thomas Deutschmann <whissi AT gentoo.org>
+Date: Fri, 11 Dec 2020 15:37:38 +0100
+Subject: [PATCH 29/30] bmo#1670333: OpenH264: Fix decoding if it starts on
non
+ IDR I-frame
+
+Signed-off-by: Thomas Deutschmann <whissi AT gentoo.org>
+---
+ dom/media/mp4/MP4Demuxer.cpp | 8 ++++++++
+ dom/media/platforms/PDMFactory.cpp | 15 ++++++++++-----
+ dom/media/platforms/PDMFactory.h | 2 ++
+ 3 files changed, 20 insertions(+), 5 deletions(-)
+
+diff --git a/dom/media/mp4/MP4Demuxer.cpp b/dom/media/mp4/MP4Demuxer.cpp
+index 59bba16577..0304e3e89f 100644
+--- a/dom/media/mp4/MP4Demuxer.cpp
++++ b/dom/media/mp4/MP4Demuxer.cpp
+@@ -31,6 +31,8 @@ mozilla::LogModule* GetDemuxerLog() { return
gMediaDemuxerLog; }
+ DDMOZ_LOG(gMediaDemuxerLog, mozilla::LogLevel::Debug, "::%s: " arg, \
+ __func__, ##__VA_ARGS__)
+
++extern bool gUseKeyframeFromContainer;
++
+ namespace mozilla {
+
+ DDLoggedTypeDeclNameAndBase(MP4TrackDemuxer, MediaTrackDemuxer);
+@@ -394,6 +396,12 @@ already_AddRefed<MediaRawData>
MP4TrackDemuxer::GetNextSample() {
+ [[fallthrough]];
+ case H264::FrameType::OTHER: {
+ bool keyframe = type == H264::FrameType::I_FRAME;
++ if (gUseKeyframeFromContainer) {
++ if (sample->mKeyframe && sample->mKeyframe != keyframe) {
++ sample->mKeyframe = keyframe;
++ }
++ break;
++ }
+ if (sample->mKeyframe != keyframe) {
+ NS_WARNING(nsPrintfCString("Frame incorrectly marked as
%skeyframe "
+ "@ pts:%" PRId64 " dur:%" PRId64
+diff --git a/dom/media/platforms/PDMFactory.cpp
b/dom/media/platforms/PDMFactory.cpp
+index 4e377082ae..e778eb9948 100644
+--- a/dom/media/platforms/PDMFactory.cpp
++++ b/dom/media/platforms/PDMFactory.cpp
+@@ -58,6 +58,8 @@
+
+ #include <functional>
+
++bool gUseKeyframeFromContainer = false;
++
+ namespace mozilla {
+
+ #define PDM_INIT_LOG(msg, ...) \
+@@ -536,10 +538,12 @@ void PDMFactory::CreateContentPDMs() {
+ }
+ #endif
+ #ifdef MOZ_FFMPEG
+- if (StaticPrefs::media_ffmpeg_enabled() &&
+- !CreateAndStartupPDM<FFmpegRuntimeLinker>()) {
+- mFailureFlags += GetFailureFlagBasedOnFFmpegStatus(
+- FFmpegRuntimeLinker::LinkStatusCode());
++ if (StaticPrefs::media_ffmpeg_enabled()) {
++ mFFmpegUsed = CreateAndStartupPDM<FFmpegRuntimeLinker>();
++ if (!mFFmpegUsed) {
++ mFailureFlags += GetFailureFlagBasedOnFFmpegStatus(
++ FFmpegRuntimeLinker::LinkStatusCode());
++ }
+ }
+ #endif
+ #ifdef MOZ_FFVPX
+@@ -556,8 +560,9 @@ void PDMFactory::CreateContentPDMs() {
+
+ CreateAndStartupPDM<AgnosticDecoderModule>();
+
+- if (StaticPrefs::media_gmp_decoder_enabled() &&
++ if (StaticPrefs::media_gmp_decoder_enabled() && !mFFmpegUsed &&
+ !CreateAndStartupPDM<GMPDecoderModule>()) {
++ gUseKeyframeFromContainer = true;
+ mFailureFlags += DecoderDoctorDiagnostics::Flags::GMPPDMFailedToStartup;
+ }
+ }
+diff --git a/dom/media/platforms/PDMFactory.h
b/dom/media/platforms/PDMFactory.h
+index 4fc81c0b37..72f3255b6f 100644
+--- a/dom/media/platforms/PDMFactory.h
++++ b/dom/media/platforms/PDMFactory.h
+@@ -122,6 +122,8 @@ class PDMFactory final {
+
+ DecoderDoctorDiagnostics::FlagsSet mFailureFlags;
+
++ bool mFFmpegUsed = false;
++
+ friend class RemoteVideoDecoderParent;
+ static void EnsureInit();
+ };
+--
+2.34.1
+
diff --git
a/http/firefox/patches/0022-bmo-1663844-OpenH264-Allow-using-OpenH264-GMP-decode.patch
b/http/firefox/patches/0022-bmo-1663844-OpenH264-Allow-using-OpenH264-GMP-decode.patch
new file mode 100644
index 0000000..4cc43ea
--- /dev/null
+++
b/http/firefox/patches/0022-bmo-1663844-OpenH264-Allow-using-OpenH264-GMP-decode.patch
@@ -0,0 +1,37 @@
+diff -up firefox-101.0.1/dom/media/gmp/GMPSharedMemManager.h.1663844
firefox-101.0.1/dom/media/gmp/GMPSharedMemManager.h
+--- firefox-101.0.1/dom/media/gmp/GMPSharedMemManager.h.1663844
2022-06-08 23:06:36.000000000 +0200
++++ firefox-101.0.1/dom/media/gmp/GMPSharedMemManager.h 2022-06-09
17:17:04.775008085 +0200
+@@ -27,7 +27,7 @@ class GMPSharedMem {
+ // returned to the parent pool (which is not included). If more than
+ // this are needed, we presume the client has either crashed or hung
+ // (perhaps temporarily).
+- static const uint32_t kGMPBufLimit = 20;
++ static const uint32_t kGMPBufLimit = 40;
+
+ GMPSharedMem() {
+ for (size_t i = 0; i < sizeof(mGmpAllocated) / sizeof(mGmpAllocated[0]);
+diff -up
firefox-101.0.1/dom/media/platforms/agnostic/gmp/GMPDecoderModule.cpp.1663844
firefox-101.0.1/dom/media/platforms/agnostic/gmp/GMPDecoderModule.cpp
+---
firefox-101.0.1/dom/media/platforms/agnostic/gmp/GMPDecoderModule.cpp.1663844
2022-06-08 16:10:21.000000000 +0200
++++ firefox-101.0.1/dom/media/platforms/agnostic/gmp/GMPDecoderModule.cpp
2022-06-09 20:31:25.120035588 +0200
+@@ -84,6 +84,9 @@ media::DecodeSupportSet GMPDecoderModule
+
+ media::DecodeSupportSet GMPDecoderModule::SupportsMimeType(
+ const nsACString& aMimeType, DecoderDoctorDiagnostics* aDiagnostics)
const {
++ if (MP4Decoder::IsH264(aMimeType)) {
++ return media::DecodeSupport::SoftwareDecode;
++ }
+ return media::DecodeSupport::Unsupported;
+ }
+
+diff -up
firefox-101.0.1/dom/media/platforms/agnostic/gmp/GMPVideoDecoder.cpp.1663844
firefox-101.0.1/dom/media/platforms/agnostic/gmp/GMPVideoDecoder.cpp
+---
firefox-101.0.1/dom/media/platforms/agnostic/gmp/GMPVideoDecoder.cpp.1663844
2022-06-08 16:10:21.000000000 +0200
++++ firefox-101.0.1/dom/media/platforms/agnostic/gmp/GMPVideoDecoder.cpp
2022-06-09 17:17:04.776008117 +0200
+@@ -70,6 +70,8 @@ void GMPVideoDecoder::Decoded(GMPVideoi4
+ RefPtr<GMPVideoDecoder> self = this;
+ if (v) {
+ mDecodedData.AppendElement(std::move(v));
++ mDecodePromise.ResolveIfExists(std::move(mDecodedData), __func__);
++ mDecodedData = DecodedData();
+ } else {
+ mDecodedData.Clear();
+ mDecodePromise.RejectIfExists(
diff --git
a/http/firefox/patches/0022-bmo-1670333-OpenH264-Fix-decoding-if-it-starts-on-no.patch
b/http/firefox/patches/0022-bmo-1670333-OpenH264-Fix-decoding-if-it-starts-on-no.patch
deleted file mode 100644
index 856361d..0000000
---
a/http/firefox/patches/0022-bmo-1670333-OpenH264-Fix-decoding-if-it-starts-on-no.patch
+++ /dev/null
@@ -1,96 +0,0 @@
-From 0b53fcfa8ee76ccc2d77abb947810f631efaecd9 Mon Sep 17 00:00:00 2001
-From: Thomas Deutschmann <whissi AT gentoo.org>
-Date: Fri, 11 Dec 2020 15:37:38 +0100
-Subject: [PATCH 29/30] bmo#1670333: OpenH264: Fix decoding if it starts on
non
- IDR I-frame
-
-Signed-off-by: Thomas Deutschmann <whissi AT gentoo.org>
----
- dom/media/mp4/MP4Demuxer.cpp | 8 ++++++++
- dom/media/platforms/PDMFactory.cpp | 15 ++++++++++-----
- dom/media/platforms/PDMFactory.h | 2 ++
- 3 files changed, 20 insertions(+), 5 deletions(-)
-
-diff --git a/dom/media/mp4/MP4Demuxer.cpp b/dom/media/mp4/MP4Demuxer.cpp
-index 59bba16577..0304e3e89f 100644
---- a/dom/media/mp4/MP4Demuxer.cpp
-+++ b/dom/media/mp4/MP4Demuxer.cpp
-@@ -31,6 +31,8 @@ mozilla::LogModule* GetDemuxerLog() { return
gMediaDemuxerLog; }
- DDMOZ_LOG(gMediaDemuxerLog, mozilla::LogLevel::Debug, "::%s: " arg, \
- __func__, ##__VA_ARGS__)
-
-+extern bool gUseKeyframeFromContainer;
-+
- namespace mozilla {
-
- DDLoggedTypeDeclNameAndBase(MP4TrackDemuxer, MediaTrackDemuxer);
-@@ -394,6 +396,12 @@ already_AddRefed<MediaRawData>
MP4TrackDemuxer::GetNextSample() {
- [[fallthrough]];
- case H264::FrameType::OTHER: {
- bool keyframe = type == H264::FrameType::I_FRAME;
-+ if (gUseKeyframeFromContainer) {
-+ if (sample->mKeyframe && sample->mKeyframe != keyframe) {
-+ sample->mKeyframe = keyframe;
-+ }
-+ break;
-+ }
- if (sample->mKeyframe != keyframe) {
- NS_WARNING(nsPrintfCString("Frame incorrectly marked as
%skeyframe "
- "@ pts:%" PRId64 " dur:%" PRId64
-diff --git a/dom/media/platforms/PDMFactory.cpp
b/dom/media/platforms/PDMFactory.cpp
-index 4e377082ae..e778eb9948 100644
---- a/dom/media/platforms/PDMFactory.cpp
-+++ b/dom/media/platforms/PDMFactory.cpp
-@@ -58,6 +58,8 @@
-
- #include <functional>
-
-+bool gUseKeyframeFromContainer = false;
-+
- namespace mozilla {
-
- #define PDM_INIT_LOG(msg, ...) \
-@@ -536,10 +538,12 @@ void PDMFactory::CreateContentPDMs() {
- }
- #endif
- #ifdef MOZ_FFMPEG
-- if (StaticPrefs::media_ffmpeg_enabled() &&
-- !CreateAndStartupPDM<FFmpegRuntimeLinker>()) {
-- mFailureFlags += GetFailureFlagBasedOnFFmpegStatus(
-- FFmpegRuntimeLinker::LinkStatusCode());
-+ if (StaticPrefs::media_ffmpeg_enabled()) {
-+ mFFmpegUsed = CreateAndStartupPDM<FFmpegRuntimeLinker>();
-+ if (!mFFmpegUsed) {
-+ mFailureFlags += GetFailureFlagBasedOnFFmpegStatus(
-+ FFmpegRuntimeLinker::LinkStatusCode());
-+ }
- }
- #endif
- #ifdef MOZ_FFVPX
-@@ -556,8 +560,9 @@ void PDMFactory::CreateContentPDMs() {
-
- CreateAndStartupPDM<AgnosticDecoderModule>();
-
-- if (StaticPrefs::media_gmp_decoder_enabled() &&
-+ if (StaticPrefs::media_gmp_decoder_enabled() && !mFFmpegUsed &&
- !CreateAndStartupPDM<GMPDecoderModule>()) {
-+ gUseKeyframeFromContainer = true;
- mFailureFlags += DecoderDoctorDiagnostics::Flags::GMPPDMFailedToStartup;
- }
- }
-diff --git a/dom/media/platforms/PDMFactory.h
b/dom/media/platforms/PDMFactory.h
-index 4fc81c0b37..72f3255b6f 100644
---- a/dom/media/platforms/PDMFactory.h
-+++ b/dom/media/platforms/PDMFactory.h
-@@ -122,6 +122,8 @@ class PDMFactory final {
-
- DecoderDoctorDiagnostics::FlagsSet mFailureFlags;
-
-+ bool mFFmpegUsed = false;
-+
- friend class RemoteVideoDecoderParent;
- static void EnsureInit();
- };
---
-2.34.1
-
diff --git a/http/firefox/patches/0023-bgo-816975-fix-build-on-x86.patch
b/http/firefox/patches/0023-bgo-816975-fix-build-on-x86.patch
new file mode 100644
index 0000000..4b2289f
--- /dev/null
+++ b/http/firefox/patches/0023-bgo-816975-fix-build-on-x86.patch
@@ -0,0 +1,16 @@
+diff --git a/modules/fdlibm/src/math_private.h
b/modules/fdlibm/src/math_private.h
+index 51d79f9c2ec59..fafd7d6fc1e0d 100644
+--- a/modules/fdlibm/src/math_private.h
++++ b/modules/fdlibm/src/math_private.h
+@@ -30,7 +30,11 @@
+ * Adapted from https://github.com/freebsd/freebsd-src/search?q=__double_t
+ */
+
++#if defined __FLT_EVAL_METHOD__ && (__FLT_EVAL_METHOD__ == 2)
++typedef long double __double_t;
++#else
+ typedef double __double_t;
++#endif
+ typedef __double_t double_t;
+
+ /*
diff --git
a/http/firefox/patches/0023-bmo-1663844-OpenH264-Allow-using-OpenH264-GMP-decode.patch
b/http/firefox/patches/0023-bmo-1663844-OpenH264-Allow-using-OpenH264-GMP-decode.patch
deleted file mode 100644
index 4cc43ea..0000000
---
a/http/firefox/patches/0023-bmo-1663844-OpenH264-Allow-using-OpenH264-GMP-decode.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-diff -up firefox-101.0.1/dom/media/gmp/GMPSharedMemManager.h.1663844
firefox-101.0.1/dom/media/gmp/GMPSharedMemManager.h
---- firefox-101.0.1/dom/media/gmp/GMPSharedMemManager.h.1663844
2022-06-08 23:06:36.000000000 +0200
-+++ firefox-101.0.1/dom/media/gmp/GMPSharedMemManager.h 2022-06-09
17:17:04.775008085 +0200
-@@ -27,7 +27,7 @@ class GMPSharedMem {
- // returned to the parent pool (which is not included). If more than
- // this are needed, we presume the client has either crashed or hung
- // (perhaps temporarily).
-- static const uint32_t kGMPBufLimit = 20;
-+ static const uint32_t kGMPBufLimit = 40;
-
- GMPSharedMem() {
- for (size_t i = 0; i < sizeof(mGmpAllocated) / sizeof(mGmpAllocated[0]);
-diff -up
firefox-101.0.1/dom/media/platforms/agnostic/gmp/GMPDecoderModule.cpp.1663844
firefox-101.0.1/dom/media/platforms/agnostic/gmp/GMPDecoderModule.cpp
----
firefox-101.0.1/dom/media/platforms/agnostic/gmp/GMPDecoderModule.cpp.1663844
2022-06-08 16:10:21.000000000 +0200
-+++ firefox-101.0.1/dom/media/platforms/agnostic/gmp/GMPDecoderModule.cpp
2022-06-09 20:31:25.120035588 +0200
-@@ -84,6 +84,9 @@ media::DecodeSupportSet GMPDecoderModule
-
- media::DecodeSupportSet GMPDecoderModule::SupportsMimeType(
- const nsACString& aMimeType, DecoderDoctorDiagnostics* aDiagnostics)
const {
-+ if (MP4Decoder::IsH264(aMimeType)) {
-+ return media::DecodeSupport::SoftwareDecode;
-+ }
- return media::DecodeSupport::Unsupported;
- }
-
-diff -up
firefox-101.0.1/dom/media/platforms/agnostic/gmp/GMPVideoDecoder.cpp.1663844
firefox-101.0.1/dom/media/platforms/agnostic/gmp/GMPVideoDecoder.cpp
----
firefox-101.0.1/dom/media/platforms/agnostic/gmp/GMPVideoDecoder.cpp.1663844
2022-06-08 16:10:21.000000000 +0200
-+++ firefox-101.0.1/dom/media/platforms/agnostic/gmp/GMPVideoDecoder.cpp
2022-06-09 17:17:04.776008117 +0200
-@@ -70,6 +70,8 @@ void GMPVideoDecoder::Decoded(GMPVideoi4
- RefPtr<GMPVideoDecoder> self = this;
- if (v) {
- mDecodedData.AppendElement(std::move(v));
-+ mDecodePromise.ResolveIfExists(std::move(mDecodedData), __func__);
-+ mDecodedData = DecodedData();
- } else {
- mDecodedData.Clear();
- mDecodePromise.RejectIfExists(
diff --git a/http/firefox/patches/0024-bgo-816975-fix-build-on-x86.patch
b/http/firefox/patches/0024-bgo-816975-fix-build-on-x86.patch
deleted file mode 100644
index 4b2289f..0000000
--- a/http/firefox/patches/0024-bgo-816975-fix-build-on-x86.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-diff --git a/modules/fdlibm/src/math_private.h
b/modules/fdlibm/src/math_private.h
-index 51d79f9c2ec59..fafd7d6fc1e0d 100644
---- a/modules/fdlibm/src/math_private.h
-+++ b/modules/fdlibm/src/math_private.h
-@@ -30,7 +30,11 @@
- * Adapted from https://github.com/freebsd/freebsd-src/search?q=__double_t
- */
-
-+#if defined __FLT_EVAL_METHOD__ && (__FLT_EVAL_METHOD__ == 2)
-+typedef long double __double_t;
-+#else
- typedef double __double_t;
-+#endif
- typedef __double_t double_t;
-
- /*
diff --git a/http/firefox/patches/0024-bmo-1559213-fix-system-av1-libs.patch
b/http/firefox/patches/0024-bmo-1559213-fix-system-av1-libs.patch
new file mode 100644
index 0000000..361c0b6
--- /dev/null
+++ b/http/firefox/patches/0024-bmo-1559213-fix-system-av1-libs.patch
@@ -0,0 +1,23 @@
+diff --git a/media/ffvpx/libavcodec/moz.build
b/media/ffvpx/libavcodec/moz.build
+index 0069865..e806fc8 100644
+--- a/media/ffvpx/libavcodec/moz.build
++++ b/media/ffvpx/libavcodec/moz.build
+@@ -108,10 +108,14 @@
+ 'vp9prob.c',
+ 'vp9recon.c'
+ ]
+- USE_LIBS += [
+- 'dav1d',
+- 'media_libdav1d_asm',
+- ]
++ if CONFIG["MOZ_SYSTEM_AV1"]:
++ CFLAGS += CONFIG['MOZ_SYSTEM_LIBDAV1D_CFLAGS']
++ OS_LIBS += CONFIG['MOZ_SYSTEM_LIBDAV1D_LIBS']
++ else:
++ USE_LIBS += [
++ 'dav1d',
++ 'media_libdav1d_asm',
++ ]
+ if CONFIG['MOZ_WAYLAND']:
+ LOCAL_INCLUDES += ['/media/mozva']
+ SOURCES += [
diff --git
a/http/firefox/patches/0025-bmo-1196777-Set-GDK_FOCUS_CHANGE_MASK.patch
b/http/firefox/patches/0025-bmo-1196777-Set-GDK_FOCUS_CHANGE_MASK.patch
new file mode 100644
index 0000000..864741e
--- /dev/null
+++ b/http/firefox/patches/0025-bmo-1196777-Set-GDK_FOCUS_CHANGE_MASK.patch
@@ -0,0 +1,13 @@
+diff -up firefox-100.0/widget/gtk/nsWindow.cpp.1196777
firefox-100.0/widget/gtk/nsWindow.cpp
+--- firefox-100.0/widget/gtk/nsWindow.cpp.1196777 2022-05-02
11:29:06.763325015 +0200
++++ firefox-100.0/widget/gtk/nsWindow.cpp 2022-05-02 11:30:49.100717334
+0200
+@@ -163,7 +163,8 @@ const gint kEvents = GDK_TOUCHPAD_GESTUR
+ GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK |
+ GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK |
+ GDK_SMOOTH_SCROLL_MASK | GDK_TOUCH_MASK |
GDK_SCROLL_MASK |
+- GDK_POINTER_MOTION_MASK | GDK_PROPERTY_CHANGE_MASK;
++ GDK_POINTER_MOTION_MASK | GDK_PROPERTY_CHANGE_MASK |
++ GDK_FOCUS_CHANGE_MASK;
+
+ /* utility functions */
+ static bool is_mouse_in_window(GdkWindow* aWindow, gdouble aMouseX,
diff --git a/http/firefox/patches/0025-bmo-1559213-fix-system-av1-libs.patch
b/http/firefox/patches/0025-bmo-1559213-fix-system-av1-libs.patch
deleted file mode 100644
index 361c0b6..0000000
--- a/http/firefox/patches/0025-bmo-1559213-fix-system-av1-libs.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-diff --git a/media/ffvpx/libavcodec/moz.build
b/media/ffvpx/libavcodec/moz.build
-index 0069865..e806fc8 100644
---- a/media/ffvpx/libavcodec/moz.build
-+++ b/media/ffvpx/libavcodec/moz.build
-@@ -108,10 +108,14 @@
- 'vp9prob.c',
- 'vp9recon.c'
- ]
-- USE_LIBS += [
-- 'dav1d',
-- 'media_libdav1d_asm',
-- ]
-+ if CONFIG["MOZ_SYSTEM_AV1"]:
-+ CFLAGS += CONFIG['MOZ_SYSTEM_LIBDAV1D_CFLAGS']
-+ OS_LIBS += CONFIG['MOZ_SYSTEM_LIBDAV1D_LIBS']
-+ else:
-+ USE_LIBS += [
-+ 'dav1d',
-+ 'media_libdav1d_asm',
-+ ]
- if CONFIG['MOZ_WAYLAND']:
- LOCAL_INCLUDES += ['/media/mozva']
- SOURCES += [
diff --git
a/http/firefox/patches/0026-bmo-1196777-Set-GDK_FOCUS_CHANGE_MASK.patch
b/http/firefox/patches/0026-bmo-1196777-Set-GDK_FOCUS_CHANGE_MASK.patch
deleted file mode 100644
index 864741e..0000000
--- a/http/firefox/patches/0026-bmo-1196777-Set-GDK_FOCUS_CHANGE_MASK.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -up firefox-100.0/widget/gtk/nsWindow.cpp.1196777
firefox-100.0/widget/gtk/nsWindow.cpp
---- firefox-100.0/widget/gtk/nsWindow.cpp.1196777 2022-05-02
11:29:06.763325015 +0200
-+++ firefox-100.0/widget/gtk/nsWindow.cpp 2022-05-02 11:30:49.100717334
+0200
-@@ -163,7 +163,8 @@ const gint kEvents = GDK_TOUCHPAD_GESTUR
- GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK |
- GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK |
- GDK_SMOOTH_SCROLL_MASK | GDK_TOUCH_MASK |
GDK_SCROLL_MASK |
-- GDK_POINTER_MOTION_MASK | GDK_PROPERTY_CHANGE_MASK;
-+ GDK_POINTER_MOTION_MASK | GDK_PROPERTY_CHANGE_MASK |
-+ GDK_FOCUS_CHANGE_MASK;
-
- /* utility functions */
- static bool is_mouse_in_window(GdkWindow* aWindow, gdouble aMouseX,
diff --git
a/http/firefox/patches/0026-bmo-1754469-memory_mozalloc_throw.patch
b/http/firefox/patches/0026-bmo-1754469-memory_mozalloc_throw.patch
new file mode 100644
index 0000000..634892be
--- /dev/null
+++ b/http/firefox/patches/0026-bmo-1754469-memory_mozalloc_throw.patch
@@ -0,0 +1,69 @@
+--- a/memory/mozalloc/throw_gcc.h 2022-02-02 17:33:38 UTC
++++ b/memory/mozalloc/throw_gcc.h
+@@ -74,50 +74,66 @@ __throw_bad_function_call(void) {
+ mozalloc_abort("fatal: STL threw bad_function_call");
+ }
+
++#if !defined(_LIBCPP_VERSION)
+ MOZ_THROW_NORETURN MOZ_THROW_EXPORT MOZ_THROW_INLINE void
__throw_logic_error(
+ const char* msg) {
+ mozalloc_abort(msg);
+ }
++#endif // _LIBCPP_VERSION
+
++#if !defined(_LIBCPP_VERSION)
+ MOZ_THROW_NORETURN MOZ_THROW_EXPORT MOZ_THROW_INLINE void
__throw_domain_error(
+ const char* msg) {
+ mozalloc_abort(msg);
+ }
++#endif // _LIBCPP_VERSION
+
++#if !defined(_LIBCPP_VERSION)
+ MOZ_THROW_NORETURN MOZ_THROW_EXPORT MOZ_THROW_INLINE void
+ __throw_invalid_argument(const char* msg) {
+ mozalloc_abort(msg);
+ }
++#endif // _LIBCPP_VERSION
+
++#if !defined(_LIBCPP_VERSION)
+ MOZ_THROW_NORETURN MOZ_THROW_EXPORT MOZ_THROW_INLINE void
__throw_length_error(
+ const char* msg) {
+ mozalloc_abort(msg);
+ }
++#endif // _LIBCPP_VERSION
+
++#if !defined(_LIBCPP_VERSION)
+ MOZ_THROW_NORETURN MOZ_THROW_EXPORT MOZ_THROW_INLINE void
__throw_out_of_range(
+ const char* msg) {
+ mozalloc_abort(msg);
+ }
++#endif // _LIBCPP_VERSION
+
+ MOZ_THROW_NORETURN MOZ_THROW_EXPORT MOZ_THROW_INLINE void
__throw_runtime_error(
+ const char* msg) {
+ mozalloc_abort(msg);
+ }
+
++#if !defined(_LIBCPP_VERSION)
+ MOZ_THROW_NORETURN MOZ_THROW_EXPORT MOZ_THROW_INLINE void
__throw_range_error(
+ const char* msg) {
+ mozalloc_abort(msg);
+ }
++#endif // _LIBCPP_VERSION
+
++#if !defined(_LIBCPP_VERSION)
+ MOZ_THROW_NORETURN MOZ_THROW_EXPORT MOZ_THROW_INLINE void
+ __throw_overflow_error(const char* msg) {
+ mozalloc_abort(msg);
+ }
++#endif // _LIBCPP_VERSION
+
++#if !defined(_LIBCPP_VERSION)
+ MOZ_THROW_NORETURN MOZ_THROW_EXPORT MOZ_THROW_INLINE void
+ __throw_underflow_error(const char* msg) {
+ mozalloc_abort(msg);
+ }
++#endif // _LIBCPP_VERSION
+
+ MOZ_THROW_NORETURN MOZ_THROW_EXPORT MOZ_THROW_INLINE void
__throw_ios_failure(
+ const char* msg) {
diff --git
a/http/firefox/patches/0027-bgo-860033-firefox-wayland-no-dbus.patch
b/http/firefox/patches/0027-bgo-860033-firefox-wayland-no-dbus.patch
new file mode 100644
index 0000000..7cf532a
--- /dev/null
+++ b/http/firefox/patches/0027-bgo-860033-firefox-wayland-no-dbus.patch
@@ -0,0 +1,49 @@
+diff --git a/toolkit/moz.configure b/toolkit/moz.configure
+--- a/toolkit/moz.configure
++++ b/toolkit/moz.configure
+@@ -2353,18 +2353,6 @@ with only_when(compile_environment & tar
+ )
+ set_config("MOZ_D3DCOMPILER_VISTA_DLL_PATH", d3d_compiler_dll.path)
+
+-# Remoting protocol support
+-# ==============================================================
+-
+-
+-@depends(toolkit)
+-def has_remote(toolkit):
+- if toolkit in ("gtk", "windows", "cocoa"):
+- return True
+-
+-
+-set_config("MOZ_HAS_REMOTE", has_remote)
+-set_define("MOZ_HAS_REMOTE", has_remote)
+
+ # RLBox Library Sandboxing wasm support
+ # ==============================================================
+@@ -2900,6 +2888,26 @@ with only_when(toolkit_gtk):
+ set_config("MOZ_ENABLE_DBUS", True)
+ set_define("MOZ_ENABLE_DBUS", True)
+
++# Remoting protocol support
++# ==============================================================
++
++@depends(
++ toolkit,
++ depends("--enable-dbus", when=toolkit_gtk)(lambda x: x),
++ depends(wayland_headers, when=toolkit_gtk)(lambda x: x),
++ depends(x11_headers, when=toolkit_gtk)(lambda x: x),
++)
++def has_remote(toolkit, dbus, wayland, x11):
++ if toolkit in ("windows", "cocoa"):
++ return True
++ if toolkit == "gtk":
++ if not dbus and wayland and not x11:
++ return
++ return True
++
++
++set_config("MOZ_HAS_REMOTE", has_remote)
++set_define("MOZ_HAS_REMOTE", has_remote)
+
+ # Necko's wifi scanner
+ # ==============================================================
diff --git
a/http/firefox/patches/0027-bmo-1754469-memory_mozalloc_throw.patch
b/http/firefox/patches/0027-bmo-1754469-memory_mozalloc_throw.patch
deleted file mode 100644
index 634892be..0000000
--- a/http/firefox/patches/0027-bmo-1754469-memory_mozalloc_throw.patch
+++ /dev/null
@@ -1,69 +0,0 @@
---- a/memory/mozalloc/throw_gcc.h 2022-02-02 17:33:38 UTC
-+++ b/memory/mozalloc/throw_gcc.h
-@@ -74,50 +74,66 @@ __throw_bad_function_call(void) {
- mozalloc_abort("fatal: STL threw bad_function_call");
- }
-
-+#if !defined(_LIBCPP_VERSION)
- MOZ_THROW_NORETURN MOZ_THROW_EXPORT MOZ_THROW_INLINE void
__throw_logic_error(
- const char* msg) {
- mozalloc_abort(msg);
- }
-+#endif // _LIBCPP_VERSION
-
-+#if !defined(_LIBCPP_VERSION)
- MOZ_THROW_NORETURN MOZ_THROW_EXPORT MOZ_THROW_INLINE void
__throw_domain_error(
- const char* msg) {
- mozalloc_abort(msg);
- }
-+#endif // _LIBCPP_VERSION
-
-+#if !defined(_LIBCPP_VERSION)
- MOZ_THROW_NORETURN MOZ_THROW_EXPORT MOZ_THROW_INLINE void
- __throw_invalid_argument(const char* msg) {
- mozalloc_abort(msg);
- }
-+#endif // _LIBCPP_VERSION
-
-+#if !defined(_LIBCPP_VERSION)
- MOZ_THROW_NORETURN MOZ_THROW_EXPORT MOZ_THROW_INLINE void
__throw_length_error(
- const char* msg) {
- mozalloc_abort(msg);
- }
-+#endif // _LIBCPP_VERSION
-
-+#if !defined(_LIBCPP_VERSION)
- MOZ_THROW_NORETURN MOZ_THROW_EXPORT MOZ_THROW_INLINE void
__throw_out_of_range(
- const char* msg) {
- mozalloc_abort(msg);
- }
-+#endif // _LIBCPP_VERSION
-
- MOZ_THROW_NORETURN MOZ_THROW_EXPORT MOZ_THROW_INLINE void
__throw_runtime_error(
- const char* msg) {
- mozalloc_abort(msg);
- }
-
-+#if !defined(_LIBCPP_VERSION)
- MOZ_THROW_NORETURN MOZ_THROW_EXPORT MOZ_THROW_INLINE void
__throw_range_error(
- const char* msg) {
- mozalloc_abort(msg);
- }
-+#endif // _LIBCPP_VERSION
-
-+#if !defined(_LIBCPP_VERSION)
- MOZ_THROW_NORETURN MOZ_THROW_EXPORT MOZ_THROW_INLINE void
- __throw_overflow_error(const char* msg) {
- mozalloc_abort(msg);
- }
-+#endif // _LIBCPP_VERSION
-
-+#if !defined(_LIBCPP_VERSION)
- MOZ_THROW_NORETURN MOZ_THROW_EXPORT MOZ_THROW_INLINE void
- __throw_underflow_error(const char* msg) {
- mozalloc_abort(msg);
- }
-+#endif // _LIBCPP_VERSION
-
- MOZ_THROW_NORETURN MOZ_THROW_EXPORT MOZ_THROW_INLINE void
__throw_ios_failure(
- const char* msg) {
diff --git
a/http/firefox/patches/0028-qm-qm-fix-sqlite3-on-ppc-with-clang.patch
b/http/firefox/patches/0028-qm-qm-fix-sqlite3-on-ppc-with-clang.patch
new file mode 100644
index 0000000..51f7faa
--- /dev/null
+++ b/http/firefox/patches/0028-qm-qm-fix-sqlite3-on-ppc-with-clang.patch
@@ -0,0 +1,55 @@
+From 67157b1aa7da0a146b7d2d5abb9237eea1f434ec Mon Sep 17 00:00:00 2001
+From: Daniel Kolesa <daniel AT octaforge.org>
+Date: Fri, 23 Sep 2022 02:38:29 +0200
+Subject: [PATCH] fix sqlite3 on ppc with clang
+
+The __ppc__ macro is always defined on clang but not gcc, which
+results in sqlite mistakenly thinking that ppc64le with clang
+is big endian.
+
+Also disable some inline assembly stuff on ppc that is never used
+with gcc and probably was never tested with modern machines.
+---
+ third_party/sqlite3/src/sqlite3.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/third_party/sqlite3/src/sqlite3.c
b/third_party/sqlite3/src/sqlite3.c
+index 4f3dc68..9017062 100644
+--- a/third_party/sqlite3/src/sqlite3.c
++++ b/third_party/sqlite3/src/sqlite3.c
+@@ -14317,9 +14317,9 @@ typedef INT16_TYPE LogEst;
+ # if defined(i386) || defined(__i386__) || defined(_M_IX86) ||
\
+ defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) ||
\
+ defined(_M_AMD64) || defined(_M_ARM) || defined(__x86) ||
\
+- defined(__ARMEL__) || defined(__AARCH64EL__) || defined(_M_ARM64)
++ defined(__ARMEL__) || defined(__AARCH64EL__) || defined(_M_ARM64) ||
defined(__LITTLE_ENDIAN__)
+ # define SQLITE_BYTEORDER 1234
+-# elif defined(sparc) || defined(__ppc__) || \
++# elif defined(sparc) || defined(__BIG_ENDIAN__) || \
+ defined(__ARMEB__) || defined(__AARCH64EB__)
+ # define SQLITE_BYTEORDER 4321
+ # else
+@@ -20713,7 +20713,7 @@ SQLITE_PRIVATE const char
**sqlite3CompileOptions(int *pnOpt);
+ return val;
+ }
+
+-#elif !defined(__STRICT_ANSI__) && (defined(__GNUC__) && defined(__ppc__))
++#elif 0
+
+ __inline__ sqlite_uint64 sqlite3Hwtime(void){
+ unsigned long long retval;
+@@ -196385,9 +196385,9 @@ struct RtreeMatchArg {
+ #if defined(i386) || defined(__i386__) || defined(_M_IX86) || \
+ defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) || \
+ defined(_M_AMD64) || defined(_M_ARM) || defined(__x86) || \
+- defined(__arm__)
++ defined(__arm__) || defined(__LITTLE_ENDIAN__)
+ # define SQLITE_BYTEORDER 1234
+-#elif defined(sparc) || defined(__ppc__)
++#elif defined(sparc) || defined(__BIG_ENDIAN__)
+ # define SQLITE_BYTEORDER 4321
+ #else
+ # define SQLITE_BYTEORDER 0 /* 0 means "unknown at compile-time" */
+--
+2.37.3
+
diff --git a/http/firefox/patches/0028-rhbz-2115253-vaapi-fixes.patch
b/http/firefox/patches/0028-rhbz-2115253-vaapi-fixes.patch
deleted file mode 100644
index ddf30d1..0000000
--- a/http/firefox/patches/0028-rhbz-2115253-vaapi-fixes.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-diff -up firefox-104.0/gfx/thebes/gfxPlatformGtk.cpp.firefox-enable-vaapi
firefox-104.0/gfx/thebes/gfxPlatformGtk.cpp
-diff -up firefox-104.0/widget/gtk/GfxInfo.cpp.firefox-enable-vaapi
firefox-104.0/widget/gtk/GfxInfo.cpp
---- firefox-104.0/widget/gtk/GfxInfo.cpp.firefox-enable-vaapi 2022-08-16
15:14:53.014042400 +0200
-+++ firefox-104.0/widget/gtk/GfxInfo.cpp 2022-08-16 15:15:30.482301677
+0200
-@@ -873,15 +873,6 @@ const nsTArray<GfxDriverInfo>& GfxInfo::
- nsIGfxInfo::FEATURE_BLOCKED_DEVICE, DRIVER_COMPARISON_IGNORED,
- V(0, 0, 0, 0), "FEATURE_HARDWARE_VIDEO_DECODING_NO_LINUX_AMD", "");
-
-- // Disable on Release/late Beta
--#if !defined(EARLY_BETA_OR_EARLIER)
-- APPEND_TO_DRIVER_BLOCKLIST(OperatingSystem::Linux, DeviceFamily::All,
-- nsIGfxInfo::FEATURE_HARDWARE_VIDEO_DECODING,
-- nsIGfxInfo::FEATURE_BLOCKED_DEVICE,
-- DRIVER_COMPARISON_IGNORED, V(0, 0, 0, 0),
-- "FEATURE_HARDWARE_VIDEO_DECODING_DISABLE",
"");
--#endif
--
- ////////////////////////////////////
- // FEATURE_WEBRENDER_PARTIAL_PRESENT
- APPEND_TO_DRIVER_BLOCKLIST_EXT(
diff --git
a/http/firefox/patches/0029-bgo-860033-firefox-wayland-no-dbus.patch
b/http/firefox/patches/0029-bgo-860033-firefox-wayland-no-dbus.patch
deleted file mode 100644
index 7cf532a..0000000
--- a/http/firefox/patches/0029-bgo-860033-firefox-wayland-no-dbus.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-diff --git a/toolkit/moz.configure b/toolkit/moz.configure
---- a/toolkit/moz.configure
-+++ b/toolkit/moz.configure
-@@ -2353,18 +2353,6 @@ with only_when(compile_environment & tar
- )
- set_config("MOZ_D3DCOMPILER_VISTA_DLL_PATH", d3d_compiler_dll.path)
-
--# Remoting protocol support
--# ==============================================================
--
--
--@depends(toolkit)
--def has_remote(toolkit):
-- if toolkit in ("gtk", "windows", "cocoa"):
-- return True
--
--
--set_config("MOZ_HAS_REMOTE", has_remote)
--set_define("MOZ_HAS_REMOTE", has_remote)
-
- # RLBox Library Sandboxing wasm support
- # ==============================================================
-@@ -2900,6 +2888,26 @@ with only_when(toolkit_gtk):
- set_config("MOZ_ENABLE_DBUS", True)
- set_define("MOZ_ENABLE_DBUS", True)
-
-+# Remoting protocol support
-+# ==============================================================
-+
-+@depends(
-+ toolkit,
-+ depends("--enable-dbus", when=toolkit_gtk)(lambda x: x),
-+ depends(wayland_headers, when=toolkit_gtk)(lambda x: x),
-+ depends(x11_headers, when=toolkit_gtk)(lambda x: x),
-+)
-+def has_remote(toolkit, dbus, wayland, x11):
-+ if toolkit in ("windows", "cocoa"):
-+ return True
-+ if toolkit == "gtk":
-+ if not dbus and wayland and not x11:
-+ return
-+ return True
-+
-+
-+set_config("MOZ_HAS_REMOTE", has_remote)
-+set_define("MOZ_HAS_REMOTE", has_remote)
-
- # Necko's wifi scanner
- # ==============================================================
diff --git a/http/firefox/patches/0029-fix-building-gcc-pgo.patch
b/http/firefox/patches/0029-fix-building-gcc-pgo.patch
new file mode 100644
index 0000000..eb520b4
--- /dev/null
+++ b/http/firefox/patches/0029-fix-building-gcc-pgo.patch
@@ -0,0 +1,50 @@
+diff -Naur a/build/pgo/profileserver.py b/build/pgo/profileserver.py
+--- a/build/pgo/profileserver.py 2023-01-12 22:01:59.000000000 +0200
++++ b/build/pgo/profileserver.py 2023-01-17 06:56:38.260296740 +0200
+@@ -11,7 +11,7 @@
+ import sys
+
+ import mozcrash
+-from mozbuild.base import BinaryNotFoundException, MozbuildObject
++from mozbuild.base import BinaryNotFoundException, MozbuildObject,
BuildEnvironmentNotFoundException
+ from mozfile import TemporaryDirectory
+ from mozhttpd import MozHttpd
+ from mozprofile import FirefoxProfile, Preferences
+@@ -87,9 +87,22 @@
+ locations = ServerLocations()
+ locations.add_host(host="127.0.0.1", port=PORT,
options="primary,privileged")
+
+- old_profraw_files = glob.glob("*.profraw")
+- for f in old_profraw_files:
+- os.remove(f)
++ using_gcc = False
++ try:
++ if build.config_environment.substs.get("CC_TYPE") == "gcc":
++ using_gcc = True
++ except BuildEnvironmentNotFoundException:
++ pass
++
++ if using_gcc:
++ for dirpath, _, filenames in os.walk("."):
++ for f in filenames:
++ if f.endswith(".gcda"):
++ os.remove(os.path.join(dirpath, f))
++ else:
++ old_profraw_files = glob.glob("*.profraw")
++ for f in old_profraw_files:
++ os.remove(f)
+
+ with TemporaryDirectory() as profilePath:
+ # TODO: refactor this into mozprofile
+@@ -213,6 +226,11 @@
+ print("Firefox exited successfully, but produced a crashreport")
+ sys.exit(1)
+
++ if using_gcc:
++ print("Copying profile data...")
++ os.system("pwd");
++ os.system('tar cf profdata.tar.gz `find . -name "*.gcda"`; cd
..; tar xf instrumented/profdata.tar.gz;');
++
+ llvm_profdata = env.get("LLVM_PROFDATA")
+ if llvm_profdata:
+ profraw_files = glob.glob("*.profraw")
diff --git
a/http/firefox/patches/0030-bmo-1775202-ppc64-webrtc-missing-conditions-109.patch
b/http/firefox/patches/0030-bmo-1775202-ppc64-webrtc-missing-conditions-109.patch
new file mode 100644
index 0000000..1203476
--- /dev/null
+++
b/http/firefox/patches/0030-bmo-1775202-ppc64-webrtc-missing-conditions-109.patch
@@ -0,0 +1,16 @@
+diff --git a/third_party/libwebrtc/moz.build
b/third_party/libwebrtc/moz.build
+index 8579f8bb3622..d9ca79d4fcb8 100644
+--- a/third_party/libwebrtc/moz.build
++++ b/third_party/libwebrtc/moz.build
+@@ -520,7 +520,9 @@ if CONFIG["CPU_ARCH"] == "ppc64" and CONFIG["OS_TARGET"]
== "Linux":
+
"/third_party/libwebrtc/api/audio_codecs/isac/audio_decoder_isac_float_gn",
+
"/third_party/libwebrtc/api/audio_codecs/isac/audio_encoder_isac_float_gn",
+ "/third_party/libwebrtc/modules/audio_coding/isac_c_gn",
+- "/third_party/libwebrtc/modules/audio_coding/isac_gn"
++ "/third_party/libwebrtc/modules/audio_coding/isac_gn",
++ "/third_party/libwebrtc/modules/desktop_capture/desktop_capture_gn",
++ "/third_party/libwebrtc/modules/desktop_capture/primitives_gn"
+ ]
+
+ if CONFIG["CPU_ARCH"] == "x86" and CONFIG["OS_TARGET"] == "Linux":
+
diff --git
a/http/firefox/patches/0030-qm-qm-fix-sqlite3-on-ppc-with-clang.patch
b/http/firefox/patches/0030-qm-qm-fix-sqlite3-on-ppc-with-clang.patch
deleted file mode 100644
index 51f7faa..0000000
--- a/http/firefox/patches/0030-qm-qm-fix-sqlite3-on-ppc-with-clang.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 67157b1aa7da0a146b7d2d5abb9237eea1f434ec Mon Sep 17 00:00:00 2001
-From: Daniel Kolesa <daniel AT octaforge.org>
-Date: Fri, 23 Sep 2022 02:38:29 +0200
-Subject: [PATCH] fix sqlite3 on ppc with clang
-
-The __ppc__ macro is always defined on clang but not gcc, which
-results in sqlite mistakenly thinking that ppc64le with clang
-is big endian.
-
-Also disable some inline assembly stuff on ppc that is never used
-with gcc and probably was never tested with modern machines.
----
- third_party/sqlite3/src/sqlite3.c | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/third_party/sqlite3/src/sqlite3.c
b/third_party/sqlite3/src/sqlite3.c
-index 4f3dc68..9017062 100644
---- a/third_party/sqlite3/src/sqlite3.c
-+++ b/third_party/sqlite3/src/sqlite3.c
-@@ -14317,9 +14317,9 @@ typedef INT16_TYPE LogEst;
- # if defined(i386) || defined(__i386__) || defined(_M_IX86) ||
\
- defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) ||
\
- defined(_M_AMD64) || defined(_M_ARM) || defined(__x86) ||
\
-- defined(__ARMEL__) || defined(__AARCH64EL__) || defined(_M_ARM64)
-+ defined(__ARMEL__) || defined(__AARCH64EL__) || defined(_M_ARM64) ||
defined(__LITTLE_ENDIAN__)
- # define SQLITE_BYTEORDER 1234
--# elif defined(sparc) || defined(__ppc__) || \
-+# elif defined(sparc) || defined(__BIG_ENDIAN__) || \
- defined(__ARMEB__) || defined(__AARCH64EB__)
- # define SQLITE_BYTEORDER 4321
- # else
-@@ -20713,7 +20713,7 @@ SQLITE_PRIVATE const char
**sqlite3CompileOptions(int *pnOpt);
- return val;
- }
-
--#elif !defined(__STRICT_ANSI__) && (defined(__GNUC__) && defined(__ppc__))
-+#elif 0
-
- __inline__ sqlite_uint64 sqlite3Hwtime(void){
- unsigned long long retval;
-@@ -196385,9 +196385,9 @@ struct RtreeMatchArg {
- #if defined(i386) || defined(__i386__) || defined(_M_IX86) || \
- defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) || \
- defined(_M_AMD64) || defined(_M_ARM) || defined(__x86) || \
-- defined(__arm__)
-+ defined(__arm__) || defined(__LITTLE_ENDIAN__)
- # define SQLITE_BYTEORDER 1234
--#elif defined(sparc) || defined(__ppc__)
-+#elif defined(sparc) || defined(__BIG_ENDIAN__)
- # define SQLITE_BYTEORDER 4321
- #else
- # define SQLITE_BYTEORDER 0 /* 0 means "unknown at compile-time" */
---
-2.37.3
-
diff --git
a/http/firefox/patches/0031-bmo-1822728-increase-child-process-shutdown-timeout.patch
b/http/firefox/patches/0031-bmo-1822728-increase-child-process-shutdown-timeout.patch
new file mode 100644
index 0000000..20e0bef
--- /dev/null
+++
b/http/firefox/patches/0031-bmo-1822728-increase-child-process-shutdown-timeout.patch
@@ -0,0 +1,37 @@
+
+# HG changeset patch
+# User Jed Davis <jld AT mozilla.com>
+# Date 1679344351 0
+# Node ID 7e9a0b039a2ba0bc9c418ee10aaede4b84b15e1c
+# Parent 02b47d7b0b13baf7892834a6073ecd453cd5c0db
+Bug 1822728 - Increase the child process shutdown timeout for Unix ccov
builds. r=ipc-reviewers,nika
+
+Differential Revision: https://phabricator.services.mozilla.com/D172752
+
+diff --git a/ipc/chromium/src/chrome/common/process_watcher_posix_sigchld.cc
b/ipc/chromium/src/chrome/common/process_watcher_posix_sigchld.cc
+--- a/ipc/chromium/src/chrome/common/process_watcher_posix_sigchld.cc
++++ b/ipc/chromium/src/chrome/common/process_watcher_posix_sigchld.cc
+@@ -20,17 +20,21 @@
+
+ // Maximum amount of time (in milliseconds) to wait for the process to exit.
+ // XXX/cjones: fairly arbitrary, chosen to match process_watcher_win.cc
+ static constexpr int kMaxWaitMs = 2000;
+
+ // This is also somewhat arbitrary, but loosely based on Try results.
+ // See also toolkit.asyncshutdown.crash_timeout (currently 60s) after
+ // which the parent process will be killed.
+-#if defined(MOZ_ASAN) || defined(MOZ_TSAN)
++#ifdef MOZ_CODE_COVERAGE
++// Code coverage instrumentation can be slow (especially when writing
++// out data, which has to take a lock on the data files).
++static constexpr int kShutdownWaitMs = 80000;
++#elif defined(MOZ_ASAN) || defined(MOZ_TSAN)
+ // Sanitizers slow things down in some cases; see bug 1806224.
+ static constexpr int kShutdownWaitMs = 40000;
+ #else
+ static constexpr int kShutdownWaitMs = 8000;
+ #endif
+
+ namespace {
+
+
diff --git a/http/firefox/patches/0031-fix-building-gcc-pgo.patch
b/http/firefox/patches/0031-fix-building-gcc-pgo.patch
deleted file mode 100644
index eb520b4..0000000
--- a/http/firefox/patches/0031-fix-building-gcc-pgo.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-diff -Naur a/build/pgo/profileserver.py b/build/pgo/profileserver.py
---- a/build/pgo/profileserver.py 2023-01-12 22:01:59.000000000 +0200
-+++ b/build/pgo/profileserver.py 2023-01-17 06:56:38.260296740 +0200
-@@ -11,7 +11,7 @@
- import sys
-
- import mozcrash
--from mozbuild.base import BinaryNotFoundException, MozbuildObject
-+from mozbuild.base import BinaryNotFoundException, MozbuildObject,
BuildEnvironmentNotFoundException
- from mozfile import TemporaryDirectory
- from mozhttpd import MozHttpd
- from mozprofile import FirefoxProfile, Preferences
-@@ -87,9 +87,22 @@
- locations = ServerLocations()
- locations.add_host(host="127.0.0.1", port=PORT,
options="primary,privileged")
-
-- old_profraw_files = glob.glob("*.profraw")
-- for f in old_profraw_files:
-- os.remove(f)
-+ using_gcc = False
-+ try:
-+ if build.config_environment.substs.get("CC_TYPE") == "gcc":
-+ using_gcc = True
-+ except BuildEnvironmentNotFoundException:
-+ pass
-+
-+ if using_gcc:
-+ for dirpath, _, filenames in os.walk("."):
-+ for f in filenames:
-+ if f.endswith(".gcda"):
-+ os.remove(os.path.join(dirpath, f))
-+ else:
-+ old_profraw_files = glob.glob("*.profraw")
-+ for f in old_profraw_files:
-+ os.remove(f)
-
- with TemporaryDirectory() as profilePath:
- # TODO: refactor this into mozprofile
-@@ -213,6 +226,11 @@
- print("Firefox exited successfully, but produced a crashreport")
- sys.exit(1)
-
-+ if using_gcc:
-+ print("Copying profile data...")
-+ os.system("pwd");
-+ os.system('tar cf profdata.tar.gz `find . -name "*.gcda"`; cd
..; tar xf instrumented/profdata.tar.gz;');
-+
- llvm_profdata = env.get("LLVM_PROFDATA")
- if llvm_profdata:
- profraw_files = glob.glob("*.profraw")
diff --git
a/http/firefox/patches/0032-bmo-1775202-ppc64-webrtc-missing-conditions-109.patch
b/http/firefox/patches/0032-bmo-1775202-ppc64-webrtc-missing-conditions-109.patch
deleted file mode 100644
index 1203476..0000000
---
a/http/firefox/patches/0032-bmo-1775202-ppc64-webrtc-missing-conditions-109.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-diff --git a/third_party/libwebrtc/moz.build
b/third_party/libwebrtc/moz.build
-index 8579f8bb3622..d9ca79d4fcb8 100644
---- a/third_party/libwebrtc/moz.build
-+++ b/third_party/libwebrtc/moz.build
-@@ -520,7 +520,9 @@ if CONFIG["CPU_ARCH"] == "ppc64" and CONFIG["OS_TARGET"]
== "Linux":
-
"/third_party/libwebrtc/api/audio_codecs/isac/audio_decoder_isac_float_gn",
-
"/third_party/libwebrtc/api/audio_codecs/isac/audio_encoder_isac_float_gn",
- "/third_party/libwebrtc/modules/audio_coding/isac_c_gn",
-- "/third_party/libwebrtc/modules/audio_coding/isac_gn"
-+ "/third_party/libwebrtc/modules/audio_coding/isac_gn",
-+ "/third_party/libwebrtc/modules/desktop_capture/desktop_capture_gn",
-+ "/third_party/libwebrtc/modules/desktop_capture/primitives_gn"
- ]
-
- if CONFIG["CPU_ARCH"] == "x86" and CONFIG["OS_TARGET"] == "Linux":
-
diff --git
a/http/firefox/patches/0032-bmo-1826583-dont-crash-on-wayland-log-handler.patch
b/http/firefox/patches/0032-bmo-1826583-dont-crash-on-wayland-log-handler.patch
new file mode 100644
index 0000000..6be16ab
--- /dev/null
+++
b/http/firefox/patches/0032-bmo-1826583-dont-crash-on-wayland-log-handler.patch
@@ -0,0 +1,27 @@
+diff --git a/widget/gtk/nsWaylandDisplay.cpp
b/widget/gtk/nsWaylandDisplay.cpp
+--- a/widget/gtk/nsWaylandDisplay.cpp
++++ b/widget/gtk/nsWaylandDisplay.cpp
+@@ -288,19 +288,19 @@
+
+ bool nsWaylandDisplay::Matches(wl_display* aDisplay) {
+ return mThreadId == PR_GetCurrentThread() && aDisplay == mDisplay;
+ }
+
+-static void WlCrashHandler(const char* format, va_list args) {
+- MOZ_CRASH_UNSAFE(g_strdup_vprintf(format, args));
++static void WlLogHandler(const char* format, va_list args) {
++ vfprintf(stderr, format, args);
+ }
+
+ nsWaylandDisplay::nsWaylandDisplay(wl_display* aDisplay)
+ : mThreadId(PR_GetCurrentThread()), mDisplay(aDisplay) {
+ // GTK sets the log handler on display creation, thus we overwrite it here
+ // in a similar fashion
+- wl_log_set_handler_client(WlCrashHandler);
++ wl_log_set_handler_client(WlLogHandler);
+
+ wl_registry* registry = wl_display_get_registry(mDisplay);
+ wl_registry_add_listener(registry, ®istry_listener, this);
+ if (!NS_IsMainThread()) {
+ mEventQueue = wl_display_create_queue(mDisplay);
+
diff --git
a/http/firefox/patches/0033-bmo-1821363-use-fully-specified-xsimd-batch.patch
b/http/firefox/patches/0033-bmo-1821363-use-fully-specified-xsimd-batch.patch
deleted file mode 100644
index 22e9633..0000000
---
a/http/firefox/patches/0033-bmo-1821363-use-fully-specified-xsimd-batch.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-
-# HG changeset patch
-# User serge-sans-paille <sguelton AT mozilla.com>
-# Date 1678865227 0
-# Node ID cbc55e58a4b14ab484486c72a47f595fa223336b
-# Parent 7d86c3224520ce8b5c53ebd7122671f0f69fb796
-Bug 1821363 - Use fully specified xsimd::batch type r=padenot, a=dsmith
-
-That way we cannot have one type using the default architecture that
-interacts with the parametric type required by the user.
-
-Differential Revision: https://phabricator.services.mozilla.com/D172126
-
-diff --git a/dom/media/webaudio/AudioNodeEngineGeneric.h
b/dom/media/webaudio/AudioNodeEngineGeneric.h
---- a/dom/media/webaudio/AudioNodeEngineGeneric.h
-+++ b/dom/media/webaudio/AudioNodeEngineGeneric.h
-@@ -200,20 +200,20 @@ struct Engine {
- MOZ_ASSERT(is_aligned<Arch>(aInput), "aInput is aligned");
- MOZ_ASSERT(is_aligned<Arch>(aOutput), "aOutput is aligned");
- MOZ_ASSERT(is_aligned<Arch>(aScale), "aScale is aligned");
- MOZ_ASSERT((aSize % xsimd::batch<float, Arch>::size == 0),
- "requires tail processing");
-
- MOZ_UNROLL(2)
- for (unsigned i = 0; i < aSize * 2;
-- i += 2 * xsimd::batch<std::complex<float>>::size) {
-- auto in1 = xsimd::batch<std::complex<float>>::load_aligned(
-+ i += 2 * xsimd::batch<std::complex<float>, Arch>::size) {
-+ auto in1 = xsimd::batch<std::complex<float>, Arch>::load_aligned(
- reinterpret_cast<const std::complex<float>*>(&aInput[i]));
-- auto in2 = xsimd::batch<std::complex<float>>::load_aligned(
-+ auto in2 = xsimd::batch<std::complex<float>, Arch>::load_aligned(
- reinterpret_cast<const std::complex<float>*>(&aScale[i]));
- auto out = in1 * in2;
-
out.store_aligned(reinterpret_cast<std::complex<float>*>(&aOutput[i]));
- }
- };
-
- static float AudioBufferSumOfSquares(const float* aInput, uint32_t
aLength) {
- float sum = 0.f;
-
diff --git
a/http/firefox/patches/0034-bmo-1822901-declare-arch-specific-xsimd-specialization.patch
b/http/firefox/patches/0034-bmo-1822901-declare-arch-specific-xsimd-specialization.patch
deleted file mode 100644
index 30809a0..0000000
---
a/http/firefox/patches/0034-bmo-1822901-declare-arch-specific-xsimd-specialization.patch
+++ /dev/null
@@ -1,755 +0,0 @@
-
-# HG changeset patch
-# User serge-sans-paille <sguelton AT mozilla.com>
-# Date 1679317658 0
-# Node ID 403ac74192e3c477f0802b76a5f13f348f651269
-# Parent cbc55e58a4b14ab484486c72a47f595fa223336b
-Bug 1822901 - Forward declare arch-specific xsimd specialization r=padenot,
a=dsmith
-
-Otherwise the compiler tries to instantiate the generic version based on
-its current architecture flags, which may not be enough, resulting in
-error along those lines:
-
- 'xsimd::batch<float, xsimd::neon> vgainr' has incomplete type
-
-Differential Revision: https://phabricator.services.mozilla.com/D172864
-
-diff --git a/dom/media/webaudio/AudioNodeEngineGeneric.h
b/dom/media/webaudio/AudioNodeEngineGeneric.h
---- a/dom/media/webaudio/AudioNodeEngineGeneric.h
-+++ b/dom/media/webaudio/AudioNodeEngineGeneric.h
-@@ -2,334 +2,57 @@
- /* this source code form is subject to the terms of the mozilla public
- * license, v. 2.0. if a copy of the mpl was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/. */
-
- #ifndef MOZILLA_AUDIONODEENGINEGENERIC_H_
- #define MOZILLA_AUDIONODEENGINEGENERIC_H_
-
- #include "AudioNodeEngine.h"
--#include "AlignmentUtils.h"
-
- #include "xsimd/xsimd.hpp"
-
--#if defined(__GNUC__) && __GNUC__ > 7
--# define MOZ_PRAGMA(tokens) _Pragma(#tokens)
--# define MOZ_UNROLL(factor) MOZ_PRAGMA(GCC unroll factor)
--#elif defined(__INTEL_COMPILER) || (defined(__clang__) && __clang_major__ >
3)
--# define MOZ_PRAGMA(tokens) _Pragma(#tokens)
--# define MOZ_UNROLL(factor) MOZ_PRAGMA(unroll factor)
--#else
--# define MOZ_UNROLL(_)
--#endif
--
- namespace mozilla {
-
- template <class Arch>
--static bool is_aligned(const void* ptr) {
-- return (reinterpret_cast<uintptr_t>(ptr) &
-- ~(static_cast<uintptr_t>(Arch::alignment()) - 1)) ==
-- reinterpret_cast<uintptr_t>(ptr);
--};
--
--template <class Arch>
- struct Engine {
- static void AudioBufferAddWithScale(const float* aInput, float aScale,
-- float* aOutput, uint32_t aSize) {
-- if constexpr (Arch::requires_alignment()) {
-- if (aScale == 1.0f) {
-- while (!is_aligned<Arch>(aInput) || !is_aligned<Arch>(aOutput)) {
-- if (!aSize) return;
-- *aOutput += *aInput;
-- ++aOutput;
-- ++aInput;
-- --aSize;
-- }
-- } else {
-- while (!is_aligned<Arch>(aInput) || !is_aligned<Arch>(aOutput)) {
-- if (!aSize) return;
-- *aOutput += *aInput * aScale;
-- ++aOutput;
-- ++aInput;
-- --aSize;
-- }
-- }
-- }
-- MOZ_ASSERT(is_aligned<Arch>(aInput), "aInput is aligned");
-- MOZ_ASSERT(is_aligned<Arch>(aOutput), "aOutput is aligned");
--
-- xsimd::batch<float, Arch> vgain(aScale);
--
-- uint32_t aVSize = aSize & ~(xsimd::batch<float, Arch>::size - 1);
-- MOZ_UNROLL(4)
-- for (unsigned i = 0; i < aVSize; i += xsimd::batch<float, Arch>::size) {
-- auto vin1 = xsimd::batch<float, Arch>::load_aligned(&aInput[i]);
-- auto vin2 = xsimd::batch<float, Arch>::load_aligned(&aOutput[i]);
-- auto vout = xsimd::fma(vin1, vgain, vin2);
-- vout.store_aligned(&aOutput[i]);
-- }
--
-- for (unsigned i = aVSize; i < aSize; ++i) {
-- aOutput[i] += aInput[i] * aScale;
-- }
-- };
-+ float* aOutput, uint32_t aSize);
-
- static void AudioBlockCopyChannelWithScale(const float* aInput, float
aScale,
-- float* aOutput) {
-- MOZ_ASSERT(is_aligned<Arch>(aInput), "aInput is aligned");
-- MOZ_ASSERT(is_aligned<Arch>(aOutput), "aOutput is aligned");
--
-- MOZ_ASSERT((WEBAUDIO_BLOCK_SIZE % xsimd::batch<float, Arch>::size == 0),
-- "requires tail processing");
--
-- xsimd::batch<float, Arch> vgain = (aScale);
--
-- MOZ_UNROLL(4)
-- for (unsigned i = 0; i < WEBAUDIO_BLOCK_SIZE;
-- i += xsimd::batch<float, Arch>::size) {
-- auto vin = xsimd::batch<float, Arch>::load_aligned(&aInput[i]);
-- auto vout = vin * vgain;
-- vout.store_aligned(&aOutput[i]);
-- }
-- };
-+ float* aOutput);
-
- static void AudioBlockCopyChannelWithScale(
- const float aInput[WEBAUDIO_BLOCK_SIZE],
- const float aScale[WEBAUDIO_BLOCK_SIZE],
-- float aOutput[WEBAUDIO_BLOCK_SIZE]) {
-- MOZ_ASSERT(is_aligned<Arch>(aInput), "aInput is aligned");
-- MOZ_ASSERT(is_aligned<Arch>(aOutput), "aOutput is aligned");
-- MOZ_ASSERT(is_aligned<Arch>(aScale), "aScale is aligned");
--
-- MOZ_ASSERT((WEBAUDIO_BLOCK_SIZE % xsimd::batch<float, Arch>::size == 0),
-- "requires tail processing");
--
-- MOZ_UNROLL(4)
-- for (unsigned i = 0; i < WEBAUDIO_BLOCK_SIZE;
-- i += xsimd::batch<float, Arch>::size) {
-- auto vscaled = xsimd::batch<float, Arch>::load_aligned(&aScale[i]);
-- auto vin = xsimd::batch<float, Arch>::load_aligned(&aInput[i]);
-- auto vout = vin * vscaled;
-- vout.store_aligned(&aOutput[i]);
-- }
-- };
-+ float aOutput[WEBAUDIO_BLOCK_SIZE]);
-
- static void AudioBufferInPlaceScale(float* aBlock, float aScale,
-- uint32_t aSize) {
-- MOZ_ASSERT(is_aligned<Arch>(aBlock), "aBlock is aligned");
--
-- xsimd::batch<float, Arch> vgain(aScale);
--
-- uint32_t aVSize = aSize & ~(xsimd::batch<float, Arch>::size - 1);
-- MOZ_UNROLL(4)
-- for (unsigned i = 0; i < aVSize; i += xsimd::batch<float, Arch>::size) {
-- auto vin = xsimd::batch<float, Arch>::load_aligned(&aBlock[i]);
-- auto vout = vin * vgain;
-- vout.store_aligned(&aBlock[i]);
-- }
-- for (unsigned i = aVSize; i < aSize; ++i) aBlock[i] *= aScale;
-- };
-+ uint32_t aSize);
-
- static void AudioBufferInPlaceScale(float* aBlock, float* aScale,
-- uint32_t aSize) {
-- MOZ_ASSERT(is_aligned<Arch>(aBlock), "aBlock is aligned");
-- MOZ_ASSERT(is_aligned<Arch>(aScale), "aScale is aligned");
--
-- uint32_t aVSize = aSize & ~(xsimd::batch<float, Arch>::size - 1);
-- MOZ_UNROLL(4)
-- for (unsigned i = 0; i < aVSize; i += xsimd::batch<float, Arch>::size) {
-- auto vin = xsimd::batch<float, Arch>::load_aligned(&aBlock[i]);
-- auto vgain = xsimd::batch<float, Arch>::load_aligned(&aScale[i]);
-- auto vout = vin * vgain;
-- vout.store_aligned(&aBlock[i]);
-- }
-- for (uint32_t i = aVSize; i < aSize; ++i) {
-- *aBlock++ *= *aScale++;
-- }
-- };
-+ uint32_t aSize);
-
- static void AudioBlockPanStereoToStereo(
- const float aInputL[WEBAUDIO_BLOCK_SIZE],
- const float aInputR[WEBAUDIO_BLOCK_SIZE], float aGainL, float aGainR,
- bool aIsOnTheLeft, float aOutputL[WEBAUDIO_BLOCK_SIZE],
-- float aOutputR[WEBAUDIO_BLOCK_SIZE]) {
-- MOZ_ASSERT(is_aligned<Arch>(aInputL), "aInputL is aligned");
-- MOZ_ASSERT(is_aligned<Arch>(aInputR), "aInputR is aligned");
-- MOZ_ASSERT(is_aligned<Arch>(aOutputL), "aOutputL is aligned");
-- MOZ_ASSERT(is_aligned<Arch>(aOutputR), "aOutputR is aligned");
--
-- MOZ_ASSERT((WEBAUDIO_BLOCK_SIZE % xsimd::batch<float, Arch>::size == 0),
-- "requires tail processing");
--
-- xsimd::batch<float, Arch> vgainl(aGainL);
-- xsimd::batch<float, Arch> vgainr(aGainR);
--
-- if (aIsOnTheLeft) {
-- MOZ_UNROLL(2)
-- for (unsigned i = 0; i < WEBAUDIO_BLOCK_SIZE;
-- i += xsimd::batch<float, Arch>::size) {
-- auto vinl = xsimd::batch<float, Arch>::load_aligned(&aInputL[i]);
-- auto vinr = xsimd::batch<float, Arch>::load_aligned(&aInputR[i]);
--
-- /* left channel : aOutputL = aInputL + aInputR * gainL */
-- auto vout = xsimd::fma(vinr, vgainl, vinl);
-- vout.store_aligned(&aOutputL[i]);
--
-- /* right channel : aOutputR = aInputR * gainR */
-- auto vscaled = vinr * vgainr;
-- vscaled.store_aligned(&aOutputR[i]);
-- }
-- } else {
-- MOZ_UNROLL(2)
-- for (unsigned i = 0; i < WEBAUDIO_BLOCK_SIZE;
-- i += xsimd::batch<float, Arch>::size) {
-- auto vinl = xsimd::batch<float, Arch>::load_aligned(&aInputL[i]);
-- auto vinr = xsimd::batch<float, Arch>::load_aligned(&aInputR[i]);
--
-- /* left channel : aInputL * gainL */
-- auto vscaled = vinl * vgainl;
-- vscaled.store_aligned(&aOutputL[i]);
--
-- /* right channel: aOutputR = aInputR + aInputL * gainR */
-- auto vout = xsimd::fma(vinl, vgainr, vinr);
-- vout.store_aligned(&aOutputR[i]);
-- }
-- }
-- };
-+ float aOutputR[WEBAUDIO_BLOCK_SIZE]);
-
- static void BufferComplexMultiply(const float* aInput, const float*
aScale,
-- float* aOutput, uint32_t aSize) {
-- MOZ_ASSERT(is_aligned<Arch>(aInput), "aInput is aligned");
-- MOZ_ASSERT(is_aligned<Arch>(aOutput), "aOutput is aligned");
-- MOZ_ASSERT(is_aligned<Arch>(aScale), "aScale is aligned");
-- MOZ_ASSERT((aSize % xsimd::batch<float, Arch>::size == 0),
-- "requires tail processing");
--
-- MOZ_UNROLL(2)
-- for (unsigned i = 0; i < aSize * 2;
-- i += 2 * xsimd::batch<std::complex<float>, Arch>::size) {
-- auto in1 = xsimd::batch<std::complex<float>, Arch>::load_aligned(
-- reinterpret_cast<const std::complex<float>*>(&aInput[i]));
-- auto in2 = xsimd::batch<std::complex<float>, Arch>::load_aligned(
-- reinterpret_cast<const std::complex<float>*>(&aScale[i]));
-- auto out = in1 * in2;
--
out.store_aligned(reinterpret_cast<std::complex<float>*>(&aOutput[i]));
-- }
-- };
--
-- static float AudioBufferSumOfSquares(const float* aInput, uint32_t
aLength) {
-- float sum = 0.f;
--
-- if constexpr (Arch::requires_alignment()) {
-- while (!is_aligned<Arch>(aInput)) {
-- if (!aLength) {
-- return sum;
-- }
-- sum += *aInput * *aInput;
-- ++aInput;
-- --aLength;
-- }
-- }
--
-- MOZ_ASSERT(is_aligned<Arch>(aInput), "aInput is aligned");
--
-- constexpr uint32_t unroll_factor = 4;
-- xsimd::batch<float, Arch> accs[unroll_factor] = {0.f, 0.f, 0.f, 0.f};
--
-- uint32_t vLength =
-- aLength & ~(unroll_factor * xsimd::batch<float, Arch>::size - 1);
-+ float* aOutput, uint32_t aSize);
-
-- for (uint32_t i = 0; i < vLength;
-- i += unroll_factor * xsimd::batch<float, Arch>::size) {
-- MOZ_UNROLL(4)
-- for (uint32_t j = 0; j < unroll_factor; ++j) {
-- auto in = xsimd::batch<float, Arch>::load_aligned(
-- &aInput[i + xsimd::batch<float, Arch>::size * j]);
-- accs[j] = xsimd::fma(in, in, accs[j]);
-- }
-- }
--
-- sum += reduce_add((accs[0] + accs[1]) + (accs[2] + accs[3]));
-- for (uint32_t i = vLength; i < aLength; ++i) sum += aInput[i] *
aInput[i];
-- return sum;
-- };
-+ static float AudioBufferSumOfSquares(const float* aInput, uint32_t
aLength);
-
-- static void NaNToZeroInPlace(float* aSamples, size_t aCount) {
-- if constexpr (Arch::requires_alignment()) {
-- while (!is_aligned<Arch>(aSamples)) {
-- if (!aCount) {
-- return;
-- }
-- if (*aSamples != *aSamples) {
-- *aSamples = 0.0;
-- }
-- ++aSamples;
-- --aCount;
-- }
-- }
--
-- MOZ_ASSERT(is_aligned<Arch>(aSamples), "aSamples is aligned");
--
-- uint32_t vCount = aCount & ~(xsimd::batch<float, Arch>::size - 1);
--
-- MOZ_UNROLL(4)
-- for (uint32_t i = 0; i < vCount; i += xsimd::batch<float, Arch>::size) {
-- auto vin = xsimd::batch<float, Arch>::load_aligned(&aSamples[i]);
-- auto vout =
-- xsimd::select(xsimd::isnan(vin), xsimd::batch<float, Arch>(0.f),
vin);
-- vout.store_aligned(&aSamples[i]);
-- }
--
-- for (uint32_t i = vCount; i < aCount; i++) {
-- if (aSamples[i] != aSamples[i]) {
-- aSamples[i] = 0.0;
-- }
-- }
-- };
-+ static void NaNToZeroInPlace(float* aSamples, size_t aCount);
-
- static void AudioBlockPanStereoToStereo(
- const float aInputL[WEBAUDIO_BLOCK_SIZE],
- const float aInputR[WEBAUDIO_BLOCK_SIZE],
- const float aGainL[WEBAUDIO_BLOCK_SIZE],
- const float aGainR[WEBAUDIO_BLOCK_SIZE],
- const bool aIsOnTheLeft[WEBAUDIO_BLOCK_SIZE],
-- float aOutputL[WEBAUDIO_BLOCK_SIZE],
-- float aOutputR[WEBAUDIO_BLOCK_SIZE]) {
-- MOZ_ASSERT(is_aligned<Arch>(aInputL), "aInputL is aligned");
-- MOZ_ASSERT(is_aligned<Arch>(aInputR), "aInputR is aligned");
-- MOZ_ASSERT(is_aligned<Arch>(aGainL), "aGainL is aligned");
-- MOZ_ASSERT(is_aligned<Arch>(aGainR), "aGainR is aligned");
-- MOZ_ASSERT(is_aligned<Arch>(aIsOnTheLeft), "aIsOnTheLeft is aligned");
-- MOZ_ASSERT(is_aligned<Arch>(aOutputL), "aOutputL is aligned");
-- MOZ_ASSERT(is_aligned<Arch>(aOutputR), "aOutputR is aligned");
--
-- MOZ_ASSERT((WEBAUDIO_BLOCK_SIZE % xsimd::batch<float, Arch>::size == 0),
-- "requires tail processing");
--
-- MOZ_UNROLL(2)
-- for (uint32_t i = 0; i < WEBAUDIO_BLOCK_SIZE;
-- i += xsimd::batch<float, Arch>::size) {
-- auto mask =
-- xsimd::batch_bool<float, Arch>::load_aligned(&aIsOnTheLeft[i]);
--
-- auto inputL = xsimd::batch<float, Arch>::load_aligned(&aInputL[i]);
-- auto inputR = xsimd::batch<float, Arch>::load_aligned(&aInputR[i]);
-- auto gainL = xsimd::batch<float, Arch>::load_aligned(&aGainL[i]);
-- auto gainR = xsimd::batch<float, Arch>::load_aligned(&aGainR[i]);
--
-- auto outL_true = xsimd::fma(inputR, gainL, inputL);
-- auto outR_true = inputR * gainR;
--
-- auto outL_false = inputL * gainL;
-- auto outR_false = xsimd::fma(inputL, gainR, inputR);
--
-- auto outL = xsimd::select(mask, outL_true, outL_false);
-- auto outR = xsimd::select(mask, outR_true, outR_false);
--
-- outL.store_aligned(&aOutputL[i]);
-- outR.store_aligned(&aOutputR[i]);
-- }
-- }
-+ float aOutputL[WEBAUDIO_BLOCK_SIZE], float
aOutputR[WEBAUDIO_BLOCK_SIZE]);
- };
-
- } // namespace mozilla
-
- #endif
-diff --git a/dom/media/webaudio/AudioNodeEngineGenericImpl.h
b/dom/media/webaudio/AudioNodeEngineGenericImpl.h
-new file mode 100644
---- /dev/null
-+++ b/dom/media/webaudio/AudioNodeEngineGenericImpl.h
-@@ -0,0 +1,341 @@
-+/* -*- mode: c++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2
-*- */
-+/* this source code form is subject to the terms of the mozilla public
-+ * license, v. 2.0. if a copy of the mpl was not distributed with this file,
-+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
-+
-+#ifndef MOZILLA_AUDIONODEENGINEGENERICIMPL_H_
-+#define MOZILLA_AUDIONODEENGINEGENERICIMPL_H_
-+
-+#include "AudioNodeEngineGeneric.h"
-+#include "AlignmentUtils.h"
-+
-+#if defined(__GNUC__) && __GNUC__ > 7
-+# define MOZ_PRAGMA(tokens) _Pragma(#tokens)
-+# define MOZ_UNROLL(factor) MOZ_PRAGMA(GCC unroll factor)
-+#elif defined(__INTEL_COMPILER) || (defined(__clang__) && __clang_major__ >
3)
-+# define MOZ_PRAGMA(tokens) _Pragma(#tokens)
-+# define MOZ_UNROLL(factor) MOZ_PRAGMA(unroll factor)
-+#else
-+# define MOZ_UNROLL(_)
-+#endif
-+
-+namespace mozilla {
-+
-+template <class Arch>
-+static bool is_aligned(const void* ptr) {
-+ return (reinterpret_cast<uintptr_t>(ptr) &
-+ ~(static_cast<uintptr_t>(Arch::alignment()) - 1)) ==
-+ reinterpret_cast<uintptr_t>(ptr);
-+};
-+
-+template <class Arch>
-+void Engine<Arch>::AudioBufferAddWithScale(const float* aInput, float
aScale,
-+ float* aOutput, uint32_t aSize) {
-+ if constexpr (Arch::requires_alignment()) {
-+ if (aScale == 1.0f) {
-+ while (!is_aligned<Arch>(aInput) || !is_aligned<Arch>(aOutput)) {
-+ if (!aSize) return;
-+ *aOutput += *aInput;
-+ ++aOutput;
-+ ++aInput;
-+ --aSize;
-+ }
-+ } else {
-+ while (!is_aligned<Arch>(aInput) || !is_aligned<Arch>(aOutput)) {
-+ if (!aSize) return;
-+ *aOutput += *aInput * aScale;
-+ ++aOutput;
-+ ++aInput;
-+ --aSize;
-+ }
-+ }
-+ }
-+ MOZ_ASSERT(is_aligned<Arch>(aInput), "aInput is aligned");
-+ MOZ_ASSERT(is_aligned<Arch>(aOutput), "aOutput is aligned");
-+
-+ xsimd::batch<float, Arch> vgain(aScale);
-+
-+ uint32_t aVSize = aSize & ~(xsimd::batch<float, Arch>::size - 1);
-+ MOZ_UNROLL(4)
-+ for (unsigned i = 0; i < aVSize; i += xsimd::batch<float, Arch>::size) {
-+ auto vin1 = xsimd::batch<float, Arch>::load_aligned(&aInput[i]);
-+ auto vin2 = xsimd::batch<float, Arch>::load_aligned(&aOutput[i]);
-+ auto vout = xsimd::fma(vin1, vgain, vin2);
-+ vout.store_aligned(&aOutput[i]);
-+ }
-+
-+ for (unsigned i = aVSize; i < aSize; ++i) {
-+ aOutput[i] += aInput[i] * aScale;
-+ }
-+}
-+
-+template <class Arch>
-+void Engine<Arch>::AudioBlockCopyChannelWithScale(const float* aInput,
-+ float aScale,
-+ float* aOutput) {
-+ MOZ_ASSERT(is_aligned<Arch>(aInput), "aInput is aligned");
-+ MOZ_ASSERT(is_aligned<Arch>(aOutput), "aOutput is aligned");
-+
-+ MOZ_ASSERT((WEBAUDIO_BLOCK_SIZE % xsimd::batch<float, Arch>::size == 0),
-+ "requires tail processing");
-+
-+ xsimd::batch<float, Arch> vgain = (aScale);
-+
-+ MOZ_UNROLL(4)
-+ for (unsigned i = 0; i < WEBAUDIO_BLOCK_SIZE;
-+ i += xsimd::batch<float, Arch>::size) {
-+ auto vin = xsimd::batch<float, Arch>::load_aligned(&aInput[i]);
-+ auto vout = vin * vgain;
-+ vout.store_aligned(&aOutput[i]);
-+ }
-+};
-+
-+template <class Arch>
-+void Engine<Arch>::AudioBlockCopyChannelWithScale(
-+ const float aInput[WEBAUDIO_BLOCK_SIZE],
-+ const float aScale[WEBAUDIO_BLOCK_SIZE],
-+ float aOutput[WEBAUDIO_BLOCK_SIZE]) {
-+ MOZ_ASSERT(is_aligned<Arch>(aInput), "aInput is aligned");
-+ MOZ_ASSERT(is_aligned<Arch>(aOutput), "aOutput is aligned");
-+ MOZ_ASSERT(is_aligned<Arch>(aScale), "aScale is aligned");
-+
-+ MOZ_ASSERT((WEBAUDIO_BLOCK_SIZE % xsimd::batch<float, Arch>::size == 0),
-+ "requires tail processing");
-+
-+ MOZ_UNROLL(4)
-+ for (unsigned i = 0; i < WEBAUDIO_BLOCK_SIZE;
-+ i += xsimd::batch<float, Arch>::size) {
-+ auto vscaled = xsimd::batch<float, Arch>::load_aligned(&aScale[i]);
-+ auto vin = xsimd::batch<float, Arch>::load_aligned(&aInput[i]);
-+ auto vout = vin * vscaled;
-+ vout.store_aligned(&aOutput[i]);
-+ }
-+};
-+
-+template <class Arch>
-+void Engine<Arch>::AudioBufferInPlaceScale(float* aBlock, float aScale,
-+ uint32_t aSize) {
-+ MOZ_ASSERT(is_aligned<Arch>(aBlock), "aBlock is aligned");
-+
-+ xsimd::batch<float, Arch> vgain(aScale);
-+
-+ uint32_t aVSize = aSize & ~(xsimd::batch<float, Arch>::size - 1);
-+ MOZ_UNROLL(4)
-+ for (unsigned i = 0; i < aVSize; i += xsimd::batch<float, Arch>::size) {
-+ auto vin = xsimd::batch<float, Arch>::load_aligned(&aBlock[i]);
-+ auto vout = vin * vgain;
-+ vout.store_aligned(&aBlock[i]);
-+ }
-+ for (unsigned i = aVSize; i < aSize; ++i) aBlock[i] *= aScale;
-+};
-+
-+template <class Arch>
-+void Engine<Arch>::AudioBufferInPlaceScale(float* aBlock, float* aScale,
-+ uint32_t aSize) {
-+ MOZ_ASSERT(is_aligned<Arch>(aBlock), "aBlock is aligned");
-+ MOZ_ASSERT(is_aligned<Arch>(aScale), "aScale is aligned");
-+
-+ uint32_t aVSize = aSize & ~(xsimd::batch<float, Arch>::size - 1);
-+ MOZ_UNROLL(4)
-+ for (unsigned i = 0; i < aVSize; i += xsimd::batch<float, Arch>::size) {
-+ auto vin = xsimd::batch<float, Arch>::load_aligned(&aBlock[i]);
-+ auto vgain = xsimd::batch<float, Arch>::load_aligned(&aScale[i]);
-+ auto vout = vin * vgain;
-+ vout.store_aligned(&aBlock[i]);
-+ }
-+ for (uint32_t i = aVSize; i < aSize; ++i) {
-+ *aBlock++ *= *aScale++;
-+ }
-+};
-+
-+template <class Arch>
-+void Engine<Arch>::AudioBlockPanStereoToStereo(
-+ const float aInputL[WEBAUDIO_BLOCK_SIZE],
-+ const float aInputR[WEBAUDIO_BLOCK_SIZE], float aGainL, float aGainR,
-+ bool aIsOnTheLeft, float aOutputL[WEBAUDIO_BLOCK_SIZE],
-+ float aOutputR[WEBAUDIO_BLOCK_SIZE]) {
-+ MOZ_ASSERT(is_aligned<Arch>(aInputL), "aInputL is aligned");
-+ MOZ_ASSERT(is_aligned<Arch>(aInputR), "aInputR is aligned");
-+ MOZ_ASSERT(is_aligned<Arch>(aOutputL), "aOutputL is aligned");
-+ MOZ_ASSERT(is_aligned<Arch>(aOutputR), "aOutputR is aligned");
-+
-+ MOZ_ASSERT((WEBAUDIO_BLOCK_SIZE % xsimd::batch<float, Arch>::size == 0),
-+ "requires tail processing");
-+
-+ xsimd::batch<float, Arch> vgainl(aGainL);
-+ xsimd::batch<float, Arch> vgainr(aGainR);
-+
-+ if (aIsOnTheLeft) {
-+ MOZ_UNROLL(2)
-+ for (unsigned i = 0; i < WEBAUDIO_BLOCK_SIZE;
-+ i += xsimd::batch<float, Arch>::size) {
-+ auto vinl = xsimd::batch<float, Arch>::load_aligned(&aInputL[i]);
-+ auto vinr = xsimd::batch<float, Arch>::load_aligned(&aInputR[i]);
-+
-+ /* left channel : aOutputL = aInputL + aInputR * gainL */
-+ auto vout = xsimd::fma(vinr, vgainl, vinl);
-+ vout.store_aligned(&aOutputL[i]);
-+
-+ /* right channel : aOutputR = aInputR * gainR */
-+ auto vscaled = vinr * vgainr;
-+ vscaled.store_aligned(&aOutputR[i]);
-+ }
-+ } else {
-+ MOZ_UNROLL(2)
-+ for (unsigned i = 0; i < WEBAUDIO_BLOCK_SIZE;
-+ i += xsimd::batch<float, Arch>::size) {
-+ auto vinl = xsimd::batch<float, Arch>::load_aligned(&aInputL[i]);
-+ auto vinr = xsimd::batch<float, Arch>::load_aligned(&aInputR[i]);
-+
-+ /* left channel : aInputL * gainL */
-+ auto vscaled = vinl * vgainl;
-+ vscaled.store_aligned(&aOutputL[i]);
-+
-+ /* right channel: aOutputR = aInputR + aInputL * gainR */
-+ auto vout = xsimd::fma(vinl, vgainr, vinr);
-+ vout.store_aligned(&aOutputR[i]);
-+ }
-+ }
-+};
-+
-+template <class Arch>
-+void Engine<Arch>::BufferComplexMultiply(const float* aInput,
-+ const float* aScale, float*
aOutput,
-+ uint32_t aSize) {
-+ MOZ_ASSERT(is_aligned<Arch>(aInput), "aInput is aligned");
-+ MOZ_ASSERT(is_aligned<Arch>(aOutput), "aOutput is aligned");
-+ MOZ_ASSERT(is_aligned<Arch>(aScale), "aScale is aligned");
-+ MOZ_ASSERT((aSize % xsimd::batch<float, Arch>::size == 0),
-+ "requires tail processing");
-+
-+ MOZ_UNROLL(2)
-+ for (unsigned i = 0; i < aSize * 2;
-+ i += 2 * xsimd::batch<std::complex<float>, Arch>::size) {
-+ auto in1 = xsimd::batch<std::complex<float>, Arch>::load_aligned(
-+ reinterpret_cast<const std::complex<float>*>(&aInput[i]));
-+ auto in2 = xsimd::batch<std::complex<float>, Arch>::load_aligned(
-+ reinterpret_cast<const std::complex<float>*>(&aScale[i]));
-+ auto out = in1 * in2;
-+ out.store_aligned(reinterpret_cast<std::complex<float>*>(&aOutput[i]));
-+ }
-+};
-+
-+template <class Arch>
-+float Engine<Arch>::AudioBufferSumOfSquares(const float* aInput,
-+ uint32_t aLength) {
-+ float sum = 0.f;
-+
-+ if constexpr (Arch::requires_alignment()) {
-+ while (!is_aligned<Arch>(aInput)) {
-+ if (!aLength) {
-+ return sum;
-+ }
-+ sum += *aInput * *aInput;
-+ ++aInput;
-+ --aLength;
-+ }
-+ }
-+
-+ MOZ_ASSERT(is_aligned<Arch>(aInput), "aInput is aligned");
-+
-+ constexpr uint32_t unroll_factor = 4;
-+ xsimd::batch<float, Arch> accs[unroll_factor] = {0.f, 0.f, 0.f, 0.f};
-+
-+ uint32_t vLength =
-+ aLength & ~(unroll_factor * xsimd::batch<float, Arch>::size - 1);
-+
-+ for (uint32_t i = 0; i < vLength;
-+ i += unroll_factor * xsimd::batch<float, Arch>::size) {
-+ MOZ_UNROLL(4)
-+ for (uint32_t j = 0; j < unroll_factor; ++j) {
-+ auto in = xsimd::batch<float, Arch>::load_aligned(
-+ &aInput[i + xsimd::batch<float, Arch>::size * j]);
-+ accs[j] = xsimd::fma(in, in, accs[j]);
-+ }
-+ }
-+
-+ sum += reduce_add((accs[0] + accs[1]) + (accs[2] + accs[3]));
-+ for (uint32_t i = vLength; i < aLength; ++i) sum += aInput[i] * aInput[i];
-+ return sum;
-+};
-+
-+template <class Arch>
-+void Engine<Arch>::NaNToZeroInPlace(float* aSamples, size_t aCount) {
-+ if constexpr (Arch::requires_alignment()) {
-+ while (!is_aligned<Arch>(aSamples)) {
-+ if (!aCount) {
-+ return;
-+ }
-+ if (*aSamples != *aSamples) {
-+ *aSamples = 0.0;
-+ }
-+ ++aSamples;
-+ --aCount;
-+ }
-+ }
-+
-+ MOZ_ASSERT(is_aligned<Arch>(aSamples), "aSamples is aligned");
-+
-+ uint32_t vCount = aCount & ~(xsimd::batch<float, Arch>::size - 1);
-+
-+ MOZ_UNROLL(4)
-+ for (uint32_t i = 0; i < vCount; i += xsimd::batch<float, Arch>::size) {
-+ auto vin = xsimd::batch<float, Arch>::load_aligned(&aSamples[i]);
-+ auto vout =
-+ xsimd::select(xsimd::isnan(vin), xsimd::batch<float, Arch>(0.f),
vin);
-+ vout.store_aligned(&aSamples[i]);
-+ }
-+
-+ for (uint32_t i = vCount; i < aCount; i++) {
-+ if (aSamples[i] != aSamples[i]) {
-+ aSamples[i] = 0.0;
-+ }
-+ }
-+};
-+
-+template <class Arch>
-+void Engine<Arch>::AudioBlockPanStereoToStereo(
-+ const float aInputL[WEBAUDIO_BLOCK_SIZE],
-+ const float aInputR[WEBAUDIO_BLOCK_SIZE],
-+ const float aGainL[WEBAUDIO_BLOCK_SIZE],
-+ const float aGainR[WEBAUDIO_BLOCK_SIZE],
-+ const bool aIsOnTheLeft[WEBAUDIO_BLOCK_SIZE],
-+ float aOutputL[WEBAUDIO_BLOCK_SIZE], float
aOutputR[WEBAUDIO_BLOCK_SIZE]) {
-+ MOZ_ASSERT(is_aligned<Arch>(aInputL), "aInputL is aligned");
-+ MOZ_ASSERT(is_aligned<Arch>(aInputR), "aInputR is aligned");
-+ MOZ_ASSERT(is_aligned<Arch>(aGainL), "aGainL is aligned");
-+ MOZ_ASSERT(is_aligned<Arch>(aGainR), "aGainR is aligned");
-+ MOZ_ASSERT(is_aligned<Arch>(aIsOnTheLeft), "aIsOnTheLeft is aligned");
-+ MOZ_ASSERT(is_aligned<Arch>(aOutputL), "aOutputL is aligned");
-+ MOZ_ASSERT(is_aligned<Arch>(aOutputR), "aOutputR is aligned");
-+
-+ MOZ_ASSERT((WEBAUDIO_BLOCK_SIZE % xsimd::batch<float, Arch>::size == 0),
-+ "requires tail processing");
-+
-+ MOZ_UNROLL(2)
-+ for (uint32_t i = 0; i < WEBAUDIO_BLOCK_SIZE;
-+ i += xsimd::batch<float, Arch>::size) {
-+ auto mask = xsimd::batch_bool<float,
Arch>::load_aligned(&aIsOnTheLeft[i]);
-+
-+ auto inputL = xsimd::batch<float, Arch>::load_aligned(&aInputL[i]);
-+ auto inputR = xsimd::batch<float, Arch>::load_aligned(&aInputR[i]);
-+ auto gainL = xsimd::batch<float, Arch>::load_aligned(&aGainL[i]);
-+ auto gainR = xsimd::batch<float, Arch>::load_aligned(&aGainR[i]);
-+
-+ auto outL_true = xsimd::fma(inputR, gainL, inputL);
-+ auto outR_true = inputR * gainR;
-+
-+ auto outL_false = inputL * gainL;
-+ auto outR_false = xsimd::fma(inputL, gainR, inputR);
-+
-+ auto outL = xsimd::select(mask, outL_true, outL_false);
-+ auto outR = xsimd::select(mask, outR_true, outR_false);
-+
-+ outL.store_aligned(&aOutputL[i]);
-+ outR.store_aligned(&aOutputR[i]);
-+ }
-+}
-+
-+} // namespace mozilla
-+
-+#endif
-diff --git a/dom/media/webaudio/AudioNodeEngineNEON.cpp
b/dom/media/webaudio/AudioNodeEngineNEON.cpp
---- a/dom/media/webaudio/AudioNodeEngineNEON.cpp
-+++ b/dom/media/webaudio/AudioNodeEngineNEON.cpp
-@@ -1,9 +1,9 @@
- /* -*- mode: c++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2
-*- */
- /* this source code form is subject to the terms of the mozilla public
- * license, v. 2.0. if a copy of the mpl was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/. */
-
--#include "AudioNodeEngineGeneric.h"
-+#include "AudioNodeEngineGenericImpl.h"
- namespace mozilla {
- template struct Engine<xsimd::neon>;
- } // namespace mozilla
-diff --git a/dom/media/webaudio/AudioNodeEngineSSE2.cpp
b/dom/media/webaudio/AudioNodeEngineSSE2.cpp
---- a/dom/media/webaudio/AudioNodeEngineSSE2.cpp
-+++ b/dom/media/webaudio/AudioNodeEngineSSE2.cpp
-@@ -1,10 +1,10 @@
- /* -*- mode: c++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2
-*- */
- /* this source code form is subject to the terms of the mozilla public
- * license, v. 2.0. if a copy of the mpl was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/. */
-
--#include "AudioNodeEngineGeneric.h"
-+#include "AudioNodeEngineGenericImpl.h"
-
- namespace mozilla {
- template struct Engine<xsimd::sse2>;
- } // namespace mozilla
-diff --git a/dom/media/webaudio/AudioNodeEngineSSE4_2_FMA3.cpp
b/dom/media/webaudio/AudioNodeEngineSSE4_2_FMA3.cpp
---- a/dom/media/webaudio/AudioNodeEngineSSE4_2_FMA3.cpp
-+++ b/dom/media/webaudio/AudioNodeEngineSSE4_2_FMA3.cpp
-@@ -1,10 +1,10 @@
- /* -*- mode: c++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2
-*- */
- /* this source code form is subject to the terms of the mozilla public
- * license, v. 2.0. if a copy of the mpl was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/. */
-
--#include "AudioNodeEngineGeneric.h"
-+#include "AudioNodeEngineGenericImpl.h"
-
- namespace mozilla {
- template struct Engine<xsimd::fma3<xsimd::sse4_2>>;
- } // namespace mozilla
-
- [SM-Commit] GIT changes to master grimoire by Pavel Vinogradov (eb9234194fab7eb0b27a90e31aeba063966b5d06), Pavel Vinogradov, 04/11/2023
Archive powered by MHonArc 2.6.24.