commit:     8db9f66124d9c5620f4f2f6db921125ba9c6fa74
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sun Sep  1 07:32:49 2024 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sun Sep  1 07:32:49 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8db9f661

app-text/tesseract: fix arm* build w/o neon

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

 .../tesseract-5.4.1-arm64-neon-tesseract.patch     | 57 ++++++++++++++++++++++
 app-text/tesseract/tesseract-5.3.4.ebuild          |  4 ++
 app-text/tesseract/tesseract-5.4.1.ebuild          |  4 ++
 app-text/tesseract/tesseract-9999.ebuild           |  4 ++
 4 files changed, 69 insertions(+)

diff --git 
a/app-text/tesseract/files/tesseract-5.4.1-arm64-neon-tesseract.patch 
b/app-text/tesseract/files/tesseract-5.4.1-arm64-neon-tesseract.patch
new file mode 100644
index 000000000000..d3869cfea1dd
--- /dev/null
+++ b/app-text/tesseract/files/tesseract-5.4.1-arm64-neon-tesseract.patch
@@ -0,0 +1,57 @@
+https://bugs.gentoo.org/924757
+https://bugs.gentoo.org/926891
+https://github.com/tesseract-ocr/tesseract/pull/4154
+
+(Note that if moving to CMake, can use the patch from ghostscript-gpl
+instead, i.e. 
https://src.fedoraproject.org/rpms/tesseract/blob/rawhide/f/tesseract_neon.patch).
+
+From b1e48789d61d995740762f66f505385db42410a5 Mon Sep 17 00:00:00 2001
+From: Jan Palus <[email protected]>
+Date: Mon, 30 Oct 2023 01:36:57 +0100
+Subject: [PATCH] Check if NEON extension are actually available
+
+User may pass own compiler flags to configure which override those
+provided by project through automake. Therefore it is possible for user
+on ARM platform to pass CXXFLAGS=-mfpu=vfp which will effectively
+disable NEON even though used compiler supports -mfpu=neon (since user
+supplied flags take precedence compiler invocation will use flags:
+-mfpu=neon -mfpu=vfp). Instead of checking whether compiler supports
+-mfpu=neon flag, check if NEON extensions are available by checking if
+__ARM_NEON is defined when compiling with -mfpu=neon and user supplied
+flags combined.
+
+Signed-off-by: Jan Palus <[email protected]>
+---
+ configure.ac | 18 ++++++++++++++----
+ 1 file changed, 14 insertions(+), 4 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 0b38537229..0514b619c5 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -178,10 +178,20 @@ case "${host_cpu}" in
+     ;;
+ 
+   arm*)
+-
+-    AX_CHECK_COMPILE_FLAG([-mfpu=neon], [neon=true], [neon=false], [$WERROR])
+-    AM_CONDITIONAL([HAVE_NEON], $neon)
+-    if $neon; then
++    SAVE_CXXFLAGS="$CXXFLAGS"
++    CXXFLAGS="-mfpu=neon $CXXFLAGS"
++    AC_MSG_CHECKING([for NEON support])
++    AC_COMPILE_IFELSE(
++    [AC_LANG_PROGRAM([], [[
++    #ifndef __ARM_NEON
++           #error
++    #endif
++    ]])],
++    [neon=yes], [neon=no])
++    AC_MSG_RESULT([$neon])
++    CXXFLAGS="$SAVE_CXXFLAGS"
++    AM_CONDITIONAL([HAVE_NEON], test "xyes" = "x$neon")
++    if test "xyes" = "$neon"; then
+       AC_DEFINE([HAVE_NEON], [1], [Enable NEON instructions])
+       NEON_CXXFLAGS="-mfpu=neon"
+       AC_SUBST([NEON_CXXFLAGS])
+

diff --git a/app-text/tesseract/tesseract-5.3.4.ebuild 
b/app-text/tesseract/tesseract-5.3.4.ebuild
index d90adb970643..af83b0284a3a 100644
--- a/app-text/tesseract/tesseract-5.3.4.ebuild
+++ b/app-text/tesseract/tesseract-5.3.4.ebuild
@@ -37,6 +37,10 @@ DEPEND="${COMMON_DEPEND}
        dev-libs/libxslt
        doc? ( app-text/doxygen )"
 
+PATCHES=(
+       "${FILESDIR}"/${PN}-5.4.1-arm64-neon-tesseract.patch
+)
+
 pkg_pretend() {
        [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
 }

diff --git a/app-text/tesseract/tesseract-5.4.1.ebuild 
b/app-text/tesseract/tesseract-5.4.1.ebuild
index 1469566c29ed..d4438214a13d 100644
--- a/app-text/tesseract/tesseract-5.4.1.ebuild
+++ b/app-text/tesseract/tesseract-5.4.1.ebuild
@@ -32,6 +32,10 @@ DEPEND="${COMMON_DEPEND}
        dev-libs/libxslt
        doc? ( app-text/doxygen )"
 
+PATCHES=(
+       "${FILESDIR}"/${PN}-5.4.1-arm64-neon-tesseract.patch
+)
+
 pkg_pretend() {
        [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
 }

diff --git a/app-text/tesseract/tesseract-9999.ebuild 
b/app-text/tesseract/tesseract-9999.ebuild
index 4c31653fca31..d3c34531c724 100644
--- a/app-text/tesseract/tesseract-9999.ebuild
+++ b/app-text/tesseract/tesseract-9999.ebuild
@@ -32,6 +32,10 @@ DEPEND="${COMMON_DEPEND}
        dev-libs/libxslt
        doc? ( app-text/doxygen )"
 
+PATCHES=(
+       "${FILESDIR}"/${PN}-5.4.1-arm64-neon-tesseract.patch
+)
+
 pkg_pretend() {
        [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
 }

Reply via email to