* acgeneral.m4 (AC_CHECK_MEMBER): It is not smart to define
ac_Foo, and use AC_Foo. Got rid of AC_Member_Aggregate and
AC_Member_Member which were complicating more than simplifying.
(AC_CHECK_DECLS): Use m4 lists.
(AC_CHECK_TYPES): A comma was missing.
* autoheader.m4: (AC_CHECK_DECLS): Use m4 lists.
* doc/autoconf.texi (Generic Declarations): AC_CHECK_DELCS uses m4
lists.
* tests/semantics.m4: New file. Collection of semantical tests:
verify that the tests are positive and negative when appropriate.
Test AC_CHECK_MEMBERS, AC_CHECK_DECLS and AC_CHECK_TYPES.
* autoheader.m4 (AH_DEFUN): New macro. Combination of define and
AH_HOOK.
(AC_TRY_RUN, AC_DEFINE, AC_DEFINE_UNQUOTED, AC_CHECK_LIB,
AC_CHECK_HEADERS, AC_CHECK_HEADERS_DIRENT, AC_CHECK_DECLS,
AC_CHECK_FUNCS, AC_CHECK_SIZEOF, AC_PROG_LEX, AC_CHECK_MEMBERS,
AC_CHECK_TYPE, AC_FUNC_ALLOCA, AC_CHECK_TYPES, AC_C_CHAR_UNSIGNED,
AC_AIX, AC_F77_WRAPPERS, AC_CONFIG_HEADER): All the former calls
to define and AH_HOOK in autoheader.m4 are replaced by AH_DEFUN.
Fix the discovered bugs.
* tests/atgeneral.m4 (AT_CHECK): Don't just exit 1 when you want
to propagate the failure of a test: exit with the same exit
status, at least to preserve 77 (=ignore).
* tests/syntax.m4 (TEST_MACRO): Run also autoheader. Don't run
this test on all the macros, some just cannot run without
arguments.
* acgeneral.m4 (AC_OUTPUT_CONFIG_STATUS): In the if egrep/fi for
#define templates, add a `:' to prevent syntax errors in
config.status when there are no AC_DEFINE performed.
* autoheader.m4 (AH_TEMPLATE): Don't use _AC_SH_QUOTE here, use it
in...
(AH_VERBATIM): here. Now AH_C_UNSIGNED_CHAR is no longer failing
(formerly it would produce a non backslashed backquote, which
made sh choke).
Fix a bit of the brokenness of AC_CHECK_TYPE.
* acgeneral.m4 (AC_CHECK_TYPE_INTERNAL): New macro, inspired from
the former AC_CHECK_TYPE. This macro is exactly the one that
ought to be named AC_CHECK_TYPE: it just checks, and executes user
actions. In the future, this macro ought to be renamed
AC_CHECK_TYPE.
There is a big difference with the former AC_CHECK_TYPE: instead
of grepping in the headers, it tries to compile a variable
declaration. This is both safer, slower, and better, since now we
can check for compiler types (e.g., unsigned long long).
(AC_CHECK_TYPES): The looping and AC_DEFINEing version of the
previous macro. Uses m4 loops.
(AC_CHECK_TYPE): Reimplemented on top of AC_CHECK_TYPE_INTERNAL.
* autoheader.m4 (AH_CHECK_TYPE, AH_CHECK_TYPES): New macros,
hooked.
* autoconf.texi (@ovar): New macro, for optional variables.
(Generic Typedefs): Document AC_CHECK_TYPES.
* autoheader.texi: (AH_CHECK_TYPE, AH_CHECK_TYPES): New macros.
(Epilogue): Hooks them.
Perform a better checking for missing templates in autoheader.
* autoheader.m4 (AH_HOOK): When hook AC_FOO on AH_FOO, define the
new AC_FOO to be the expansion of both AH_FOO *and* AC_FOO. See
its definition for the motivations.
* autoheader.m4 (AH_FUNC_ALLOCA): Remove the now useless
additional templates.
Rename the family AC_NEED_DECL as AC_CHECK: it is more uniform,
but keep defining NEED_FOO_DECL when `foo' is not declared. Files
not using Autoconf behave better when declarations lacks than when
they are wrong. So the unset position should off, hence #if NEEDS
instead of #if !HAVE (which is triggered when HAVE is not set).
* acgeneral.m4 (AC_NEED_DECL): Renamed as...
(AC_CHECK_DECL): This. Make sure the arguments are the usual
IF-FOUND, IF-NOT-FOUND.
(AC_NEED_DECLS, AC_CHECK_DECLS): Likewise.
* autoconf.texi (Generic Declarations): Document the changes
aforementioned.
* autoheader.m4 (AH_NEED_DECLS): Renamed as
(AH_CHECK_DECLS): This.
(AH_HOOKS): Hook AH_CHECK_DECLS on AC_CHECK_DECLS instead of
_NEED_.
Revamp the handling of the arguments of config.status: instead of
looping over config_files etc. to recognize the file names, use
the case which handles the options.
Suggested by Alexandre Oliva.
* acgeneral.m4 (ifset): Renamed as...
(ifval): This. All callers changed.
(ifset): New macro, which tests if a macro is set to a non empty
value.
* acgeneral.m4: Initialize growing lists and strings to empty, to
ease the tests.
(AC_CONFIG_HEADER): Quote AC_LIST_HEADERS in the define, to handle
the case AC_LIST_HEADERS is initialized.
* acgeneral.m4: (AC_OUTPUT_CONFIG_STATUS): New macro, pulled out
from...
(AC_OUTPUT): Instead of using $1, $2 and $3, pass them to the
official macros (AC_CONFIG_FILES, AC_OUTPUT_COMMANTS).
Call AC_OUTPUT_CONFIG_STATUS.
(option handling): Use the case-esac to recognize arguments.
(AC_OUTPUT_COMMANDS): Fix the missing fi;done.
Provide the m4 infrastructure for defining AH_ hooks.
* autoheader.m4 (AH_HOOK): New macro.
Hook all the AC_ macros to their AH_siblings in AH_HOOKS.
Run AH_HOOKS.
* acgeneral.m4 (m4_append): New macro.
(m4_list_append, m4_list_add): Removed.
* autoheader.m4 (AC_FUNC_ALLOCA): Rename from this ...
(AH_FUNC_ALLOCA): ... to this. Includes all the needed templates.
(AC_C_CHAR_UNSIGNED): Rename from this ...
(AH_C_CHAR_UNSIGNED): ... to this.
* autoconf.texi (Defining Symbols): Documented third argument to
AC_DEFINE.
* autoheader.m4 (AC_DEFINE_UNQUOTED): Generate `verbatim'
assignment if third argument given.
(AC_DEFINE): Likewise.
* acgeneral.m4 (AC_DEFINE): Handle case where $# is 3.
(AC_DEFINE_UNQUOTED): Likewise.
* autoheader.sh: Echo $verbatim if not empty.