summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2023-04-09 11:41:57 -0700
committerPaul Eggert <eggert@cs.ucla.edu>2023-04-09 11:44:45 -0700
commita1e82aff0fd842b0f09e2cd166560dfda725ba13 (patch)
treea2250d023c572347f0f727c30d17d579e2eb77ce
parent1982523c6f052a2b361035a9d5d9737510ed0738 (diff)
downloadautoconf-a1e82aff0fd842b0f09e2cd166560dfda725ba13.tar.gz
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.
-rw-r--r--lib/autoconf/specific.m435
1 files changed, 22 insertions, 13 deletions
diff --git a/lib/autoconf/specific.m4 b/lib/autoconf/specific.m4
index 5dc00695..1a3f4a65 100644
--- a/lib/autoconf/specific.m4
+++ b/lib/autoconf/specific.m4
@@ -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])
])])