diff mbox series

[v2] ghostscript: avoid neon on unsupported machines

Message ID 20230904152818.4182573-1-bbara93@gmail.com
State Accepted, archived
Commit 22d40fcb984849bc8735bf03b306c3a3b11eb779
Headers show
Series [v2] ghostscript: avoid neon on unsupported machines | expand

Commit Message

Benjamin Bara Sept. 4, 2023, 3:28 p.m. UTC
From: Benjamin Bara <benjamin.bara@skidata.com>

Disable neon if the machine does not support it.

Signed-off-by: Benjamin Bara <benjamin.bara@skidata.com>
---
 ...dd-option-to-explicitly-disable-neon.patch | 99 +++++++++++++++++++
 .../ghostscript/ghostscript_10.01.2.bb        |  4 +
 2 files changed, 103 insertions(+)
 create mode 100644 meta/recipes-extended/ghostscript/ghostscript/configure.ac-add-option-to-explicitly-disable-neon.patch
diff mbox series

Patch

diff --git a/meta/recipes-extended/ghostscript/ghostscript/configure.ac-add-option-to-explicitly-disable-neon.patch b/meta/recipes-extended/ghostscript/ghostscript/configure.ac-add-option-to-explicitly-disable-neon.patch
new file mode 100644
index 0000000000..7873396045
--- /dev/null
+++ b/meta/recipes-extended/ghostscript/ghostscript/configure.ac-add-option-to-explicitly-disable-neon.patch
@@ -0,0 +1,99 @@ 
+From fd37229a17822c5ad21a369f670b8a6f6cc6b95b Mon Sep 17 00:00:00 2001
+From: Benjamin Bara <benjamin.bara@skidata.com>
+Date: Mon, 4 Sep 2023 12:16:39 +0200
+Subject: [PATCH] configure.ac: add option to explicitly disable neon
+
+Uncomment an already existing possibility to explicitly disable neon and
+use it on both implemented neon checks.
+
+Upstream-Status: Submitted [https://bugs.ghostscript.com/show_bug.cgi?id=707097]
+
+Signed-off-by: Benjamin Bara <benjamin.bara@skidata.com>
+---
+ configure.ac | 52 +++++++++++++++++++++++++++++-----------------------
+ 1 file changed, 29 insertions(+), 23 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 09d881dd1..62718e15e 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -749,6 +749,33 @@ SUBCONFIG_OPTS="--build=$build --host=$host"
+ #  SUBCONFIG_OPTS="$SUBCONFIG_OPTS --host=$host_alias"
+ #fi
+ 
++dnl --------------------------------------------------
++dnl Check for NEON support
++dnl --------------------------------------------------
++save_cflags=$CFLAGS
++AC_MSG_CHECKING([neon support])
++CFLAGS="$save_cflags $OPT_CFLAGS -mfpu=neon -mcpu=cortex-a53"
++HAVE_NEON=""
++AC_LINK_IFELSE(
++  [AC_LANG_PROGRAM([#include "arm_neon.h"], [
++  int32x4_t round = vdupq_n_s32(10);
++  return(0);
++  ])],
++  [HAVE_NEON="-DHAVE_NEON"], [HAVE_NEON=""])
++
++AC_ARG_ENABLE([neon], AS_HELP_STRING([--disable-neon],
++       [Do not use neon instrinsics]), [
++             if test "x$enable_neon" = xno; then
++                HAVE_NEON=""
++             fi])
++
++if test "x$HAVE_NEON" != x; then
++  AC_MSG_RESULT(yes)
++else
++  AC_MSG_RESULT(no)
++fi
++CFLAGS=$save_cflags
++
+ dnl --------------------------------------------------
+ dnl Check for libraries
+ dnl --------------------------------------------------
+@@ -971,11 +998,12 @@ if test x$with_tesseract != xno; then
+          [TESS_NEON="-mfpu=neon -mcpu=cortex-a53 -D__ARM_NEON__"],
+          [TESS_NEON=""])
+ 
+-        if test "x$TESS_NEON" != x; then
++        if test "x$TESS_NEON" != x && test "x$enable_neon" != xno; then
+           AC_MSG_RESULT(yes)
+           TESS_CXXFLAGS="$TESS_CXXFLAGS -DHAVE_NEON"
+         else
+           AC_MSG_RESULT(no)
++          TESS_NEON=""
+         fi
+ 
+         CXXFLAGS="$save_cxxflags"
+@@ -2387,28 +2415,6 @@ if test x$WITH_CAL != x0; then
+     AC_MSG_RESULT(no)
+   fi
+ 
+-  AC_MSG_CHECKING([neon support])
+-  CFLAGS="$save_cflags $OPT_CFLAGS -mfpu=neon -mcpu=cortex-a53"
+-  HAVE_NEON=""
+-  AC_LINK_IFELSE(
+-    [AC_LANG_PROGRAM([#include "arm_neon.h"], [
+-    int32x4_t round = vdupq_n_s32(10);
+-    return(0);
+-    ])],
+-    [HAVE_NEON="-DHAVE_NEON"], [HAVE_NEON=""])
+-
+-  #AC_ARG_ENABLE([neon], AS_HELP_STRING([--disable-neon],
+-  #       [Do not use neon instrinsics]), [
+-  #             if test "x$enable_neon" = xno; then
+-  #                HAVE_NEON=""
+-  #             fi])
+-
+-  if test "x$HAVE_NEON" != x; then
+-    AC_MSG_RESULT(yes)
+-  else
+-    AC_MSG_RESULT(no)
+-  fi
+-
+   #AC_SUBST(HAVE_SSE4_2)
+   #AC_SUBST(HAVE_NEON)
+   CFLAGS=$save_cflags
+-- 
+2.34.1
+
diff --git a/meta/recipes-extended/ghostscript/ghostscript_10.01.2.bb b/meta/recipes-extended/ghostscript/ghostscript_10.01.2.bb
index 0ddf708f93..434170e34d 100644
--- a/meta/recipes-extended/ghostscript/ghostscript_10.01.2.bb
+++ b/meta/recipes-extended/ghostscript/ghostscript_10.01.2.bb
@@ -26,6 +26,7 @@  SRC_URI = "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/downlo
            file://ghostscript-9.16-Werror-return-type.patch \
            file://avoid-host-contamination.patch \
            file://0001-Bug-706897-Copy-pcx-buffer-overrun-fix-from-devices-.patch \
+           file://configure.ac-add-option-to-explicitly-disable-neon.patch \
 "
 
 SRC_URI[sha256sum] = "a4cd61a07fec161bee35da0211a5e5cde8ff8a0aaf942fc0176715e499d21661"
@@ -45,6 +46,9 @@  EXTRA_OECONF = "--with-jbig2dec \
 
 EXTRA_OECONF:append:mipsarcho32 = " --with-large_color_index=0"
 
+EXTRA_OECONF:append:armv7a = "${@bb.utils.contains('TUNE_FEATURES','neon','',' --disable-neon',d)}"
+EXTRA_OECONF:append:armv7ve = "${@bb.utils.contains('TUNE_FEATURES','neon','',' --disable-neon',d)}"
+
 # Uses autoconf but not automake, can't do out-of-tree
 inherit autotools-brokensep pkgconfig