link-follow: Avoid guessing wrong when cross-compiling to glibc/Linux.
authorBruno Haible <bruno@clisp.org>
Sat, 5 May 2012 10:50:17 +0000 (12:50 +0200)
committerBruno Haible <bruno@clisp.org>
Sat, 5 May 2012 10:50:17 +0000 (12:50 +0200)
* m4/link-follow.m4 (gl_FUNC_LINK_FOLLOWS_SYMLINK): Require
AC_CANONICAL_HOST. When cross-compiling to a glibc/Linux platform,
set gl_cv_func_link_follows_symlink to "guessing no".

ChangeLog
m4/link-follow.m4

index 2a39ae4..ec46c1e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2012-05-05  Bruno Haible  <bruno@clisp.org>
 
+       link-follow: Avoid guessing wrong when cross-compiling to glibc/Linux.
+       * m4/link-follow.m4 (gl_FUNC_LINK_FOLLOWS_SYMLINK): Require
+       AC_CANONICAL_HOST. When cross-compiling to a glibc/Linux platform,
+       set gl_cv_func_link_follows_symlink to "guessing no".
+
+2012-05-05  Bruno Haible  <bruno@clisp.org>
+
        tzset: Avoid guessing wrong when cross-compiling to glibc systems.
        * m4/tzset.m4 (gl_FUNC_TZSET_CLOBBER): Require AC_CANONICAL_HOST. When
        cross-compiling to a glibc platform, set gl_cv_func_tzset_clobber to
index 0dc3188..309e427 100644 (file)
@@ -1,4 +1,4 @@
-# serial 17
+# serial 18
 dnl Run a program to determine whether link(2) follows symlinks.
 dnl Set LINK_FOLLOWS_SYMLINKS accordingly.
 
@@ -16,6 +16,7 @@ dnl link() is sufficient).  If it is -1, use a Solaris specific
 dnl runtime test.  If it is -2, use a generic runtime test.
 AC_DEFUN([gl_FUNC_LINK_FOLLOWS_SYMLINK],
 [dnl
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
   AC_CHECK_FUNCS_ONCE([readlink])
   dnl Mingw lacks link, although gnulib provides a good replacement.
   dnl However, it also lacks symlink, so there's nothing to test in
@@ -81,13 +82,21 @@ AC_DEFUN([gl_FUNC_LINK_FOLLOWS_SYMLINK],
            ]])],
            [gl_cv_func_link_follows_symlink=no], dnl GNU behavior
            [gl_cv_func_link_follows_symlink=yes], dnl Followed link/compile failed
-           [gl_cv_func_link_follows_symlink=unknown] dnl We're cross compiling.
-         )
+           [dnl We're cross compiling.
+            dnl The past results are "yes" on MacOS X, FreeBSD, NetBSD,
+            dnl OpenBSD, Minix, AIX, HP-UX, OSF/1, and "no" on Linux, Cygwin.
+            case "$host_os" in
+                           # On glibc/Linux we know the result.
+              linux*-gnu*) gl_cv_func_link_follows_symlink="guessing no" ;;
+                           # Otherwise, we don't know.
+              *)           gl_cv_func_link_follows_symlink=unknown ;;
+            esac
+           ])
          rm -f conftest.file conftest.sym conftest.hard
         ])
-      case $gl_cv_func_link_follows_symlink in
-        yes) gl_link_follows_symlinks=1 ;;
-        no) ;; # already defaulted to 0
+      case "$gl_cv_func_link_follows_symlink" in
+        *yes) gl_link_follows_symlinks=1 ;;
+        *no) ;; # already defaulted to 0
         *) gl_link_follows_symlinks=-2 ;;
       esac
     fi