commit:     3a9e9e241e735eb9cd1a8bfe1340e8665ccd3680
Author:     WANG Xuerui <xen0n <AT> gentoo <DOT> org>
AuthorDate: Wed May 18 05:50:26 2022 +0000
Commit:     WANG Xuerui <xen0n <AT> gentoo <DOT> org>
CommitDate: Wed May 18 05:50:44 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=3a9e9e24

media-libs/gstreamer: fix build on loong

Signed-off-by: WANG Xuerui <xen0n <AT> gentoo.org>

 .../gstreamer/files/gstreamer-1.20-loong.patch     | 28 ++++++++++++++++++++++
 media-libs/gstreamer/gstreamer-1.20.2.ebuild       |  4 ++++
 2 files changed, 32 insertions(+)

diff --git a/media-libs/gstreamer/files/gstreamer-1.20-loong.patch 
b/media-libs/gstreamer/files/gstreamer-1.20-loong.patch
new file mode 100644
index 000000000000..833c217ca829
--- /dev/null
+++ b/media-libs/gstreamer/files/gstreamer-1.20-loong.patch
@@ -0,0 +1,28 @@
+https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2443,
+with file path tweaked to suit dist tarball layout.
+
+From: WANG Xuerui <[email protected]>
+Date: Wed, 18 May 2022 10:04:08 +0800
+Subject: [PATCH] gstreamer/gst/gstconfig.h.in: Add support for LoongArch
+
+While current and future LoongArch machines that are supposed to run
+GStreamer all support unaligned accesses, there might be future
+lower-end cores (e.g. the embedded product line) without such support,
+and we may not want to penalize these use cases.
+
+So, mark LoongArch as not supporting unaligned accesses for now, and
+hope the compilers do a good job optimizing them. We can always flip
+switch later.
+
+Suggested-by: CHEN Tao <[email protected]>
+--- a/gst/gstconfig.h.in
++++ b/gst/gstconfig.h.in
+@@ -124,7 +124,7 @@
+  * http://docs.oracle.com/cd/E19205-01/820-4155/c++_faq.html#Vers6
+  * https://software.intel.com/en-us/node/583402
+  */
+-#if defined(__alpha__) || defined(__arc__) || defined(__arm__) || 
defined(__aarch64__) || defined(__bfin) || defined(__hppa__) || 
defined(__nios2__) || defined(__MICROBLAZE__) || defined(__mips__) || 
defined(__or1k__) || defined(__sh__) || defined(__SH4__) || defined(__sparc__) 
|| defined(__sparc) || defined(__ia64__) || defined(_M_ALPHA) || 
defined(_M_ARM) || defined(_M_ARM64) || defined(_M_IA64) || defined(__xtensa__) 
|| defined(__e2k__) || defined(__riscv) || defined(__ARC64__) 
++#if defined(__alpha__) || defined(__arc__) || defined(__arm__) || 
defined(__aarch64__) || defined(__bfin) || defined(__hppa__) || 
defined(__nios2__) || defined(__MICROBLAZE__) || defined(__mips__) || 
defined(__or1k__) || defined(__sh__) || defined(__SH4__) || defined(__sparc__) 
|| defined(__sparc) || defined(__ia64__) || defined(_M_ALPHA) || 
defined(_M_ARM) || defined(_M_ARM64) || defined(_M_IA64) || defined(__xtensa__) 
|| defined(__e2k__) || defined(__riscv) || defined(__ARC64__) || 
defined(__loongarch__)
+ #  define GST_HAVE_UNALIGNED_ACCESS 0
+ #elif defined(__i386__) || defined(__i386) || defined(__amd64__) || 
defined(__amd64) || defined(__x86_64__) || defined(__ppc__) || 
defined(__ppc64__) || defined(__powerpc__) || defined(__powerpc64__) || 
defined(__m68k__) || defined(_M_IX86) || defined(_M_AMD64) || defined(_M_X64) 
|| defined(__s390__) || defined(__s390x__) || defined(__zarch__)
+ #  define GST_HAVE_UNALIGNED_ACCESS 1

diff --git a/media-libs/gstreamer/gstreamer-1.20.2.ebuild 
b/media-libs/gstreamer/gstreamer-1.20.2.ebuild
index ef777a56fe5a..9372a822f7e7 100644
--- a/media-libs/gstreamer/gstreamer-1.20.2.ebuild
+++ b/media-libs/gstreamer/gstreamer-1.20.2.ebuild
@@ -33,6 +33,10 @@ BDEPEND="
 
 DOCS=( AUTHORS ChangeLog NEWS MAINTAINERS README.md RELEASE )
 
+PATCHES=(
+       "${FILESDIR}/${PN}-1.20-loong.patch"
+)
+
 multilib_src_configure() {
        local emesonargs=(
                -Dbenchmarks=disabled

Reply via email to