This patch series does three notionally independent, but closely-related, things.
First, it switches AC_CHECK_HEADER[S] to do only a compile test by default. This completes the transition begun in Autoconf 2.56. It has been my experience that basically nobody bothered to disable the "mongrel" mode, and that basically nobody actually needed the preprocessor check. Therefore, I do not anticipate problems from this change. Mongrel mode is completely removed. Preprocessor-only checks are still available by specifying [-] as the fourth argument to AC_CHECK_HEADER, but this will issue a deprecation warning and the manual tells people to switch to AC_PREPROC_IFELSE. This patch is unchanged from the previous iteration. Second, it cleans up AC_INCLUDES_DEFAULT and all the other canned tests so that they don't waste time checking for ISO C90 headers, which are now ubiquitous (stddef.h, stdlib.h, string.h, wchar.h, wctype.h, locale.h, time.h) and don't use memory.h at all (since it is pre-standard and completely superseded by string.h). Certain very old macros (AC_HEADER_STDC, AC_HEADER_TIME, AC_USG, AC_MEMORY_H) are more aggressive about autoupdating themselves out of existence, autoscan won't tell you you need to probe for C90 headers anymore, and finally, the manual is revised so that it does not recommend checking for obsolete or C90 headers. (I may not have found every last instance of such obsolete advice in the manual.) This patch changed from the previous iteration: strings.h is no longer erroneously described as totally obsolete, and _AC_INCLUDES_DEFAULT_REQUIREMENTS still looks for it; further, STDC_HEADERS, HAVE_STDLIB_H, and HAVE_STRING_H are unconditionally AC_DEFINEd to 1 to minimize the chance of breaking anyone who's actually got #ifdefs on them. One remaining wart is that autoupdate replaces AC_HEADER_STDC with an overt invocation of _AC_INCLUDES_DEFAULT_REQUIREMENTS. I couldn't find an AU_DEFUN construct that didn't expose this internal macro but would still DTRT both before and after an autoupdate run. Ideas? Third, the checks done by _AC_INCLUDES_DEFAULT_REQUIREMENTS are now done with AC_CHECK_HEADERS_ONCE. This patch is new in this iteration. [The previous iteration of this patch series was sent back in May. I was holding off on revising it as requested until I'd finished the new, substantially-more-elaborate version of my take-inventory-of- system-headers thingy (in particular I wanted something that would actually check for conflicts between string.h and strings.h, or time.h and sys/time.h), but that still isn't done, and the odds that it's going to turn up a problem seem vanishingly small.] [I should now have a copyright assignment on file for Autoconf.] zw Zack Weinberg (3): AC_CHECK_HEADER/AC_CHECK_HEADERS: complete transition to compile tests. Modernize AC_INCLUDES_DEFAULT and friends. Use AC_CHECK_HEADERS_ONCE for the tests done by AC_INCLUDES_DEFAULT. NEWS | 34 ++++ doc/autoconf.texi | 420 ++++++++++++++++++--------------------------- lib/autoconf/functions.m4 | 35 +--- lib/autoconf/headers.m4 | 302 +++++++++++---------------------- tests/c.at | 28 ++- tests/local.at | 5 +- tests/semantics.at | 17 +- tests/tools.at | 6 +- 8 files changed, 343 insertions(+), 504 deletions(-)