summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Olbrich <m.olbrich@pengutronix.de>2023-07-31 20:06:05 +0200
committerMichael Olbrich <m.olbrich@pengutronix.de>2023-07-31 20:06:05 +0200
commitdbf616b650552733786ff6b96f7b98a42128c398 (patch)
tree9078307823c463f196ab6ed30c5f40473cac3301
parentf29980c9b059cff479c55d2526d6a73e879fa764 (diff)
downloadptxdist-2023.08.0.tar.gz
ptxdist-2023.08.0.tar.xz
pipewire: add upstream fix to build with older compilersptxdist-2023.08.0
Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
-rw-r--r--patches/pipewire-0.3.76/0001-spa-fixes-for-dereferencing-pointer-to-incomplete-ty.patch56
-rw-r--r--patches/pipewire-0.3.76/series4
2 files changed, 60 insertions, 0 deletions
diff --git a/patches/pipewire-0.3.76/0001-spa-fixes-for-dereferencing-pointer-to-incomplete-ty.patch b/patches/pipewire-0.3.76/0001-spa-fixes-for-dereferencing-pointer-to-incomplete-ty.patch
new file mode 100644
index 000000000..9ce3c90b2
--- /dev/null
+++ b/patches/pipewire-0.3.76/0001-spa-fixes-for-dereferencing-pointer-to-incomplete-ty.patch
@@ -0,0 +1,56 @@
+From: Sourav Das <souravdas142@gmail.com>
+Date: Sun, 30 Jul 2023 10:23:25 +0530
+Subject: [PATCH] spa: fixes for dereferencing pointer to incomplete type in
+ __typeof__
+
+ before gcc 10 its not supporting pointer dereferencing in __typeof__.
+ so made changes according to that. Fixes #3375
+
+ clang also defines __GNUC__ and resolves '4' along with __clang__ which
+ resolves '1'. On any version of clang, __GNUC__ and resolves '4'.
+ anyway clang has this feature since version 3.
+---
+ spa/include/spa/utils/cleanup.h | 16 ++++++++++++++++
+ 1 file changed, 16 insertions(+)
+
+diff --git a/spa/include/spa/utils/cleanup.h b/spa/include/spa/utils/cleanup.h
+index 04e2bd193f6e..aa3eb2eea71b 100644
+--- a/spa/include/spa/utils/cleanup.h
++++ b/spa/include/spa/utils/cleanup.h
+@@ -40,13 +40,20 @@ __extension__ ({ \
+ _old_value; \
+ })
+
++#if __GNUC__ > 10 || defined(__clang__)
+ #define spa_steal_ptr(ptr) ((__typeof__(*(ptr)) *) spa_exchange((ptr), NULL))
++#else
++#define spa_steal_ptr(ptr) ((__typeof__(ptr)) spa_exchange((ptr), NULL))
++#endif
++
+ #define spa_steal_fd(fd) spa_exchange((fd), -1)
+
+ /* ========================================================================== */
+
+ #include <stdlib.h>
+
++
++#if __GNUC__ > 10 || defined(__clang__)
+ #define spa_clear_ptr(ptr, destructor) \
+ __extension__ ({ \
+ __typeof__(*(ptr)) *_old_value = spa_steal_ptr(ptr); \
+@@ -54,6 +61,15 @@ __extension__ ({ \
+ destructor(_old_value); \
+ (void) 0; \
+ })
++#else
++#define spa_clear_ptr(ptr, destructor) \
++__extension__ ({ \
++ __typeof__(ptr) _old_value = spa_steal_ptr(ptr); \
++ if (_old_value) \
++ destructor(_old_value); \
++ (void) 0; \
++})
++#endif
+
+ static inline void _spa_autofree_cleanup_func(void *p)
+ {
diff --git a/patches/pipewire-0.3.76/series b/patches/pipewire-0.3.76/series
new file mode 100644
index 000000000..0969cdc94
--- /dev/null
+++ b/patches/pipewire-0.3.76/series
@@ -0,0 +1,4 @@
+# generated by git-ptx-patches
+#tag:base --start-number 1
+0001-spa-fixes-for-dereferencing-pointer-to-incomplete-ty.patch
+# f664d909a9bfc1aca629f79fc2991ed1 - git-ptx-patches magic