Paul Eggert wrote: > > +[AC_REQUIRE([AC_CANONICAL_HOST]) > Is there some way we can do this without requiring AC_CANONICAL_HOST? > We're close to a release for Autoconf, and requiring this at the last > minute for AC_SYS_LARGEFILE is a bit of a stretch. > > That is, instead of AS_CASE([$host_os], ...) can we use > AC_PREPROC_IFELSE with the appropriate C preprocessor tests? Or perhaps > do the AC_REQUIRE only if gl_LARGEFILE is defined? Yes. Here are adjusted patches. I moved the AC_REQUIRE([AC_CANONICAL_HOST]) into the part that is only expanded if gl_LARGEFILE is defined. Inside gnulib, so many macros require AC_CANONICAL_HOST that it's a no-brainer. Find attached also the testdirs which I used to test the patches: - hello-3: no gnulib, just AC_SYS_LARGEFILE_REQUIRED - hello-4: no gnulib, just AC_SYS_YEAR2038_REQUIRED - testdir3: a gnulib testdir for the modules largefile-required stat - testdir4: a gnulib testdir for the modules year2038-required stat In hello-3/configure and hello-4/configure the word 'host_os' does not occur; this proves that the AC_REQUIRE([AC_CANONICAL_HOST]) has no effect if gnulib is not used. The configure results are exactly the expected outcome from my previous mail. Summary table: mingw64 mingw32 msvc64 msvc32 hello-3 OK OK "support not detected" -> fail hello-4 OK OK "support not detected" -> fail testdir3 OK OK OK OK testdir4 OK OK OK OK Details from the configure output: hello-3/build-mingw32 option to enable large file support... -D_FILE_OFFSET_BITS=64 hello-3/build-mingw64 option to enable large file support... -D_FILE_OFFSET_BITS=64 hello-3/build-msvc32 option to enable large file support... support not detected hello-3/build-msvc64 option to enable large file support... support not detected hello-4/build-mingw32 option to enable large file support... -D_FILE_OFFSET_BITS=64 hello-4/build-mingw64 option to enable large file support... -D_FILE_OFFSET_BITS=64 hello-4/build-msvc32 option to enable large file support... support not detected hello-4/build-msvc64 option to enable large file support... support not detected testdir3/build-mingw32 option to enable large file support... -D_FILE_OFFSET_BITS=64 testdir3/build-mingw64 option to enable large file support... -D_FILE_OFFSET_BITS=64 testdir3/build-msvc32 option to enable large file support... supported through gnulib testdir3/build-msvc64 option to enable large file support... supported through gnulib testdir4/build-mingw32 option to enable large file support... -D_FILE_OFFSET_BITS=64 testdir4/build-mingw64 option to enable large file support... -D_FILE_OFFSET_BITS=64 testdir4/build-msvc32 option to enable large file support... supported through gnulib testdir4/build-msvc64 option to enable large file support... supported through gnulib hello-4/build-mingw32 option to enable timestamps after Jan 2038... -D__MINGW_USE_VC2005_COMPAT hello-4/build-mingw64 option to enable timestamps after Jan 2038... none needed testdir4/build-mingw32 option to enable timestamps after Jan 2038... -D__MINGW_USE_VC2005_COMPAT testdir4/build-mingw64 option to enable timestamps after Jan 2038... none needed testdir4/build-msvc32 option to enable timestamps after Jan 2038... none needed testdir4/build-msvc64 option to enable timestamps after Jan 2038... none needed Bruno
>From c0260017520a92e77579f4bee113901d7ae90db0 Mon Sep 17 00:00:00 2001 From: Bruno Haible <bruno@xxxxxxxxx> Date: Sun, 16 Apr 2023 01:24:34 +0200 Subject: [PATCH] AC_SYS_YEAR2038_REQUIRED: Fix configure failure with MSVC. * lib/autoconf/specific.m4 (_AC_SYS_LARGEFILE_PROBE): Distinguish the results "support not detected" and "supported through gnulib". If the result is "supported through gnulib", don't fail. --- lib/autoconf/specific.m4 | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lib/autoconf/specific.m4 b/lib/autoconf/specific.m4 index 3bf1a0ed..f411695f 100644 --- a/lib/autoconf/specific.m4 +++ b/lib/autoconf/specific.m4 @@ -323,11 +323,24 @@ AC_DEFUN([_AC_SYS_LARGEFILE_PROBE], test $ac_opt_found = no || break done CC="$ac_save_CC" + 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], [ + AC_REQUIRE([AC_CANONICAL_HOST]) + if test $ac_opt_found != yes; then + AS_CASE([$host_os], + [mingw*], + [ac_cv_sys_largefile_opts="supported through gnulib" + ac_opt_found=yes] + ) + fi + ]) test $ac_opt_found = yes || ac_cv_sys_largefile_opts="support not detected"]) ac_have_largefile=yes AS_CASE([$ac_cv_sys_largefile_opts], ["none needed"], [], + ["supported through gnulib"], [], ["support not detected"], [ac_have_largefile=no AS_IF([test $ac_largefile_required,$ac_year2038_required != no,no], -- 2.34.1
>From 89a0589a2965360400e11688cf50e1f90415c47b Mon Sep 17 00:00:00 2001 From: Bruno Haible <bruno@xxxxxxxxx> Date: Sun, 16 Apr 2023 01:22:19 +0200 Subject: [PATCH] year2038-required: Fix configure failure with MSVC. * m4/largefile.m4 (_AC_SYS_LARGEFILE_PROBE): Distinguish the results "support not detected" and "supported through gnulib". If the result is "supported through gnulib", don't fail. --- ChangeLog | 7 +++++++ m4/largefile.m4 | 13 +++++++++++++ 2 files changed, 20 insertions(+) diff --git a/ChangeLog b/ChangeLog index 581ca09a47..6dec50bd63 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2023-04-16 Bruno Haible <bruno@xxxxxxxxx> + + year2038-required: Fix configure failure with MSVC. + * m4/largefile.m4 (_AC_SYS_LARGEFILE_PROBE): Distinguish the results + "support not detected" and "supported through gnulib". If the result is + "supported through gnulib", don't fail. + 2023-04-16 Bruno Haible <bruno@xxxxxxxxx> posix_spawn_file_actions_addclose tests: Avoid test failure on Cygwin. diff --git a/m4/largefile.m4 b/m4/largefile.m4 index f741d0df6e..46b019a670 100644 --- a/m4/largefile.m4 +++ b/m4/largefile.m4 @@ -266,11 +266,24 @@ AC_DEFUN([_AC_SYS_LARGEFILE_PROBE] test $ac_opt_found = no || break done CC="$ac_save_CC" + 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], [ + AC_REQUIRE([AC_CANONICAL_HOST]) + if test $ac_opt_found != yes; then + AS_CASE([$host_os], + [mingw*], + [ac_cv_sys_largefile_opts="supported through gnulib" + ac_opt_found=yes] + ) + fi + ]) test $ac_opt_found = yes || ac_cv_sys_largefile_opts="support not detected"]) ac_have_largefile=yes AS_CASE([$ac_cv_sys_largefile_opts], ["none needed"], [], + ["supported through gnulib"], [], ["support not detected"], [ac_have_largefile=no AS_IF([test $ac_largefile_required,$ac_year2038_required != no,no], -- 2.34.1
Attachment:
testdirs.tar.xz
Description: application/xz-compressed-tar