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 ++++++++++++++++++++------------- 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])]) -- 2.44.0