summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam James <sam@gentoo.org>2023-08-10 05:06:15 +0100
committerSam James <sam@gentoo.org>2023-08-10 05:06:15 +0100
commitfa73e5fd23da1151eadc3e12abe14afbad98152d (patch)
tree5e0f3815a0d5313292f5e6874a72c3253aefe841
parentmedia-video/ffmpeg-chromium: fix build w/ binutils-2.41 (diff)
downloadgentoo-fa73e5fd23da1151eadc3e12abe14afbad98152d.tar.gz
gentoo-fa73e5fd23da1151eadc3e12abe14afbad98152d.tar.bz2
gentoo-fa73e5fd23da1151eadc3e12abe14afbad98152d.zip
media-libs/avidemux-core: fix build w/ binutils-2.41
Closes: https://bugs.gentoo.org/911986 Signed-off-by: Sam James <sam@gentoo.org>
-rw-r--r--media-libs/avidemux-core/avidemux-core-2.8.1-r1.ebuild5
-rw-r--r--media-libs/avidemux-core/files/avidemux-core-2.8.1-ffmpeg-2.41.patch84
2 files changed, 88 insertions, 1 deletions
diff --git a/media-libs/avidemux-core/avidemux-core-2.8.1-r1.ebuild b/media-libs/avidemux-core/avidemux-core-2.8.1-r1.ebuild
index bc742a9bb980..617721f52e31 100644
--- a/media-libs/avidemux-core/avidemux-core-2.8.1-r1.ebuild
+++ b/media-libs/avidemux-core/avidemux-core-2.8.1-r1.ebuild
@@ -40,7 +40,10 @@ BDEPEND="
!system-ffmpeg? ( dev-lang/yasm[nls=] )
"
-PATCHES=( "${FILESDIR}"/avidemux-core-2.7.6-ffmpeg-flags.patch )
+PATCHES=(
+ "${FILESDIR}"/avidemux-core-2.7.6-ffmpeg-flags.patch
+ "${FILESDIR}"/avidemux-core-2.8.1-ffmpeg-2.41.patch
+)
S="${WORKDIR}/avidemux2-${PV}"
CMAKE_USE_DIR="${S}/${PN/-/_}"
diff --git a/media-libs/avidemux-core/files/avidemux-core-2.8.1-ffmpeg-2.41.patch b/media-libs/avidemux-core/files/avidemux-core-2.8.1-ffmpeg-2.41.patch
new file mode 100644
index 000000000000..da444e9e1c81
--- /dev/null
+++ b/media-libs/avidemux-core/files/avidemux-core-2.8.1-ffmpeg-2.41.patch
@@ -0,0 +1,84 @@
+diff --git a/avidemux_core/ffmpeg_package/patches/libavcodec_mathops.h_binutils_241.patch b/avidemux_core/ffmpeg_package/patches/libavcodec_mathops.h_binutils_241.patch
+new file mode 100644
+index 0000000..633b4b6
+--- /dev/null
++++ b/avidemux_core/ffmpeg_package/patches/libavcodec_mathops.h_binutils_241.patch
+@@ -0,0 +1,76 @@
++https://bugs.gentoo.org/911582
++https://trac.ffmpeg.org/ticket/10405
++https://git.videolan.org/?p=ffmpeg.git;a=commit;h=25cd95a9dc3510c3cc0d7aad6f9d83f6a1078c7e
++https://sourceware.org/PR30578
++https://gcc.gnu.org/PR108941
++
++From 25cd95a9dc3510c3cc0d7aad6f9d83f6a1078c7e Mon Sep 17 00:00:00 2001
++From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= <remi@remlab.net>
++Date: Sun, 16 Jul 2023 18:18:02 +0300
++Subject: [PATCH] avcodec/x86/mathops: clip constants used with shift
++ instructions within inline assembly
++
++Fixes assembling with binutil as >= 2.41
++
++Signed-off-by: James Almer <jamrial@gmail.com>
++(cherry picked from commit effadce6c756247ea8bae32dc13bb3e6f464f0eb)
++--- libavcodec/x86/mathops.h
+++++ libavcodec/x86/mathops.h
++@@ -35,12 +35,20 @@
++ static av_always_inline av_const int MULL(int a, int b, unsigned shift)
++ {
++ int rt, dummy;
+++ if (__builtin_constant_p(shift))
++ __asm__ (
++ "imull %3 \n\t"
++ "shrdl %4, %%edx, %%eax \n\t"
++ :"=a"(rt), "=d"(dummy)
++- :"a"(a), "rm"(b), "ci"((uint8_t)shift)
+++ :"a"(a), "rm"(b), "i"(shift & 0x1F)
++ );
+++ else
+++ __asm__ (
+++ "imull %3 \n\t"
+++ "shrdl %4, %%edx, %%eax \n\t"
+++ :"=a"(rt), "=d"(dummy)
+++ :"a"(a), "rm"(b), "c"((uint8_t)shift)
+++ );
++ return rt;
++ }
++
++@@ -113,19 +121,31 @@ __asm__ volatile(\
++ // avoid +32 for shift optimization (gcc should do that ...)
++ #define NEG_SSR32 NEG_SSR32
++ static inline int32_t NEG_SSR32( int32_t a, int8_t s){
+++ if (__builtin_constant_p(s))
++ __asm__ ("sarl %1, %0\n\t"
++ : "+r" (a)
++- : "ic" ((uint8_t)(-s))
+++ : "i" (-s & 0x1F)
++ );
+++ else
+++ __asm__ ("sarl %1, %0\n\t"
+++ : "+r" (a)
+++ : "c" ((uint8_t)(-s))
+++ );
++ return a;
++ }
++
++ #define NEG_USR32 NEG_USR32
++ static inline uint32_t NEG_USR32(uint32_t a, int8_t s){
+++ if (__builtin_constant_p(s))
++ __asm__ ("shrl %1, %0\n\t"
++ : "+r" (a)
++- : "ic" ((uint8_t)(-s))
+++ : "i" (-s & 0x1F)
++ );
+++ else
+++ __asm__ ("shrl %1, %0\n\t"
+++ : "+r" (a)
+++ : "c" ((uint8_t)(-s))
+++ );
++ return a;
++ }
++
++--
++2.30.2
+--
+2.41.0