Bruno Haible wrote: > When cross-compiling, configure says: > > checking for working getgroups... no > > Here's a proposed patch for improving this in gnulib. Again, would it be > better to modify AC_FUNC_GETGROUPS in Autoconf? > > > 2012-05-01 Bruno Haible <br...@clisp.org> > > getgroups: Avoid "guessing no" when cross-compiling to glibc systems. > * m4/getgroups.m4 (gl_FUNC_GETGROUPS): When cross-compiling, set > ac_cv_func_getgroups_works without invoking AC_FUNC_GETGROUPS.
To apply that, I had to first apply your other one Subject: cross-compilation guesses (2) Once applied, you get a slightly better perspective when viewing the diff ignoring space changes. diff --git a/m4/getgroups.m4 b/m4/getgroups.m4 index 796a831..a642a07 100644 --- a/m4/getgroups.m4 +++ b/m4/getgroups.m4 @@ -1,4 +1,4 @@ -# serial 17 +# serial 18 dnl From Jim Meyering. dnl A wrapper around AC_FUNC_GETGROUPS. @@ -11,14 +11,37 @@ dnl A wrapper around AC_FUNC_GETGROUPS. AC_DEFUN([gl_FUNC_GETGROUPS], [ - AC_REQUIRE([AC_FUNC_GETGROUPS]) AC_REQUIRE([AC_TYPE_GETGROUPS]) AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + + AC_CHECK_FUNCS([getgroups]) if test "$ac_cv_func_getgroups" != yes; then HAVE_GETGROUPS=0 - elif test "$ac_cv_func_getgroups_works.$ac_cv_type_getgroups" != yes.gid_t - then + else + if test $cross_compiling = no; then + AC_FUNC_GETGROUPS + else + dnl Improved cross-compilation guess. + case "$host_os" in + # Guess yes on glibc systems. + *-gnu*) ac_cv_func_getgroups_works="guessing yes" ;; + # If we don't know, assume the worst. + *) ac_cv_func_getgroups_works="guessing no" ;; + esac + fi + case "$ac_cv_func_getgroups" in + *yes) + AC_DEFINE([HAVE_GETGROUPS], [1], + [Define to 1 if your system has a working 'getgroups' function.]) + ;; + esac + if test "$ac_cv_type_getgroups" != gid_t \ + || { case "$ac_cv_func_getgroups_works in + *yes) false;; + *) true;; + esac + }; then REPLACE_GETGROUPS=1 AC_DEFINE([GETGROUPS_ZERO_BUG], [1], [Define this to 1 if getgroups(0,NULL) does not return the number of groups.]) @@ -46,5 +69,6 @@ AC_DEFUN([gl_FUNC_GETGROUPS], ;; esac fi + fi test -n "$GETGROUPS_LIB" && LIBS="$GETGROUPS_LIB $LIBS" ]) But reading that isn't easy, either, so I went with side-by-side using emacs' ediff-revision. And that looks correct. However, one change would be nice (in the reindented part), replacing this: case "$gl_cv_func_getgroups_works" in *yes) ;; *) REPLACE_GETGROUPS=1 ;; esac with this: case "$gl_cv_func_getgroups_works" in *yes) ;; *) REPLACE_GETGROUPS=1 ;; esac