Branch
Hash :
c751b471
Author :
Date :
2025-09-20T22:41:16
qsort_r: Port to Android API level 36. * m4/qsort_r.m4 (gl_FUNC_QSORT_R): Use gl_CHECK_FUNCS_ANDROID to check for qsort_r instead of AC_CHECK_FUNCS_ONCE. * doc/glibc-functions/qsort_r.texi: Document that the function is missing on Android API 35 and lower.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
# qsort_r.m4
# serial 2
dnl Copyright 2014-2025 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl This file is offered as-is, without any warranty.
dnl Reentrant sort function.
dnl Written by Paul Eggert.
AC_DEFUN([gl_FUNC_QSORT_R],
[
dnl Persuade glibc to declare qsort_r.
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
gl_CHECK_FUNCS_ANDROID([qsort_r], [[#include <stdlib.h>]])
if test $ac_cv_func_qsort_r = yes; then
AC_CACHE_CHECK([for qsort_r signature], [gl_cv_qsort_r_signature],
[AC_LINK_IFELSE(
[AC_LANG_PROGRAM([[#include <stdlib.h>
void qsort_r (void *, size_t, size_t,
int (*) (void const *, void const *,
void *),
void *);
void (*p) (void *, size_t, size_t,
int (*) (void const *, void const *,
void *),
void *) = qsort_r;
]])],
[gl_cv_qsort_r_signature=GNU],
[AC_LINK_IFELSE(
[AC_LANG_PROGRAM([[#include <stdlib.h>
void qsort_r (void *, size_t, size_t, void *,
int (*) (void *,
void const *,
void const *));
void (*p) (void *, size_t, size_t, void *,
int (*) (void *, void const *,
void const *)) = qsort_r;
]])],
[gl_cv_qsort_r_signature=BSD],
[gl_cv_qsort_r_signature=unknown])])])
case $gl_cv_qsort_r_signature in
GNU) ;;
BSD) REPLACE_QSORT_R=1 ;;
unknown) HAVE_QSORT_R=0 REPLACE_QSORT_R=1 ;;
esac
else
HAVE_QSORT_R=0
fi
])