[Top][All Lists]
[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