commit:     d9c52de97ac8da18f8ec9f7863950582aee3e71c
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sun Nov  7 02:50:55 2021 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sun Nov  7 02:50:55 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=d9c52de9

games-emulation/vbam: fix build on arm(64)

Closes: https://bugs.gentoo.org/799362
Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../vbam/files/vbam-2.1.4-arm-asm.patch            | 33 ++++++++++++++++++++++
 games-emulation/vbam/vbam-2.1.4.ebuild             |  1 +
 2 files changed, 34 insertions(+)

diff --git a/games-emulation/vbam/files/vbam-2.1.4-arm-asm.patch 
b/games-emulation/vbam/files/vbam-2.1.4-arm-asm.patch
new file mode 100644
index 00000000000..bf6e2bd70e9
--- /dev/null
+++ b/games-emulation/vbam/files/vbam-2.1.4-arm-asm.patch
@@ -0,0 +1,33 @@
+https://github.com/visualboyadvance-m/visualboyadvance-m/commit/af0de1c4b308ef8d9a081ecf407805b75a99d877.patch
+https://bugs.gentoo.org/799362
+
+From: Rafael Kitover <[email protected]>
+Date: Fri, 4 Oct 2019 07:35:49 +0000
+Subject: [PATCH] xbrz: fix inline asm check
+
+Use correct cpp code to detect x86/amd64 architecture to use inline asm.
+
+Signed-off-by: Rafael Kitover <[email protected]>
+--- a/src/filters/xBRZ/xbrz.cpp
++++ b/src/filters/xBRZ/xbrz.cpp
+@@ -66,17 +66,17 @@ uint32_t gradientARGB(uint32_t pixFront, uint32_t pixBack) 
//find intermediate c
+ 
+ inline double fastSqrt(double n)
+ {
+-#ifdef __GNUC__ || __clang__ || __MINGW64_VERSION_MAJOR || 
__MINGW32_MAJOR_VERSION
++#if (defined(__GNUC__) || defined(__clang__)) && (defined(__x86_64__) || 
defined(__i386__))
+     __asm__ ("fsqrt" : "+t" (n));
+     return n;
+-#elif _MSC_VER && _M_IX86
++#elif defined(_MSC_VER) && defined(_M_IX86)
+     // speeds up xBRZ by about 9% compared to std::sqrt which internally uses
+     // the same assembler instructions but adds some "fluff"
+     __asm {
+         fld n
+         fsqrt
+     }
+-#else // _MSC_VER && _M_X64 OR other platforms
++#else // defined(_MSC_VER) && defined(_M_X64) OR other platforms
+     // VisualStudio x86_64 does not allow inline ASM
+     return std::sqrt(n);
+ #endif

diff --git a/games-emulation/vbam/vbam-2.1.4.ebuild 
b/games-emulation/vbam/vbam-2.1.4.ebuild
index 21f3c2cf4a2..8fe87b4e148 100644
--- a/games-emulation/vbam/vbam-2.1.4.ebuild
+++ b/games-emulation/vbam/vbam-2.1.4.ebuild
@@ -57,6 +57,7 @@ BDEPEND="
 PATCHES=(
        "${FILESDIR}"/${P}-cmake_fix.patch
        "${FILESDIR}"/${P}-libsdl2-2.0.14.patch #762208
+       "${FILESDIR}"/${P}-arm-asm.patch
 )
 
 src_configure() {

Reply via email to