autoconf-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 0/3] Modernize header checks, v2


From: Zack Weinberg
Subject: [PATCH 0/3] Modernize header checks, v2
Date: Fri, 6 Sep 2013 22:43:50 -0400

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(-)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]