Improve year2038, largefile option processing

* lib/autoconf/specific.m4 (_AC_SYS_YEAR2038_PROBE)
(_AC_SYS_YEAR2038_ENABLE, _AC_SYS_YEAR2038_OPT_IN)
(AC_SYS_YEAR2038, _AC_SYS_LARGEFILE_PROBE)
(_AC_SYS_LARGEFILE_ENABLE): Do not use enable_largefile to record
whether largefile is required, as ‘./configure
--disable-largefile’ sets enable_largefile=no even if largefile is
required and this disables largefile.  Instead, use a separate
shell variable ac_largefile_required and test it as well.
Similarly for enable_year2038.
(_AC_SYS_LARGEFILE_ENABLE): Omit --disable-largefile help string
if year2038 is required, since largefile is a prereq for year2038.
This commit is contained in:
Paul Eggert 2023-04-09 11:41:57 -07:00
parent 1982523c6f
commit a1e82aff0f

View File

@ -155,10 +155,10 @@ AS_CASE([$ac_cv_sys_year2038_opts],
["none needed"], [],
["support not detected"],
[ac_have_year2038=no
AS_CASE([$enable_year2038],
[required],
AS_CASE([$ac_year2038_required,$enable_year2038],
[yes,*],
[AC_MSG_FAILURE([support for timestamps after Jan 2038 is required])],
[yes],
[*,yes],
[# If we're not cross compiling and 'touch' works with a large
# timestamp, then we can presume the system supports wider time_t
# *somehow* and we just weren't able to detect it. One common
@ -209,10 +209,12 @@ AS_CASE([$ac_cv_sys_year2038_opts],
m4_define([_AC_SYS_YEAR2038_ENABLE],
[m4_divert_text([DEFAULTS],
m4_provide_if([AC_SYS_YEAR2038_REQUIRED],
[enable_year2038=required],
[ac_year2038_required=yes],
[ac_year2038_required=no]))dnl
m4_divert_text([DEFAULTS],
m4_provide_if([AC_SYS_YEAR2038],
[enable_year2038=yes],
[enable_year2038=no])))]dnl
[enable_year2038=no]))]dnl
[m4_provide_if([AC_SYS_YEAR2038_REQUIRED], [],
[AC_ARG_ENABLE([year2038],
m4_provide_if([AC_SYS_YEAR2038],
@ -231,7 +233,8 @@ m4_define([_AC_SYS_YEAR2038_ENABLE],
# documented macro.
AC_DEFUN([_AC_SYS_YEAR2038_OPT_IN],
[m4_provide_if([_AC_SYS_YEAR2038_PROBE], [], [dnl
AS_IF([test "$enable_year2038" != no], [_AC_SYS_YEAR2038_PROBE])
AS_IF([test "$ac_year2038_required,$enable_year2038" != no,no],
[_AC_SYS_YEAR2038_PROBE])
AC_CONFIG_COMMANDS_PRE([_AC_SYS_YEAR2038_ENABLE])
])])
@ -244,7 +247,8 @@ AC_DEFUN([AC_SYS_YEAR2038],
[m4_provide_if([AC_SYS_LARGEFILE_REQUIRED], [],
[AC_REQUIRE([AC_SYS_LARGEFILE])])]dnl
[m4_provide_if([_AC_SYS_YEAR2038_PROBE], [], [dnl
AS_IF([test "$enable_year2038" != no], [_AC_SYS_YEAR2038_PROBE])
AS_IF([test "$ac_year2038_required,$enable_year2038" != no,no],
[_AC_SYS_YEAR2038_PROBE])
AC_CONFIG_COMMANDS_PRE([_AC_SYS_YEAR2038_ENABLE])
])])
@ -326,7 +330,7 @@ AS_CASE([$ac_cv_sys_largefile_opts],
["none needed"], [],
["support not detected"],
[ac_have_largefile=no
AS_IF([test $enable_largefile = required],
AS_IF([test $ac_largefile_required,$ac_year2038_required != no,no],
[AC_MSG_FAILURE([support for large files is required])])],
["-D_FILE_OFFSET_BITS=64"],
@ -358,11 +362,15 @@ _AC_SYS_YEAR2038_OPT_IN
m4_define([_AC_SYS_LARGEFILE_ENABLE],
[m4_divert_text([DEFAULTS],
m4_provide_if([AC_SYS_LARGEFILE_REQUIRED],
[enable_largefile=required],
[enable_largefile=yes]))]dnl
[ac_largefile_required=yes],
[ac_largefile_required=no]))dnl
m4_divert_text([DEFAULTS],
[enable_largefile=yes])]dnl
[m4_provide_if([AC_SYS_LARGEFILE_REQUIRED], [],
[AC_ARG_ENABLE([largefile],
[AS_HELP_STRING([--disable-largefile], [omit support for large files])])])])
[m4_provide_if([AC_SYS_YEAR2038_REQUIRED], [],
[AC_ARG_ENABLE([largefile],
[AS_HELP_STRING([--disable-largefile],
[omit support for large files])])])])])
# AC_SYS_LARGEFILE
# ----------------
@ -377,7 +385,8 @@ m4_define([_AC_SYS_LARGEFILE_ENABLE],
# large files; see also AC_SYS_LARGEFILE_REQUIRED.
AC_DEFUN([AC_SYS_LARGEFILE],
[m4_provide_if([_AC_SYS_LARGEFILE_PROBE], [], [dnl
AS_IF([test "$enable_largefile" != no], [_AC_SYS_LARGEFILE_PROBE])
AS_IF([test "$ac_largefile_required,$enable_largefile,$ac_year2038_required" != no,no,no],
[_AC_SYS_LARGEFILE_PROBE])
AC_CONFIG_COMMANDS_PRE([_AC_SYS_LARGEFILE_ENABLE])
])])