| From 217ffa021257fc2313c9eeb3e94e2ee38d255634 Mon Sep 17 00:00:00 2001 |
| From: Peter Jones <pjones@redhat.com> |
| Date: Wed, 15 Apr 2015 12:25:29 -0400 |
| Subject: [PATCH] Enable large file support |
| |
| https://bugs.freedesktop.org/show_bug.cgi?id=90078 |
| |
| Signed-off-by: Peter Jones <pjones@redhat.com> |
| |
| [Alexandre Rostovtsev <tetromino@gentoo.org>: expand out configure, |
| config.h.in modifications.] |
| --- |
| configure.ac | 3 + |
| config.h.in | 11 ++++ |
| configure | 203 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| 3 files changed, 217 insertions(+) |
| |
| diff --git a/configure.ac b/configure.ac |
| index 2b33371..1a321e1 100644 |
| --- a/configure.ac |
| +++ b/configure.ac |
| @@ -17,6 +17,9 @@ dnl by either passing --disable-silent-rules to configure or passing V=1 |
| dnl to make |
| m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) |
| |
| +dnl Enable large file support |
| +AC_SYS_LARGEFILE |
| + |
| dnl Check for programs |
| AC_PROG_CC |
| AC_CHECK_PROG([LN], [ln], [ln], [cp -Rp]) |
| diff --git a/config.h.in b/config.h.in |
| index 0aac8f3..fdae454 100644 |
| --- a/config.h.in |
| +++ b/config.h.in |
| @@ -72,3 +72,14 @@ |
| |
| /* Version number of package */ |
| #undef VERSION |
| + |
| +/* Enable large inode numbers on Mac OS X 10.5. */ |
| +#ifndef _DARWIN_USE_64_BIT_INODE |
| +# define _DARWIN_USE_64_BIT_INODE 1 |
| +#endif |
| + |
| +/* Number of bits in a file offset, on hosts where this is settable. */ |
| +#undef _FILE_OFFSET_BITS |
| + |
| +/* Define for large files, on AIX-style hosts. */ |
| +#undef _LARGE_FILES |
| diff --git a/configure b/configure |
| index 160ecab..f897e22 100755 |
| --- a/configure |
| +++ b/configure |
| @@ -783,6 +783,7 @@ with_gnu_ld |
| with_sysroot |
| enable_libtool_lock |
| enable_silent_rules |
| +enable_largefile |
| with_pc_path |
| with_system_include_path |
| with_system_library_path |
| @@ -1435,6 +1436,7 @@ Optional Features: |
| --disable-libtool-lock avoid locking (might break parallel builds) |
| --enable-silent-rules less verbose build output (undo: "make V=1") |
| --disable-silent-rules verbose build output (undo: "make V=0") |
| + --disable-largefile omit support for large files |
| --enable-indirect-deps list both direct and indirect dependencies. |
| --disable-indirect-deps only list direct dependencies. |
| default=auto |
| @@ -11389,6 +11391,207 @@ fi |
| AM_BACKSLASH='\' |
| |
| |
| +# Check whether --enable-largefile was given. |
| +if test "${enable_largefile+set}" = set; then : |
| + enableval=$enable_largefile; |
| +fi |
| + |
| +if test "$enable_largefile" != no; then |
| + |
| + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 |
| +$as_echo_n "checking for special C compiler options needed for large files... " >&6; } |
| +if ${ac_cv_sys_largefile_CC+:} false; then : |
| + $as_echo_n "(cached) " >&6 |
| +else |
| + ac_cv_sys_largefile_CC=no |
| + if test "$GCC" != yes; then |
| + ac_save_CC=$CC |
| + while :; do |
| + # IRIX 6.2 and later do not support large files by default, |
| + # so use the C compiler's -n32 option if that helps. |
| + cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
| +/* end confdefs.h. */ |
| +#include <sys/types.h> |
| + /* Check that off_t can represent 2**63 - 1 correctly. |
| + We can't simply define LARGE_OFF_T to be 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]; |
| +int |
| +main () |
| +{ |
| + |
| + ; |
| + return 0; |
| +} |
| +_ACEOF |
| + if ac_fn_c_try_compile "$LINENO"; then : |
| + break |
| +fi |
| +rm -f core conftest.err conftest.$ac_objext |
| + CC="$CC -n32" |
| + if ac_fn_c_try_compile "$LINENO"; then : |
| + ac_cv_sys_largefile_CC=' -n32'; break |
| +fi |
| +rm -f core conftest.err conftest.$ac_objext |
| + break |
| + done |
| + CC=$ac_save_CC |
| + rm -f conftest.$ac_ext |
| + fi |
| +fi |
| +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 |
| +$as_echo "$ac_cv_sys_largefile_CC" >&6; } |
| + if test "$ac_cv_sys_largefile_CC" != no; then |
| + CC=$CC$ac_cv_sys_largefile_CC |
| + fi |
| + |
| + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 |
| +$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } |
| +if ${ac_cv_sys_file_offset_bits+:} false; then : |
| + $as_echo_n "(cached) " >&6 |
| +else |
| + while :; do |
| + cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
| +/* end confdefs.h. */ |
| +#include <sys/types.h> |
| + /* Check that off_t can represent 2**63 - 1 correctly. |
| + We can't simply define LARGE_OFF_T to be 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]; |
| +int |
| +main () |
| +{ |
| + |
| + ; |
| + return 0; |
| +} |
| +_ACEOF |
| +if ac_fn_c_try_compile "$LINENO"; then : |
| + ac_cv_sys_file_offset_bits=no; break |
| +fi |
| +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext |
| + cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
| +/* end confdefs.h. */ |
| +#define _FILE_OFFSET_BITS 64 |
| +#include <sys/types.h> |
| + /* Check that off_t can represent 2**63 - 1 correctly. |
| + We can't simply define LARGE_OFF_T to be 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]; |
| +int |
| +main () |
| +{ |
| + |
| + ; |
| + return 0; |
| +} |
| +_ACEOF |
| +if ac_fn_c_try_compile "$LINENO"; then : |
| + ac_cv_sys_file_offset_bits=64; break |
| +fi |
| +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext |
| + ac_cv_sys_file_offset_bits=unknown |
| + break |
| +done |
| +fi |
| +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 |
| +$as_echo "$ac_cv_sys_file_offset_bits" >&6; } |
| +case $ac_cv_sys_file_offset_bits in #( |
| + no | unknown) ;; |
| + *) |
| +cat >>confdefs.h <<_ACEOF |
| +#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits |
| +_ACEOF |
| +;; |
| +esac |
| +rm -rf conftest* |
| + if test $ac_cv_sys_file_offset_bits = unknown; then |
| + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 |
| +$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } |
| +if ${ac_cv_sys_large_files+:} false; then : |
| + $as_echo_n "(cached) " >&6 |
| +else |
| + while :; do |
| + cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
| +/* end confdefs.h. */ |
| +#include <sys/types.h> |
| + /* Check that off_t can represent 2**63 - 1 correctly. |
| + We can't simply define LARGE_OFF_T to be 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]; |
| +int |
| +main () |
| +{ |
| + |
| + ; |
| + return 0; |
| +} |
| +_ACEOF |
| +if ac_fn_c_try_compile "$LINENO"; then : |
| + ac_cv_sys_large_files=no; break |
| +fi |
| +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext |
| + cat confdefs.h - <<_ACEOF >conftest.$ac_ext |
| +/* end confdefs.h. */ |
| +#define _LARGE_FILES 1 |
| +#include <sys/types.h> |
| + /* Check that off_t can represent 2**63 - 1 correctly. |
| + We can't simply define LARGE_OFF_T to be 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]; |
| +int |
| +main () |
| +{ |
| + |
| + ; |
| + return 0; |
| +} |
| +_ACEOF |
| +if ac_fn_c_try_compile "$LINENO"; then : |
| + ac_cv_sys_large_files=1; break |
| +fi |
| +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext |
| + ac_cv_sys_large_files=unknown |
| + break |
| +done |
| +fi |
| +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 |
| +$as_echo "$ac_cv_sys_large_files" >&6; } |
| +case $ac_cv_sys_large_files in #( |
| + no | unknown) ;; |
| + *) |
| +cat >>confdefs.h <<_ACEOF |
| +#define _LARGE_FILES $ac_cv_sys_large_files |
| +_ACEOF |
| +;; |
| +esac |
| +rm -rf conftest* |
| + fi |
| + |
| + |
| +fi |
| + |
| + |
| ac_ext=c |
| ac_cpp='$CPP $CPPFLAGS' |
| ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' |
| -- |
| 2.4.2 |
| |