aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDima Panov <fluffy@FreeBSD.org>2022-07-10 19:15:24 +0000
committerDima Panov <fluffy@FreeBSD.org>2022-07-10 19:15:24 +0000
commit057805f28af5664ae6286db371a5220de354cc9d (patch)
tree8d9f5e172a1f117a0f797625aeae724b79f7e26f
parent488781bde8f00a043ff9a71f2d55966951019d3d (diff)
downloadports-057805f28af5664ae6286db371a5220de354cc9d.tar.gz
ports-057805f28af5664ae6286db371a5220de354cc9d.zip
graphics/gegl: fix build on armv7
PR: 265092 MFH: 2022Q3
-rw-r--r--graphics/gegl/files/patch-gegl_gegl-cpuaccel.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/graphics/gegl/files/patch-gegl_gegl-cpuaccel.c b/graphics/gegl/files/patch-gegl_gegl-cpuaccel.c
new file mode 100644
index 000000000000..9566e2bfd1a1
--- /dev/null
+++ b/graphics/gegl/files/patch-gegl_gegl-cpuaccel.c
@@ -0,0 +1,41 @@
+--- gegl/gegl-cpuaccel.c.orig 2022-07-07 02:35:48 UTC
++++ gegl/gegl-cpuaccel.c
+@@ -552,32 +552,18 @@ arch_accel (void)
+ #include <fcntl.h>
+ #include <string.h>
+ #include <elf.h>
++#include <sys/auxv.h>
+
+ #define HAVE_ACCEL 1
+
+ static guint32
+ arch_accel (void)
+ {
+- /* TODO : add or hardcode the other ways it can be on arm, where
+- * this info comes from the system and not from running cpu
+- * instructions
+- */
+- int has_neon = 0;
+- int fd = open ("/proc/self/auxv", O_RDONLY);
+- Elf32_auxv_t auxv;
+- if (fd >= 0)
+- {
+- while (read (fd, &auxv, sizeof (Elf32_auxv_t)) == sizeof (Elf32_auxv_t))
+- {
+- if (auxv.a_type == AT_HWCAP)
+- {
+- if (auxv.a_un.a_val & 4096)
+- has_neon = 1;
+- }
+- }
+- close (fd);
+- }
+- return has_neon?GEGL_CPU_ACCEL_ARM_NEON:0;
++ unsigned long hwcap = 0;
++
++ elf_aux_info(AT_HWCAP, &hwcap, sizeof hwcap);
++
++ return hwcap & HWCAP_NEON ? GEGL_CPU_ACCEL_ARM_NEON : 0;
+ }
+
+ #endif /* ARCH_ARM */