*** empty log message ***
[gnulib.git] / m4 / largefile.m4
index 9515f7e..515625d 100644 (file)
@@ -1,4 +1,4 @@
-#serial 5
+#serial 10
 
 dnl By default, many hosts won't let programs access large files;
 dnl one must use special compiler options to get large-file access to work.
@@ -12,23 +12,37 @@ dnl AC_SYS_LARGEFILE_FLAGS(FLAGSNAME)
 AC_DEFUN(AC_SYS_LARGEFILE_FLAGS,
   [AC_CACHE_CHECK([for $1 value to request large file support],
      ac_cv_sys_largefile_$1,
-     [ac_cv_sys_largefile_$1=`($GETCONF LFS_$1) 2>/dev/null` || {
+     [if ($GETCONF LFS_$1) >conftest.1 2>conftest.2 && test ! -s conftest.2
+      then
+        ac_cv_sys_largefile_$1=`cat conftest.1`
+      else
        ac_cv_sys_largefile_$1=no
        ifelse($1, CFLAGS,
          [case "$host_os" in
-          # IRIX 6.2 and later require cc -n32.
-changequote(, )dnl
-          irix6.[2-9]* | irix6.1[0-9]* | irix[7-9].* | irix[1-9][0-9]*)
-changequote([, ])dnl
+          # HP-UX 10.20 requires -D__STDC_EXT__ with gcc 2.95.1.
+[         hpux10.[2-9][0-9]* | hpux1[1-9]* | hpux[2-9][0-9]*)]
+            if test "$GCC" = yes; then
+              ac_cv_sys_largefile_CFLAGS=-D__STDC_EXT__
+            fi
+            ;;
+          # IRIX 6.2 and later do not support large files by default,
+          # so use the -n32 ABI unless the installer said otherwise.
+[         irix6.[2-9]* | irix6.1[0-9]* | irix[7-9].* | irix[1-9][0-9]*)]
             if test "$GCC" != yes; then
-              ac_cv_sys_largefile_CFLAGS=-n32
+              case "$CC $CFLAGS " in
+              *' -o32 '*|*' -n32 '*|*' -64 '*) ;;
+              *) ac_cv_sys_largefile_CFLAGS=-n32 ;;
+              esac
             fi
+          esac
+          if test "$ac_cv_sys_largefile_CFLAGS" != no; then
             ac_save_CC="$CC"
             CC="$CC $ac_cv_sys_largefile_CFLAGS"
             AC_TRY_LINK(, , , ac_cv_sys_largefile_CFLAGS=no)
             CC="$ac_save_CC"
-          esac])
-      }])])
+          fi])
+      fi
+      rm -f conftest*])])
 
 dnl Internal subroutine of AC_SYS_LARGEFILE.
 dnl AC_SYS_LARGEFILE_SPACE_APPEND(VAR, VAL)
@@ -47,17 +61,15 @@ dnl AC_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, CACHE-VAR, COMMENT, CODE-TO-SET-DEFAUL
 AC_DEFUN(AC_SYS_LARGEFILE_MACRO_VALUE,
   [AC_CACHE_CHECK([for $1], $2,
      [$2=no
-changequote(, )dnl
       $4
       for ac_flag in $ac_cv_sys_largefile_CFLAGS no; do
        case "$ac_flag" in
        -D$1)
          $2=1 ;;
        -D$1=*)
-         $2=`expr " $ac_flag" : '[^=]*=\(.*\)'` ;;
+         $2=`expr " $ac_flag" : '[[^=]]*=\(.*\)'` ;;
        esac
       done
-changequote([, ])dnl
       ])
    if test "[$]$2" != no; then
      AC_DEFINE_UNQUOTED([$1], [$]$2, [$3])
@@ -92,23 +104,30 @@ AC_DEFUN(AC_SYS_LARGEFILE,
        [Number of bits in a file offset, on hosts where this is settable.],
        [case "$host_os" in
        # HP-UX 10.20 and later
-       hpux10.[2-9][0-9]* | hpux1[1-9]* | hpux[2-9][0-9]*)
+[      hpux10.[2-9][0-9]* | hpux1[1-9]* | hpux[2-9][0-9]*)]
          ac_cv_sys_file_offset_bits=64 ;;
        esac])
+     AC_SYS_LARGEFILE_MACRO_VALUE(_GNU_SOURCE,
+       ac_cv_sys_gnu_source,
+       [Define to make ftello visible on some hosts (e.g. glibc 2.1.3).],
+       [AC_TRY_COMPILE([#include <stdio.h>], [return !ftello;], ,
+         [AC_TRY_COMPILE([#define _GNU_SOURCE 1
+#include <stdio.h>],
+            [return !ftello;],
+            ac_cv_sys_gnu_source=1)])])
      AC_SYS_LARGEFILE_MACRO_VALUE(_LARGEFILE_SOURCE,
        ac_cv_sys_largefile_source,
-       [Define to make fseeko etc. visible, on some hosts.],
-       [case "$host_os" in
-       # HP-UX 10.20 and later
-       hpux10.[2-9][0-9]* | hpux1[1-9]* | hpux[2-9][0-9]*)
-         ac_cv_sys_largefile_source=1 ;;
-       esac])
+       [Define to make ftello visible on some hosts (e.g. HP-UX 10.20).],
+       [AC_TRY_COMPILE([#include <stdio.h>], [return !ftello;], ,
+         [AC_TRY_COMPILE([#define _LARGEFILE_SOURCE 1
+#include <stdio.h>], [return !ftello;],
+            ac_cv_sys_largefile_source=1)])])
      AC_SYS_LARGEFILE_MACRO_VALUE(_LARGE_FILES,
        ac_cv_sys_large_files,
        [Define for large files, on AIX-style hosts.],
        [case "$host_os" in
        # AIX 4.2 and later
-       aix4.[2-9]* | aix4.1[0-9]* | aix[5-9].* | aix[1-9][0-9]*)
+[      aix4.[2-9]* | aix4.1[0-9]* | aix[5-9].* | aix[1-9][0-9]*)]
          ac_cv_sys_large_files=1 ;;
        esac])
    fi