@@ -823,12 +823,10 @@ AC_MSG_RESULT(no) ]) ;; esac -AC_CHECK_FUNCS(strerror_r) - AC_CHECK_LIB(m, fmod, LIBS="$LIBS -lm") AC_CHECK_LIB(complex, creal, TESTS_LIBS="$TESTS_LIBS -lcomplex") AC_CHECK_FUNC(asprintf, [ case "$host" in @@ -1263,10 +1261,30 @@ ], [ AC_MSG_RESULT(yes) CPPFLAGS="-D_GNU_SOURCE $CPPFLAGS" ]) ]) + +dnl This check needs to happen after the above, as _GNU_SOURCE can change the +dnl return type. +AC_CHECK_FUNCS(strerror_r, [ + AC_MSG_CHECKING(for return type of strerror_r) + AC_TRY_COMPILE([ + #include + #include + ], [ + switch (strerror_r(0, NULL, 0)) { + case 0:; + } + ], [ + AC_MSG_RESULT(int) + ], [ + AC_MSG_RESULT(char *) + AC_DEFINE(STRERROR_R_RETURNS_CHARP, 1, + [Whether strerror_r returns char *]) + ]) +]) AC_CHECK_HEADERS(sys/utsname.h) AC_CHECK_FUNCS(uname) case "$host_os" in