sci-physics/bullet: rename altivec vector keywords

Altivec vectors can be defined with either the "vector" keyword or the
"__vector" type. In general "__vector" should be prefered for
include files, as otherwise it might conflicts with other type define
in the source code (define a vector class in C++ is quite common).
This causes bullet to fail to build on powerpc if the
code is compiled with -maltivec, or by default on ppc64el which always
has altivec enabled.

See also: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=760310
Closes: https://bugs.gentoo.org/852101
Signed-off-by: Niccolò Belli <niccolo.belli@linuxsystems.it>
Closes: https://github.com/gentoo/gentoo/pull/28193
Signed-off-by: Andrew Ammerlaan <andrewammerlaan@gentoo.org>
This commit is contained in:
Niccolò Belli
2022-11-08 12:40:14 +01:00
committed by Andrew Ammerlaan
parent 314a493874
commit 884d9dafc8
2 changed files with 26 additions and 0 deletions

View File

@@ -45,6 +45,8 @@ pkg_setup() {
}
src_prepare() {
(use ppc || use ppc64) && PATCHES+=( "${FILESDIR}/${P}-replace_altivec_vector_keyword.patch" )
cmake_src_prepare
# allow to generate docs

View File

@@ -0,0 +1,24 @@
--- a/src/clew/clew.h 2022-02-16 18:12:48.879740507 +0100
+++ b/src/clew/clew.h 2022-02-16 18:13:32.403061196 +0100
@@ -319,14 +319,14 @@
/* Define basic vector types */
#if defined(__VEC__)
#include <altivec.h> /* may be omitted depending on compiler. AltiVec spec provides no way to detect whether the header is required. */
- typedef vector unsigned char __cl_uchar16;
- typedef vector signed char __cl_char16;
- typedef vector unsigned short __cl_ushort8;
- typedef vector signed short __cl_short8;
- typedef vector unsigned int __cl_uint4;
- typedef vector signed int __cl_int4;
- typedef vector float __cl_float4;
+ typedef __vector unsigned char __cl_uchar16;
+ typedef __vector signed char __cl_char16;
+ typedef __vector unsigned short __cl_ushort8;
+ typedef __vector signed short __cl_short8;
+ typedef __vector unsigned int __cl_uint4;
+ typedef __vector signed int __cl_int4;
+ typedef __vector float __cl_float4;
#define __CL_UCHAR16__ 1
#define __CL_CHAR16__ 1
#define __CL_USHORT8__ 1