Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 28 Sep 2022 05:01:38 GMT
From:      Xin LI <delphij@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: 1b1270010864 - main - graphics/mesa-dri: Improve qsort_r detection.
Message-ID:  <202209280501.28S51cN5044257@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by delphij:

URL: https://cgit.FreeBSD.org/ports/commit/?id=1b12700108642534ba3ed31b49c1340c7fd2f0e5

commit 1b12700108642534ba3ed31b49c1340c7fd2f0e5
Author:     Xin LI <delphij@FreeBSD.org>
AuthorDate: 2022-09-28 04:52:09 +0000
Commit:     Xin LI <delphij@FreeBSD.org>
CommitDate: 2022-09-28 04:52:10 +0000

    graphics/mesa-dri: Improve qsort_r detection.
    
    Reviewed by:    manu
    Differential Revision: https://reviews.freebsd.org/D36514
---
 graphics/mesa-dri/files/patch-meson.build         | 46 +++++++++++++++++++++++
 graphics/mesa-dri/files/patch-src_util_u__qsort.h | 26 +++++++++++++
 2 files changed, 72 insertions(+)

diff --git a/graphics/mesa-dri/files/patch-meson.build b/graphics/mesa-dri/files/patch-meson.build
new file mode 100644
index 000000000000..21cdcf840400
--- /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
index 000000000000..f199fecd7b56
--- /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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202209280501.28S51cN5044257>