commit:     f9c320c49081d55184f4852be82b56c9e0275f84
Author:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
AuthorDate: Fri Feb  9 22:23:09 2024 +0000
Commit:     James Le Cuirot <chewi <AT> gentoo <DOT> org>
CommitDate: Fri Feb  9 22:23:09 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f9c320c4

media-libs/libv4l: Patch to fix building against libc++

This has been submitted upstream.

Closes: https://bugs.gentoo.org/919795
Signed-off-by: James Le Cuirot <chewi <AT> gentoo.org>

 media-libs/libv4l/files/libv4l-1.26.1-libcxx.patch | 58 ++++++++++++++++++++++
 media-libs/libv4l/libv4l-1.26.1.ebuild             |  1 +
 2 files changed, 59 insertions(+)

diff --git a/media-libs/libv4l/files/libv4l-1.26.1-libcxx.patch 
b/media-libs/libv4l/files/libv4l-1.26.1-libcxx.patch
new file mode 100644
index 000000000000..5b5eea83bc9a
--- /dev/null
+++ b/media-libs/libv4l/files/libv4l-1.26.1-libcxx.patch
@@ -0,0 +1,58 @@
+From c7ef1a55bb6accb708a4e09d71028b904b07e49e Mon Sep 17 00:00:00 2001
+From: James Le Cuirot <[email protected]>
+Date: Wed, 7 Feb 2024 22:48:59 +0000
+Subject: [PATCH] v4l2-compliance: Fix building against libc++
+
+v4l2-test-time32-64.cpp included compiler.h, which checks
+_LIBCPP_VERSION. This only works against libc++ when a C++ header has
+already been included, which wasn't the case here.
+
+The <version> header is the C++20 method of defining _LIBCPP_VERSION,
+but for older versions, <ciso646> works as an alternative, so include
+that in compiler.h.
+
+compiler.h is for C as well as C++ though, so use __cplusplus to check
+for a C++ compiler before including <ciso646>.
+
+Signed-off-by: James Le Cuirot <[email protected]>
+---
+ include/compiler.h | 27 ++++++++++++---------------
+ 1 file changed, 12 insertions(+), 15 deletions(-)
+
+diff --git a/include/compiler.h b/include/compiler.h
+index 5ad54f41..169247a8 100644
+--- a/include/compiler.h
++++ b/include/compiler.h
+@@ -1,17 +1,14 @@
+-#ifdef _LIBCPP_VERSION
+-#define fallthrough _LIBCPP_FALLTHROUGH()
++#if !defined(__cplusplus) || __cplusplus < 201103L
++      #define fallthrough ((void)0)
+ #else
+-
+-#if __cplusplus >= 201103L
+-
+-#ifdef __clang__
+-#define fallthrough [[clang::fallthrough]]
+-#else
+-#define fallthrough [[gnu::fallthrough]]
+-#endif // __clang__
+-
+-#else
+-#define fallthrough ((void)0)
+-
++      #include <ciso646>
++      #ifdef _LIBCPP_VERSION
++              #define fallthrough _LIBCPP_FALLTHROUGH()
++      #else
++              #ifdef __clang__
++                      #define fallthrough [[clang::fallthrough]]
++              #else
++                      #define fallthrough [[gnu::fallthrough]]
++              #endif // __clang__
++      #endif // _LIBCPP_VERSION
+ #endif // __cplusplus
+-#endif // _LIBCPP_VERSION
+-- 
+2.43.0
+

diff --git a/media-libs/libv4l/libv4l-1.26.1.ebuild 
b/media-libs/libv4l/libv4l-1.26.1.ebuild
index d29bf0e53ee9..3480dac0970b 100644
--- a/media-libs/libv4l/libv4l-1.26.1.ebuild
+++ b/media-libs/libv4l/libv4l-1.26.1.ebuild
@@ -67,6 +67,7 @@ S="${WORKDIR}/${MY_P}"
 
 PATCHES=(
        "${FILESDIR}"/${PN}-1.26.0-meson.patch
+       "${FILESDIR}"/${PN}-1.26.1-libcxx.patch
 )
 
 check_llvm() {

Reply via email to