Page MenuHomeFreeBSD

D36514.id111124.diff
No OneTemporary

D36514.id111124.diff

diff --git a/graphics/mesa-dri/files/patch-meson.build b/graphics/mesa-dri/files/patch-meson.build
new file mode 100644
--- /dev/null
+++ b/graphics/mesa-dri/files/patch-meson.build
@@ -0,0 +1,46 @@
+--- meson.build.orig 2022-03-18 19:26:47 UTC
++++ meson.build
+@@ -1414,11 +1414,42 @@ foreach f : ['strtof', 'mkostemp', 'timespec_get', 'me
+ endforeach
+
+ foreach f : ['strtof', 'mkostemp', 'timespec_get', 'memfd_create', 'random_r',
+- 'flock', 'strtok_r', 'getrandom', 'qsort_r', 'qsort_s']
++ 'flock', 'strtok_r', 'getrandom', 'qsort_s']
+ if cc.has_function(f)
+ pre_args += '-DHAVE_@0@'.format(f.to_upper())
+ endif
+ endforeach
++
++if cpp.links('''
++ #define _GNU_SOURCE
++ #include <stdlib.h>
++
++ static int dcomp(const void *l, const void *r, void *t) { return 0; }
++
++ int main(int ac, char **av) {
++ int arr[] = { 1 };
++ void *t = NULL;
++ qsort_r((void*)&arr[0], 1, 1, dcomp, t);
++ return (0);
++ }''',
++ args : pre_args,
++ name : 'GNU qsort_r')
++ pre_args += '-DHAVE_GNU_QSORT_R'
++elif cpp.links('''
++ #include <stdlib.h>
++
++ static int dcomp(void *t, const void *l, const void *r) { return 0; }
++
++ int main(int ac, char **av) {
++ int arr[] = { 1 };
++ void *t = NULL;
++ qsort_r((void*)&arr[0], 1, 1, t, dcomp);
++ return (0);
++ }''',
++ args : pre_args,
++ name : 'BSD qsort_r')
++ pre_args += '-DHAVE_BSD_QSORT_R'
++endif
+
+ if cc.has_header_symbol('errno.h', 'program_invocation_name',
+ args : '-D_GNU_SOURCE')
diff --git a/graphics/mesa-dri/files/patch-src_util_u__qsort.h b/graphics/mesa-dri/files/patch-src_util_u__qsort.h
new file mode 100644
--- /dev/null
+++ b/graphics/mesa-dri/files/patch-src_util_u__qsort.h
@@ -0,0 +1,26 @@
+--- src/util/u_qsort.h.orig 2022-03-18 19:26:47 UTC
++++ src/util/u_qsort.h
+@@ -56,8 +56,10 @@ util_qsort_r(void *base, size_t nmemb, size_t size,
+ int (*compar)(const void *, const void *, void *),
+ void *arg)
+ {
+-#if HAVE_QSORT_R
+-# if DETECT_OS_APPLE || DETECT_OS_BSD
++#if HAVE_GNU_QSORT_R
++ /* GNU extension added in glibc 2.8 */
++ qsort_r(base, nmemb, size, compar, arg);
++#elif HAVE_BSD_QSORT_R
+ /* BSD/macOS qsort_r takes "arg" before the comparison function and it
+ * pass the "arg" before the elements.
+ */
+@@ -66,10 +68,6 @@ util_qsort_r(void *base, size_t nmemb, size_t size,
+ arg
+ };
+ qsort_r(base, nmemb, size, &data, util_qsort_adapter);
+-# else
+- /* GNU extension added in glibc 2.8 */
+- qsort_r(base, nmemb, size, compar, arg);
+-# endif
+ #elif HAVE_QSORT_S
+ # ifdef _WIN32
+ /* MSVC/MinGW qsort_s takes "arg" after the comparison function and it

File Metadata

Mime Type
text/plain
Expires
Sun, Feb 8, 5:38 PM (16 h, 12 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28479743
Default Alt Text
D36514.id111124.diff (2 KB)

Event Timeline