aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPiotr Kubaj <pkubaj@FreeBSD.org>2021-09-21 21:47:46 +0000
committerPiotr Kubaj <pkubaj@FreeBSD.org>2021-09-21 21:47:46 +0000
commitece0c9bb0690863596198c80180dcc702a066ad2 (patch)
tree663176317add9f2c8b74474096a2030762386dd0
parent52ed0237f8f7a24b527112664c8a3d7aa533b01c (diff)
downloadports-ece0c9bb0.tar.gz
ports-ece0c9bb0.zip
devel/sdl20: correctly detect altivec
The previous patch was not correct. Already upstreamed.
-rw-r--r--devel/sdl20/Makefile2
-rw-r--r--devel/sdl20/files/patch-src_cpuinfo_SDL__cpuinfo.c47
2 files changed, 29 insertions, 20 deletions
diff --git a/devel/sdl20/Makefile b/devel/sdl20/Makefile
index 49bf21ccedf0..057f1ca9480b 100644
--- a/devel/sdl20/Makefile
+++ b/devel/sdl20/Makefile
@@ -1,6 +1,6 @@
PORTNAME= sdl2
PORTVERSION= 2.0.12
-PORTREVISION= 6
+PORTREVISION= 7
CATEGORIES= devel
MASTER_SITES= https://www.libsdl.org/release/
DISTNAME= SDL2-${PORTVERSION}
diff --git a/devel/sdl20/files/patch-src_cpuinfo_SDL__cpuinfo.c b/devel/sdl20/files/patch-src_cpuinfo_SDL__cpuinfo.c
index 7bb8d70d47de..d46b4673236f 100644
--- a/devel/sdl20/files/patch-src_cpuinfo_SDL__cpuinfo.c
+++ b/devel/sdl20/files/patch-src_cpuinfo_SDL__cpuinfo.c
@@ -1,24 +1,33 @@
--- src/cpuinfo/SDL_cpuinfo.c.orig 2020-03-11 01:36:18 UTC
+++ src/cpuinfo/SDL_cpuinfo.c
-@@ -49,7 +49,7 @@
- #endif
- #if defined(__MACOSX__) && (defined(__ppc__) || defined(__ppc64__))
- #include <sys/sysctl.h> /* For AltiVec check */
--#elif defined(__OpenBSD__) && defined(__powerpc__)
-+#elif (defined(__OpenBSD__) || defined(__FreeBSD__)) && defined(__powerpc__)
+@@ -53,6 +53,9 @@
#include <sys/param.h>
#include <sys/sysctl.h> /* For AltiVec check */
#include <machine/cpu.h>
-@@ -314,9 +314,11 @@ CPU_haveAltiVec(void)
- {
- volatile int altivec = 0;
- #ifndef SDL_CPUINFO_DISABLED
--#if (defined(__MACOSX__) && (defined(__ppc__) || defined(__ppc64__))) || (defined(__OpenBSD__) && defined(__powerpc__))
-+#if (defined(__MACOSX__) && (defined(__ppc__) || defined(__ppc64__))) || (defined(__OpenBSD__) && defined(__powerpc__)) || (defined(__FreeBSD__) && defined(__powerpc__))
- #ifdef __OpenBSD__
- int selectors[2] = { CTL_MACHDEP, CPU_ALTIVEC };
-+#elif __FreeBSD__
-+ int selectors[2] = { CTL_HW, PPC_FEATURE_HAS_ALTIVEC };
- #else
- int selectors[2] = { CTL_HW, HW_VECTORUNIT };
- #endif
++#elif defined(__FreeBSD__) && defined(__powerpc__)
++#include <machine/cpu.h>
++#include <sys/auxv.h>
+ #elif SDL_ALTIVEC_BLITTERS && HAVE_SETJMP
+ #include <signal.h>
+ #include <setjmp.h>
+@@ -110,7 +113,7 @@
+ #define CPU_HAS_AVX512F (1 << 12)
+ #define CPU_HAS_ARM_SIMD (1 << 13)
+
+-#if SDL_ALTIVEC_BLITTERS && HAVE_SETJMP && !__MACOSX__ && !__OpenBSD__
++#if SDL_ALTIVEC_BLITTERS && HAVE_SETJMP && !__MACOSX__ && !__OpenBSD__ && !__FreeBSD__
+ /* This is the brute force way of detecting instruction sets...
+ the idea is borrowed from the libmpeg2 library - thanks!
+ */
+@@ -325,6 +328,11 @@ CPU_haveAltiVec(void)
+ int error = sysctl(selectors, 2, &hasVectorUnit, &length, NULL, 0);
+ if (0 == error)
+ altivec = (hasVectorUnit != 0);
++#elif defined(__FreeBSD__) && defined(__powerpc__)
++ unsigned long cpufeatures;
++ elf_aux_info(AT_HWCAP, &cpufeatures, sizeof(cpufeatures));
++ altivec = cpufeatures & PPC_FEATURE_HAS_ALTIVEC;
++ return altivec;
+ #elif SDL_ALTIVEC_BLITTERS && HAVE_SETJMP
+ void (*handler) (int sig);
+ handler = signal(SIGILL, illegal_instruction);