[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
AC_SYS_LARGEFILE_REQUIRED vs. AC_SYS_YEAR2038_REQUIRED on MSVC
From: |
Bruno Haible |
Subject: |
AC_SYS_LARGEFILE_REQUIRED vs. AC_SYS_YEAR2038_REQUIRED on MSVC |
Date: |
Fri, 14 Apr 2023 18:02:53 +0200 |
When I create a gnulib testdir with the an AC_SYS_LARGEFILE_REQUIRED
invocation:
./gnulib-tool --create-testdir --dir=... --single-configure
largefile-required stat
it configures and builds fine on MSVC (both 64-bit and 32-bit).
That is OK because the AC_SYS_LARGEFILE[_REQUIRED] macro sets the
variables WINDOWS_64_BIT_OFF_T, WINDOWS_64_BIT_ST_SIZE, which are then
AC_SUBSTed by the 'stat' module, and the Gnulib code of the 'stat'
module uses the value of WINDOWS_64_BIT_ST_SIZE to do the right thing.
Also, don't be confused by the 'configure' output that contains:
checking for /home/bruno/msvc/compile cl -nologo option to enable large file
support... support not detected
...
checking for 64-bit off_t... no
checking for 64-bit st_size... no
This output means that at the Autoconf level, the Unix way of just adding
a -D option did not work out. But with Gnulib, large file support *is* enabled.
On the other hand, when I create a gnulib testdir with an
AC_SYS_YEAR2038_REQUIRED invocation:
./gnulib-tool --create-testdir --dir=... --single-configure year2038-required
stat
it fails during the configure stage on MSVC (both 64-bit and 32-bit):
checking for /home/bruno/msvc/compile cl -nologo option to enable large file
support... support not detected
configure: error: in `/home/bruno/testdir7/build-msvc32':
configure: error: support for large files is required
See `config.log' for more details
This is wrong, because it is not consistent with the way
AC_SYS_LARGEFILE_REQUIRED works.
Like AC_SYS_LARGEFILE_REQUIRED, it should allow Gnulib to do the right thing
by obeying the variables WINDOWS_64_BIT_OFF_T, WINDOWS_64_BIT_ST_SIZE.
Also, maybe it is necessary to distinguish the use of these two Autoconf
macros without and with Gnulib?
- Without Gnulib, they could both fail on MSVC.
- But with Gnulib, they should both succeed on MSVC.
Bruno
- AC_SYS_LARGEFILE_REQUIRED vs. AC_SYS_YEAR2038_REQUIRED on MSVC,
Bruno Haible <=