--- /dev/null
+dnl Reentrant sort function.
+
+dnl Copyright 2014 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 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])
+
+ 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=no])])])
+
+ case $gl_cv_qsort_r_signature in
+ GNU) HAVE_QSORT_R=1;;
+ BSD) HAVE_QSORT_R=1 REPLACE_QSORT_R=1;;
+ *) HAVE_QSORT_R=0 REPLACE_QSORT_R=1;;
+ esac
+])