bug-gnulib
[Top][All Lists]
Advanced

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

cross-compilation guesses (3)


From: Bruno Haible
Subject: cross-compilation guesses (3)
Date: Tue, 01 May 2012 23:03:38 +0200
User-agent: KMail/4.7.4 (Linux/3.1.10-1.9-desktop; KDE/4.7.4; x86_64; ; )

Configure output when cross-compiling:

  checking for working chown... no

This message comes from AC_FUNC_CHOWN in Autoconf. Here's a proposed patch
that touches Gnulib only. Should I submit a patch for Autoconf? Or is
Autoconf always preferring pessimistic guesses, regardless of platform?


2012-05-01  Bruno Haible  <address@hidden>

        chown: Avoid "guessing no" when cross-compiling to glibc systems.
        * m4/chown.m4 (gl_FUNC_CHOWN): When cross-compiling, set
        ac_cv_func_chown_works without invoking AC_FUNC_CHOWN.

--- m4/chown.m4.orig    Tue May  1 22:57:37 2012
+++ m4/chown.m4 Tue May  1 22:56:51 2012
@@ -1,4 +1,4 @@
-# serial 26
+# serial 27
 # Determine whether we need the chown wrapper.
 
 dnl Copyright (C) 1997-2001, 2003-2005, 2007, 2009-2012 Free Software
@@ -18,7 +18,6 @@
 [
   AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
   AC_REQUIRE([AC_TYPE_UID_T])
-  AC_REQUIRE([AC_FUNC_CHOWN])
   AC_REQUIRE([gl_FUNC_CHOWN_FOLLOWS_SYMLINK])
   AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
   AC_CHECK_FUNCS_ONCE([chown fchown])
@@ -33,11 +32,28 @@
     fi
 
     dnl Some old systems tried to use uid/gid -1 literally.
-    if test $ac_cv_func_chown_works = no; then
-      AC_DEFINE([CHOWN_FAILS_TO_HONOR_ID_OF_NEGATIVE_ONE], [1],
-        [Define if chown is not POSIX compliant regarding IDs of -1.])
-      REPLACE_CHOWN=1
+    if test $cross_compiling = no; then
+      AC_FUNC_CHOWN
+    else
+      dnl Improved cross-compilation guess.
+      case "$host_os" in
+                # Guess yes on glibc systems.
+        *-gnu*) ac_cv_func_chown_works="guessing yes" ;;
+                # If we don't know, assume the worst.
+        *)      ac_cv_func_chown_works="guessing no" ;;
+      esac
     fi
+    case "$ac_cv_func_chown_works" in
+      *yes)
+        AC_DEFINE([HAVE_CHOWN], [1],
+          [Define to 1 if your system has a working 'chown' function.])
+        ;;
+      *)
+        AC_DEFINE([CHOWN_FAILS_TO_HONOR_ID_OF_NEGATIVE_ONE], [1],
+          [Define if chown is not POSIX compliant regarding IDs of -1.])
+        REPLACE_CHOWN=1
+        ;;
+    esac
 
     dnl Solaris 9 ignores trailing slash.
     dnl FreeBSD 7.2 mishandles trailing slash on symlinks.




reply via email to

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