AC_INCLUDES_DEFAULT (which is used implicitly by a great many checks) goes and checks for a bunch of headers that are either guaranteed to exist by default on all platforms of interest nowadays, or guaranteed to be *unnecessary* on all platforms of interest nowadays: consider
AC_INIT(_, _, _) AC_CHECK_HEADERS([dlfcn.h],,,[AC_INCLUDES_DEFAULT]) AC_CONFIG_HEADER([config.h]) AC_OUTPUT which, as well as the desired check, does checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes The only tests in that list that are worth doing nowadays are for stdint.h and inttypes.h, and I don't think they should be done implicitly. To put it another way, I think AC_INCLUDES_DEFAULT with no arguments should expand to #include <sys/types.h> #include <sys/stat.h> #include <stdio.h> #include <stdlib.h> #include <stddef.h> #include <string.h> #include <unistd.h> and should unconditionally assume that all of these headers exist. zw