Imported Upstream version 1.5
[debian/gzip] / m4 / utimens.m4
index 2baa2561035f528ad7eafd190abb4cd230ab0299..6a8b6ab78c0663337dffe55769b9ead38f86ce0d 100644 (file)
@@ -1,18 +1,17 @@
-dnl Copyright (C) 2003-2010 Free Software Foundation, Inc.
+dnl Copyright (C) 2003-2012 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
 
-dnl serial 4
+dnl serial 7
 
 AC_DEFUN([gl_UTIMENS],
 [
-  AC_LIBOBJ([utimens])
-
   dnl Prerequisites of lib/utimens.c.
   AC_REQUIRE([gl_FUNC_UTIMES])
   AC_REQUIRE([gl_CHECK_TYPE_STRUCT_TIMESPEC])
   AC_REQUIRE([gl_CHECK_TYPE_STRUCT_UTIMBUF])
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
   AC_CHECK_FUNCS_ONCE([futimes futimesat futimens utimensat lutimes])
 
   if test $ac_cv_func_futimens = no && test $ac_cv_func_futimesat = yes; then
@@ -25,17 +24,27 @@ AC_DEFUN([gl_UTIMENS],
        AC_RUN_IFELSE([AC_LANG_PROGRAM([[
 #include <stddef.h>
 #include <sys/times.h>
+#include <fcntl.h>
 ]], [[    int fd = open ("conftest.file", O_RDWR);
           if (fd < 0) return 1;
           if (futimesat (fd, NULL, NULL)) return 2;
         ]])],
         [gl_cv_func_futimesat_works=yes],
         [gl_cv_func_futimesat_works=no],
-        [gl_cv_func_futimesat_works="guessing no"])
+        [case "$host_os" in
+                   # Guess yes on glibc systems.
+           *-gnu*) gl_cv_func_futimesat_works="guessing yes" ;;
+                   # If we don't know, assume the worst.
+           *)      gl_cv_func_futimesat_works="guessing no" ;;
+         esac
+        ])
       rm -f conftest.file])
-    if test "$gl_cv_func_futimesat_works" != yes; then
-      AC_DEFINE([FUTIMESAT_NULL_BUG], [1],
-        [Define to 1 if futimesat mishandles a NULL file name.])
-    fi
+    case "$gl_cv_func_futimesat_works" in
+      *yes) ;;
+      *)
+        AC_DEFINE([FUTIMESAT_NULL_BUG], [1],
+          [Define to 1 if futimesat mishandles a NULL file name.])
+        ;;
+    esac
   fi
 ])