On Sun, Nov 29, 2020 at 2:02 PM Paul Eggert <egg...@cs.ucla.edu> wrote: > > On 11/28/20 11:39 PM, kabu_ha_genbu...@yahoo.co.jp wrote: > > Hello, > > Autogen-5.18.16 can not be built with autoconf-2.69d. > > I don't observe this problem when building autogen 5.18.16. It doesn't > even run 'autoconf' when configuring (which is as things should be).
I can reproduce the problem if I regenerate autogen 5.8.16's configure script with autoreconf+autoconf from Autoconf git trunk. The error message is coming from this code in config/libopts.m4: for f in sys_types sys_param sys_stat string errno stdlib memory setjmp do eval as_ac_var=\${ac_cv_header_${f}_h} test "X${as_ac_var}" = Xyes || { ]AC_MSG_ERROR([you must have ${f}.h on your system])[ } done At no point prior to this has AC_CHECK_HEADERS([stdlib.h]) been invoked. This is due to an *intentional* change in 2.70: quoting NEWS: *** AC_INCLUDES_DEFAULT assumes an ISO C90 compliant C implementation. Specifically, it assumes that the ISO C90 headers <stdlib.h> and <string.h> are available, without checking for them, and does not include the pre-standard header <memory.h> at all. If the POSIX header <strings.h> exists, it will be included, without testing whether it is safe to include both <string.h> and <strings.h> in the same source file. For compatibility’s sake, the C preprocessor macros STDC_HEADERS, HAVE_STDLIB_H, and HAVE_STRING_H are defined unconditionally. These preprocessor macros should be considered obsolescent. Future releases of Autoconf may reduce the set of headers checked for by AC_INCLUDES_DEFAULT. We could expand the "for compatibility's sake" to set the cache variables ac_cv_header_{stdlib,string}_h (without actually bothering to check) but I'm not sure that's a good idea -- that would prevent people with a genuine need to maintain compatibility with K&R environments from doing AC_CHECK_HEADER([stdlib.h]) themselves. What do you think, Paul? (I was not able to find an active mailing list for autogen, but they should indeed be advised that this configure script is full of dodgy constructs and checks that are unlikely to be needed anymore. I do not have time to debug it any more myself.) zw