| #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. |
| dnl For more details about this brain damage please see: |
| dnl http://www.sas.com/standards/large.file/x_open.20Mar96.html |
| |
| dnl Written by Paul Eggert <eggert@twinsun.com>. |
| |
| dnl Internal subroutine of AC_SYS_LARGEFILE. |
| dnl AC_SYS_LARGEFILE_TEST_INCLUDES |
| AC_DEFUN(AC_SYS_LARGEFILE_TEST_INCLUDES, |
| [[#include <sys/types.h> |
| /* 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. |
| dnl AC_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE, CACHE-VAR, COMMENT, INCLUDES, FUNCTION-BODY) |
| AC_DEFUN(AC_SYS_LARGEFILE_MACRO_VALUE, |
| [AC_CACHE_CHECK([for $1 value needed for large files], $3, |
| [$3=no |
| AC_TRY_COMPILE([$5], |
| [$6], |
| , |
| [AC_TRY_COMPILE([#define $1 $2] |
| [$5] |
| , |
| [$6], |
| [$3=$2])])]) |
| if test "[$]$3" != no; then |
| AC_DEFINE_UNQUOTED([$1], [$]$3, [$4]) |
| fi]) |
| |
| AC_DEFUN(NANO_AC_SYS_LARGEFILE, |
| [AC_REQUIRE([AC_PROG_CC]) |
| AC_ARG_ENABLE(largefile, |
| [ --disable-largefile omit support for large files]) |
| if test "$enable_largefile" != no; then |
| |
| AC_CACHE_CHECK([for special C compiler options needed for large files], |
| ac_cv_sys_largefile_CC, |
| [ac_cv_sys_largefile_CC=no |
| if test "$GCC" != yes; then |
| # IRIX 6.2 and later do not support large files by default, |
| # so use the C compiler's -n32 option if that helps. |
| AC_TRY_COMPILE(AC_SYS_LARGEFILE_TEST_INCLUDES, , , |
| [ac_save_CC="$CC" |
| CC="$CC -n32" |
| AC_TRY_COMPILE(AC_SYS_LARGEFILE_TEST_INCLUDES, , |
| ac_cv_sys_largefile_CC=' -n32') |
| CC="$ac_save_CC"]) |
| fi]) |
| if test "$ac_cv_sys_largefile_CC" != no; then |
| CC="$CC$ac_cv_sys_largefile_CC" |
| fi |
| |
| 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_TEST_INCLUDES) |
| AC_SYS_LARGEFILE_MACRO_VALUE(_LARGE_FILES, 1, |
| ac_cv_sys_large_files, |
| [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]) |