git: 8fce874533ef - 2022Q2 - graphics/tesseract: Fix build on armv6/armv7
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 03 Apr 2022 15:24:29 UTC
The branch 2022Q2 has been updated by mikael:
URL: https://cgit.FreeBSD.org/ports/commit/?id=8fce874533efe8c9a17678089076c5d1ab41d133
commit 8fce874533efe8c9a17678089076c5d1ab41d133
Author: Robert Clausecker <fuz@fuz.su>
AuthorDate: 2022-04-02 13:54:54 +0000
Commit: Mikael Urankar <mikael@FreeBSD.org>
CommitDate: 2022-04-03 15:24:19 +0000
graphics/tesseract: Fix build on armv6/armv7
Tesseract requires the <asm/hwcap.h> header to detect the availability
of NEON instructions on armv7. This commit adds a patch to use the
appropriate FreeBSD interface for this purpose. This issue has already
been reported to up stream.
See also: https://github.com/tesseract-ocr/tesseract/pull/3782
See also: PR #263003
PR: 263004
Approved by: portmgr (build fix blanket)
(cherry picked from commit 31efc7fa161a0da4982f5a3bf687e6bee405395f)
---
.../tesseract/files/patch-src_arch_simddetect.cpp | 41 ++++++++++++++++++++++
1 file changed, 41 insertions(+)
diff --git a/graphics/tesseract/files/patch-src_arch_simddetect.cpp b/graphics/tesseract/files/patch-src_arch_simddetect.cpp
new file mode 100644
index 000000000000..2e645a041b2e
--- /dev/null
+++ b/graphics/tesseract/files/patch-src_arch_simddetect.cpp
@@ -0,0 +1,41 @@
+--- src/arch/simddetect.cpp.orig 2022-04-02 13:06:33 UTC
++++ src/arch/simddetect.cpp
+@@ -55,10 +55,12 @@
+ #if defined(HAVE_NEON) && !defined(__aarch64__)
+ # ifdef ANDROID
+ # include <cpu-features.h>
+-# else
+-/* Assume linux */
++# elif defined(__linux__)
+ # include <asm/hwcap.h>
+ # include <sys/auxv.h>
++# elif defined(__FreeBSD__)
++# include <sys/auxv.h>
++# include <sys/elf.h>
+ # endif
+ #endif
+
+@@ -85,7 +87,7 @@ SIMDDetect SIMDDetect::detector;
+ bool SIMDDetect::neon_available_ = true;
+ #elif defined(HAVE_NEON)
+ // If true, then Neon has been detected.
+-bool SIMDDetect::neon_available_;
++bool SIMDDetect::neon_available_ = false;
+ #else
+ // If true, then AVX has been detected.
+ bool SIMDDetect::avx_available_;
+@@ -216,9 +218,12 @@ SIMDDetect::SIMDDetect() {
+ if (family == ANDROID_CPU_FAMILY_ARM)
+ neon_available_ = (android_getCpuFeatures() & ANDROID_CPU_ARM_FEATURE_NEON);
+ }
+-# else
+- /* Assume linux */
++# elif defined(__linux__)
+ neon_available_ = getauxval(AT_HWCAP) & HWCAP_NEON;
++# elif defined(__FreeBSD__)
++ unsigned long hwcap = 0;
++ elf_aux_info(AT_HWCAP, &hwcap, sizeof hwcap);
++ neon_available_ = hwcap & HWCAP_NEON;
+ # endif
+ #endif
+