aboutsummaryrefslogtreecommitdiff
path: root/acinclude.m4
diff options
context:
space:
mode:
Diffstat (limited to 'acinclude.m4')
-rw-r--r--acinclude.m455
1 files changed, 36 insertions, 19 deletions
diff --git a/acinclude.m4 b/acinclude.m4
index 2809dcfc4..db38757d7 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -1,4 +1,4 @@
-#serial 12
+#serial 19
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.
@@ -11,7 +11,14 @@ dnl Internal subroutine of AC_SYS_LARGEFILE.
dnl AC_SYS_LARGEFILE_TEST_INCLUDES
AC_DEFUN(AC_SYS_LARGEFILE_TEST_INCLUDES,
[[#include <sys/types.h>
- int a[(off_t) 9223372036854775807 == 9223372036854775807 ? 1 : -1];
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply "#define LARGE_OFF_T 9223372036854775807",
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+# define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
]])
dnl Internal subroutine of AC_SYS_LARGEFILE.
@@ -19,14 +26,11 @@ dnl AC_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE, CACHE-VAR, COMMENT, INCLUDES, F
AC_DEFUN(AC_SYS_LARGEFILE_MACRO_VALUE,
[AC_CACHE_CHECK([for $1 value needed for large files], $3,
[$3=no
- AC_TRY_COMPILE(AC_SYS_LARGEFILE_TEST_INCLUDES
-$5
- ,
+ AC_TRY_COMPILE([$5],
[$6],
,
[AC_TRY_COMPILE([#define $1 $2]
-AC_SYS_LARGEFILE_TEST_INCLUDES
-$5
+[$5]
,
[$6],
[$3=$2])])])
@@ -35,7 +39,8 @@ $5
fi])
AC_DEFUN(AC_SYS_LARGEFILE,
- [AC_ARG_ENABLE(largefile,
+ [AC_REQUIRE([AC_PROG_CC])
+ AC_ARG_ENABLE(largefile,
[ --disable-largefile omit support for large files])
if test "$enable_largefile" != no; then
@@ -58,18 +63,30 @@ AC_DEFUN(AC_SYS_LARGEFILE,
AC_SYS_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS, 64,
ac_cv_sys_file_offset_bits,
- [Number of bits in a file offset, on hosts where this is settable.])
- AC_SYS_LARGEFILE_MACRO_VALUE(_LARGEFILE_SOURCE, 1,
- ac_cv_sys_largefile_source,
- [Define to make ftello visible on some hosts (e.g. HP-UX 10.20).],
- [#include <stdio.h>], [return !ftello;])
+ [Number of bits in a file offset, on hosts where this is settable.],
+ AC_SYS_LARGEFILE_TEST_INCLUDES)
AC_SYS_LARGEFILE_MACRO_VALUE(_LARGE_FILES, 1,
ac_cv_sys_large_files,
- [Define for large files, on AIX-style hosts.])
-dnl lftp does not need ftello, and _XOPEN_SOURCE=500 makes resolv.h fail.
-dnl AC_SYS_LARGEFILE_MACRO_VALUE(_XOPEN_SOURCE, 500,
-dnl ac_cv_sys_xopen_source,
-dnl [Define to make ftello visible on some hosts (e.g. glibc 2.1.3).],
-dnl [#include <stdio.h>], [return !ftello;])
+ [Define for large files, on AIX-style hosts.],
+ AC_SYS_LARGEFILE_TEST_INCLUDES)
fi
])
+
+AC_DEFUN(AC_FUNC_FSEEKO,
+ [AC_SYS_LARGEFILE_MACRO_VALUE(_LARGEFILE_SOURCE, 1,
+ ac_cv_sys_largefile_source,
+ [Define to make fseeko visible on some hosts (e.g. glibc 2.2).],
+ [#include <stdio.h>], [return !fseeko;])
+ # We used to try defining _XOPEN_SOURCE=500 too, to work around a bug
+ # in glibc 2.1.3, but that breaks too many other things.
+ # If you want fseeko and ftello with glibc, upgrade to a fixed glibc.
+
+ AC_CACHE_CHECK([for fseeko], ac_cv_func_fseeko,
+ [ac_cv_func_fseeko=no
+ AC_TRY_LINK([#include <stdio.h>],
+ [return fseeko && fseeko (stdin, 0, 0);],
+ [ac_cv_func_fseeko=yes])])
+ if test $ac_cv_func_fseeko != no; then
+ AC_DEFINE(HAVE_FSEEKO, 1,
+ [Define if fseeko (and presumably ftello) exists and is declared.])
+ fi])