Paul Eggert <egg...@cs.ucla.edu> writes: > This patch is mostly taken from Autoconf master. > * m4/largefile.m4 (AC_SYS_YEAR2038_RECOMMENDED): > Undefine if unpatched Autoconf 2.72 or earlier, so that > later code will redefine it. > The remaining part of this patch is from Autoconf master. > (_AC_SYS_YEAR2038_PROBE, _AC_SYS_LARGEFILE_PROBE): > Put "$CCFLAGS" in diagnostics, not "$CC". > (_AC_SYS_LARGEFILE_OPTIONS): Omit -n32. > (AC_SYS_LARGEFILE_PROBE): Fiddle with CPPFLAGS, not CC. > Do not worry about -n32. > --- > ChangeLog | 12 ++++++++++++ > m4/largefile.m4 | 33 ++++++++++++++++++++-------------
Please crank serial. > 2 files changed, 32 insertions(+), 13 deletions(-) > > diff --git a/ChangeLog b/ChangeLog > index 6564e09ac5..676aaef0be 100644 > --- a/ChangeLog > +++ b/ChangeLog > @@ -1,5 +1,17 @@ > 2024-04-24 Paul Eggert <egg...@cs.ucla.edu> > > + largefile: port to C++ > + This patch is mostly taken from Autoconf master. > + * m4/largefile.m4 (AC_SYS_YEAR2038_RECOMMENDED): > + Undefine if unpatched Autoconf 2.72 or earlier, so that > + later code will redefine it. > + The remaining part of this patch is from Autoconf master. > + (_AC_SYS_YEAR2038_PROBE, _AC_SYS_LARGEFILE_PROBE): > + Put "$CCFLAGS" in diagnostics, not "$CC". > + (_AC_SYS_LARGEFILE_OPTIONS): Omit -n32. > + (AC_SYS_LARGEFILE_PROBE): Fiddle with CPPFLAGS, not CC. > + Do not worry about -n32. > + > c32srtombs,mbsrtoc32s,mbsrtowcs,wcsrtombs: pacify GCC 14 > * lib/c32srtombs-state.c (_gl_c32srtombs_state): > * lib/mbsrtoc32s-state.c (_gl_mbsrtoc32s_state): > diff --git a/m4/largefile.m4 b/m4/largefile.m4 > index cf97e986a3..2f824089b0 100644 > --- a/m4/largefile.m4 > +++ b/m4/largefile.m4 > @@ -26,9 +26,20 @@ AC_DEFUN([gl_SET_LARGEFILE_SOURCE], > ]]) > ) > > +dnl Remove AC_SYS_YEAR2038_RECOMMENDED if unpatched Autoconf 2.72 or earlier. > +dnl Autoconf 2.72 still uses -n32, which is not a C preprocessor option, > +dnl and which was useful only on IRIX which is no longer supported. > +dnl This should be fixed in Autoconf 2.73. > +m4_ifdef([AC_SYS_YEAR2038_RECOMMENDED], > + [m4_bmatch(m4_ifdef([_AC_SYS_LARGEFILE_OPTIONS], > + [m4_defn([_AC_SYS_LARGEFILE_OPTIONS])], > + ["-n32"]), > + ["-n32"], > + [m4_undefine([AC_SYS_YEAR2038_RECOMMENDED])])]) > + > m4_ifndef([AC_SYS_YEAR2038_RECOMMENDED], [ > -# Support AC_SYS_YEAR2038_RECOMMENDED and related macros, even if > -# Autoconf 2.71 or earlier. This code is taken from Autoconf master. > +# Fix up AC_SYS_YEAR2038_RECOMMENDED and related macros, even if > +# unpatched Autoconf 2.72 or earlier. This code is taken from Autoconf > master. > > # _AC_SYS_YEAR2038_TEST_CODE > # -------------------------- > @@ -77,7 +88,7 @@ m4_define([_AC_SYS_YEAR2038_OPTIONS], m4_normalize( > # If you change this macro you may also need to change > # _AC_SYS_YEAR2038_OPTIONS. > AC_DEFUN([_AC_SYS_YEAR2038_PROBE], > -[AC_CACHE_CHECK([for $CC option for timestamps after 2038], > +[AC_CACHE_CHECK([for $CPPFLAGS option for timestamps after 2038], > [ac_cv_sys_year2038_opts], > [ac_save_CPPFLAGS="$CPPFLAGS" > ac_opt_found=no > @@ -207,7 +218,6 @@ m4_define([_AC_SYS_LARGEFILE_OPTIONS], m4_normalize( > ["none needed"] dnl Most current systems > ["-D_FILE_OFFSET_BITS=64"] dnl X/Open LFS spec > ["-D_LARGE_FILES=1"] dnl 32-bit AIX 4.2.1+, 32-bit z/OS > - ["-n32"] dnl 32-bit IRIX 6, SGI cc (obsolete) > )) > > # _AC_SYS_LARGEFILE_PROBE > @@ -224,25 +234,25 @@ m4_define([_AC_SYS_LARGEFILE_OPTIONS], m4_normalize( > # If you change this macro you may also need to change > # _AC_SYS_LARGEFILE_OPTIONS. > AC_DEFUN([_AC_SYS_LARGEFILE_PROBE], > -[AC_CACHE_CHECK([for $CC option to enable large file support], > +[AC_CACHE_CHECK([for $CPPFLAGS option for large files], > [ac_cv_sys_largefile_opts], > - [ac_save_CC="$CC" > + [ac_save_CPPFLAGS=$CPPFLAGS > ac_opt_found=no > for ac_opt in _AC_SYS_LARGEFILE_OPTIONS; do > AS_IF([test x"$ac_opt" != x"none needed"], > - [CC="$ac_save_CC $ac_opt"]) > + [CPPFLAGS="$ac_save_CPPFLAGS $ac_opt"]) > AC_COMPILE_IFELSE([AC_LANG_PROGRAM([_AC_SYS_LARGEFILE_TEST_CODE])], > [AS_IF([test x"$ac_opt" = x"none needed"], > [# GNU/Linux s390x and alpha need _FILE_OFFSET_BITS=64 for wide ino_t. > - CC="$CC -DFTYPE=ino_t" > + CPPFLAGS="$CPPFLAGS -DFTYPE=ino_t" > AC_COMPILE_IFELSE([], [], > - [CC="$CC -D_FILE_OFFSET_BITS=64" > + [CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=64" > AC_COMPILE_IFELSE([], [ac_opt='-D_FILE_OFFSET_BITS=64'])])]) > ac_cv_sys_largefile_opts=$ac_opt > ac_opt_found=yes]) > test $ac_opt_found = no || break > done > - CC="$ac_save_CC" > + CPPFLAGS=$ac_save_CPPFLAGS > dnl Gnulib implements large file support for native Windows, based on the > dnl variables WINDOWS_64_BIT_OFF_T, WINDOWS_64_BIT_ST_SIZE. > m4_ifdef([gl_LARGEFILE], [ > @@ -272,9 +282,6 @@ AS_CASE([$ac_cv_sys_largefile_opts], > [AC_DEFINE([_LARGE_FILES], [1], > [Define to 1 on platforms where this makes off_t a 64-bit type.])], > > - ["-n32"], > - [CC="$CC -n32"], > - > [AC_MSG_ERROR( > [internal error: bad value for \$ac_cv_sys_largefile_opts])])