bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: cross-compilation guesses (4)


From: Jim Meyering
Subject: Re: cross-compilation guesses (4)
Date: Wed, 02 May 2012 15:50:40 +0200

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  <address@hidden>
>
>       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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]