summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam James <sam@gentoo.org>2021-02-05 21:57:16 +0000
committerSam James <sam@gentoo.org>2021-02-05 21:57:16 +0000
commitc74dcd154317d93fc07455b0f03bb442d592ca35 (patch)
tree6105d577f4b464aaddfec3679792a47487a8309e
parentdev-util/scons: Stabilize 4.0.1 ppc, #742359 (diff)
downloadgentoo-c74dcd154317d93fc07455b0f03bb442d592ca35.tar.gz
gentoo-c74dcd154317d93fc07455b0f03bb442d592ca35.tar.bz2
gentoo-c74dcd154317d93fc07455b0f03bb442d592ca35.zip
media-libs/glm: fix tests on big endian arches
Closes: https://bugs.gentoo.org/673972 Package-Manager: Portage-3.0.14, Repoman-3.0.2 Signed-off-by: Sam James <sam@gentoo.org>
-rw-r--r--media-libs/glm/files/glm-0.9.9.8-big-endian-tests.patch186
-rw-r--r--media-libs/glm/glm-0.9.9.8-r1.ebuild3
2 files changed, 187 insertions, 2 deletions
diff --git a/media-libs/glm/files/glm-0.9.9.8-big-endian-tests.patch b/media-libs/glm/files/glm-0.9.9.8-big-endian-tests.patch
new file mode 100644
index 000000000000..cc8b1b637a83
--- /dev/null
+++ b/media-libs/glm/files/glm-0.9.9.8-big-endian-tests.patch
@@ -0,0 +1,186 @@
+https://github.com/g-truc/glm/commit/06ce42e72324b32b1f4c37c646e99950c2bd5f6b.patch
+https://bugs.gentoo.org/673972
+
+Not yet applied upstream because <endian.h> is not available on non-Linux platforms.
+
+From 06ce42e72324b32b1f4c37c646e99950c2bd5f6b Mon Sep 17 00:00:00 2001
+From: Max Rees <maxcrees@me.com>
+Date: Sun, 15 Mar 2020 15:13:27 -0400
+Subject: [PATCH] Fix test suite on big endian platforms
+
+---
+ glm/gtc/packing.inl | 55 ++++++++++++++++++++++++++++++++++++++++
+ test/gtc/gtc_packing.cpp | 3 ++-
+ 2 files changed, 57 insertions(+), 1 deletion(-)
+
+diff --git a/glm/gtc/packing.inl b/glm/gtc/packing.inl
+index 8c906e16c..b1c99a507 100644
+--- a/glm/gtc/packing.inl
++++ b/glm/gtc/packing.inl
+@@ -9,6 +9,9 @@
+ #include "../detail/type_half.hpp"
+ #include <cstring>
+ #include <limits>
++extern "C" {
++#include <endian.h>
++}
+
+ namespace glm{
+ namespace detail
+@@ -183,9 +186,15 @@ namespace detail
+ {
+ struct
+ {
++#if BYTE_ORDER == LITTLE_ENDIAN
+ uint x : 3;
+ uint y : 3;
+ uint z : 2;
++#else
++ uint z : 2;
++ uint y : 3;
++ uint x : 3;
++#endif
+ } data;
+ uint8 pack;
+ };
+@@ -194,8 +203,13 @@ namespace detail
+ {
+ struct
+ {
++#if BYTE_ORDER == LITTLE_ENDIAN
+ uint x : 4;
+ uint y : 4;
++#else
++ uint y : 4;
++ uint x : 4;
++#endif
+ } data;
+ uint8 pack;
+ };
+@@ -204,10 +218,17 @@ namespace detail
+ {
+ struct
+ {
++#if BYTE_ORDER == LITTLE_ENDIAN
+ uint x : 4;
+ uint y : 4;
+ uint z : 4;
+ uint w : 4;
++#else
++ uint w : 4;
++ uint z : 4;
++ uint y : 4;
++ uint x : 4;
++#endif
+ } data;
+ uint16 pack;
+ };
+@@ -216,9 +237,15 @@ namespace detail
+ {
+ struct
+ {
++#if BYTE_ORDER == LITTLE_ENDIAN
+ uint x : 5;
+ uint y : 6;
+ uint z : 5;
++#else
++ uint z : 5;
++ uint y : 6;
++ uint x : 5;
++#endif
+ } data;
+ uint16 pack;
+ };
+@@ -227,10 +254,17 @@ namespace detail
+ {
+ struct
+ {
++#if BYTE_ORDER == LITTLE_ENDIAN
+ uint x : 5;
+ uint y : 5;
+ uint z : 5;
+ uint w : 1;
++#else
++ uint w : 1;
++ uint z : 5;
++ uint y : 5;
++ uint x : 5;
++#endif
+ } data;
+ uint16 pack;
+ };
+@@ -239,10 +273,17 @@ namespace detail
+ {
+ struct
+ {
++#if BYTE_ORDER == LITTLE_ENDIAN
+ uint x : 10;
+ uint y : 10;
+ uint z : 10;
+ uint w : 2;
++#else
++ uint w : 2;
++ uint z : 10;
++ uint y : 10;
++ uint x : 10;
++#endif
+ } data;
+ uint32 pack;
+ };
+@@ -251,10 +292,17 @@ namespace detail
+ {
+ struct
+ {
++#if BYTE_ORDER == LITTLE_ENDIAN
+ int x : 10;
+ int y : 10;
+ int z : 10;
+ int w : 2;
++#else
++ int w : 2;
++ int z : 10;
++ int y : 10;
++ int x : 10;
++#endif
+ } data;
+ uint32 pack;
+ };
+@@ -263,10 +311,17 @@ namespace detail
+ {
+ struct
+ {
++#if BYTE_ORDER == LITTLE_ENDIAN
+ uint x : 9;
+ uint y : 9;
+ uint z : 9;
+ uint w : 5;
++#else
++ uint w : 5;
++ uint z : 9;
++ uint y : 9;
++ uint x : 9;
++#endif
+ } data;
+ uint32 pack;
+ };
+diff --git a/test/gtc/gtc_packing.cpp b/test/gtc/gtc_packing.cpp
+index df5b3bb1a..fbaaa5bcc 100644
+--- a/test/gtc/gtc_packing.cpp
++++ b/test/gtc/gtc_packing.cpp
+@@ -4,6 +4,7 @@
+ #include <glm/ext/vector_relational.hpp>
+ #include <cstdio>
+ #include <vector>
++#include <arpa/inet.h>
+
+ void print_bits(float const& s)
+ {
+@@ -156,7 +157,7 @@ int test_U3x10_1x2()
+
+ glm::u8vec4 const v0(0xff, 0x77, 0x0, 0x33);
+ glm::uint32 const p0 = *reinterpret_cast<glm::uint32 const*>(&v0[0]);
+- glm::uint32 const r0 = 0x330077ff;
++ glm::uint32 const r0 = htonl(0xff770033);
+
+ Error += p0 == r0 ? 0 : 1;
+
diff --git a/media-libs/glm/glm-0.9.9.8-r1.ebuild b/media-libs/glm/glm-0.9.9.8-r1.ebuild
index 10f370ff15e8..96a90be0b012 100644
--- a/media-libs/glm/glm-0.9.9.8-r1.ebuild
+++ b/media-libs/glm/glm-0.9.9.8-r1.ebuild
@@ -15,11 +15,10 @@ KEYWORDS="amd64 ~arm arm64 ~ppc ~ppc64 ~sparc x86"
IUSE="test cpu_flags_x86_sse2 cpu_flags_x86_sse3 cpu_flags_x86_avx cpu_flags_x86_avx2"
RESTRICT="!test? ( test )"
-RDEPEND=""
-
PATCHES=(
"${FILESDIR}"/${PN}-0.9.9.6-simd.patch
"${FILESDIR}"/${P}-clang.patch
+ "${FILESDIR}"/${PN}-0.9.9.8-big-endian-tests.patch
)
src_configure() {