Akim Demaille [Thu, 11 May 2000 14:29:00 +0000 (14:29 +0000)]
* libm4.m4: Be robust to multiple inclusion.
Have the first `changequote' robust to the current quotation
system.
Always quote the first argument of `define'.
Akim Demaille [Thu, 11 May 2000 14:05:52 +0000 (14:05 +0000)]
The Associated Rewriters are proud to present...
^
/ U T O U P D A T E I I I
/===+ / It bells, It whistles...
* autoupdate.sh: Complete rewrite. See that file for a detailed
explanation.
* acgeneral.sh: Don't use AU_DEFINE, but AU_DEFUN.
(AC_OUTPUT_COMMANDS_CNT): Renamed as...
(_AC_OUTPUT_COMMANDS_CNT): this.
Akim Demaille [Thu, 11 May 2000 12:41:33 +0000 (12:41 +0000)]
Replace AC_LANG_SAVE/AC_LANG_RESTORE with AC_LANG_PUSH/AC_LANG_POP.
* aclang.m4 (_AC_LANG_CURRENT, AC_LANG_STACK): You two are the same
thing, which now we shall name `_AC_LANG'.
All users adjusted.
(AC_LANG_PUSH, AC_LANG_POP): New macros.
(AC_LANG_SAVE, AC_LANG_RESTORE): AU defined.
(AC_PROG_CC_WORKS, AC_PROG_CXXCPP, AC_PROG_CXX_WORKS,
AC_PROG_F77_WORKS, AC_F77_LIBRARY_LDFLAGS, AC_F77_NAME_MANGLING):
Use them.
(AC_F77_LIBRARY_LDFLAGS): Move the requirements at its top.
* doc/autoconf.texi (Language Choice): Document them.
(Old Macros): Welcome AC_LANG_SAVE and AC_LANG_RESTORE.
Akim Demaille [Thu, 11 May 2000 08:31:16 +0000 (08:31 +0000)]
* acspecific.m4 (_AC_CHECK_HEADER_DIRENT): Use more modern
Autoconf idioms.
(_AC_CHECK_HEADERS_DIRENT): Removed, instead...
(AC_HEADER_DIRENT): Handle the loop.
Akim Demaille [Thu, 11 May 2000 07:59:08 +0000 (07:59 +0000)]
Merge AC_DECL_YYTEXT into AC_PROG_LEX.
* acgeneral.m4 (AC_DECL_YYTEXT): Rename as
(_AC_DECL_YYTEXT): this.
(AC_PROG_LEX): Use it.
(AC_DECL_YYTEXT): New AU macro.
* doc/autoconf.texi: Adjust.
Akim Demaille [Wed, 10 May 2000 16:52:35 +0000 (16:52 +0000)]
Update and polish the documentation.
* doc/autoconf.texi: Use @sc where upper case names were used.
Remove a few useless `dnl'.
Convert some `dnl' into comments.
Promote `$(foo)' in Makefiles, not `${foo}'.
Promote `$foo' in shell scripts, not `${foo}'.
Promote `foo = bar' in Makefiles, not `foo=bar'.
(Language Choice): Document `AC_LANG', move `AC_LANG_C',
`AC_LANG_CPLUSPLUS' and `AC_LANG_FORTRAN77' to
(Old Macros): here.
* doc/install.texi: Fix a typo in the specification of the system
quadruples.
Akim Demaille [Wed, 10 May 2000 16:16:31 +0000 (16:16 +0000)]
* libm4.m4 (m4_foreach): Rewritten so that it does not require
lists in between parens.
(m4_foreach_quoted): new copy of the previous `m4_foreach' which
is still used by `m4_wrap'.
* acgeneral.m4 (AC_INCLUDE, AC_INCLUDES): Removed.
(AC_FOREACH): Don't use parens with `m4_foreach'.
(AC_CHECK_MEMBER, AC_CHECK_DECLS, AC_CHECK_TYPES): Adjust the
description.
* acspecific.m4 (AC_STRUCT_TIMEZONE, AC_STRUCT_ST_BLKSIZE,
AC_STRUCT_ST_BLOCKS, AC_STRUCT_ST_RDEV): Adjust.
* autoconf.texi (AC_CHECK_MEMBER, AC_CHECK_DECLS, AC_CHECK_TYPES):
Adjust their documentation.
(AC_INCLUDE): Undocument.
* tests/semantics.m4: Adjust.
* tests/actest.m4: Rename as...
* tests/aclocal.m4: this.
* tests/atspecific.m4: No longer include actest.m4.
* tests/torture.m4: Likewise.
* tests/Makefile.am: Adjust.
Akim Demaille [Wed, 10 May 2000 11:47:35 +0000 (11:47 +0000)]
* acgeneral.m4 (AC_LIBOBJ_DECL, AC_LIBOBJ): New macros.
(AC_REPLACE_FUNCS): Use AC_LIBOBJ.
* acspecific.m4 (AC_FUNC_MKTIME, AC_FUNC_MEMCMP,
AC_STRUCT_ST_BLOCKS): Use AC_LIBOBJ.
* doc/autoconf.texi : Adjust so that the user is not encouraged to
use LIBOBJS directly.
(Generic Functions): Document AC_LIBOBJ_DECL and AC_LIBOBJ.
Akim Demaille [Tue, 9 May 2000 09:45:04 +0000 (09:45 +0000)]
Let `config.status' use a private temp dir.
Suggested by Jim Meyering.
* acgeneral.m4 (_AC_SHELL_TMPDIR): New macro.
(_AC_OUTPUT_CONFIG_STATUS): Use it.
Use more quoted here docs to improve readability.
Compute `$me' and use it in the error messages.
Define `$configure' and `$configure_args' to avoid continuously
mixing the uses of `configure' and `config.status' evaluation in a
single line.
Define `$SHELL' and use it.
Simplify all the unjustified `[$]foo' into `$foo', the quotes
are needed only for `$[1]', `$[@]' etc.
Replace all the uses of `ac_cs_root' with files in the tmp dir of
`config.status'.
Remove a few `rm' covered by the removal of the `$tmp' dir.
Let `config.status' support `--debug'.
(_AC_INIT_PREPARE): Avoid the leading space in `ac_configure_args'.
* doc/autoconf.texi (Invoking config.status): Adjust.
Akim Demaille [Fri, 5 May 2000 13:29:47 +0000 (13:29 +0000)]
AC_CHECK_PROG macro fails if REJECT value is set under Digital
Unix 4.0x and 5.0 because `"$@"' expands into an empty parameter
(instead of nothing) when there are no positional parameters.
From Nicolas Joly.
* acgeneral.m4 (AC_CHECK_PROG, AC_CHECK_PROGS): Prefer
`$$1' to `[$]$1', `$foo' to `[$]foo', `$[1]' to `[$]1', and
`${1+"$[@]"}' to `"[$]@"'.
Akim Demaille [Wed, 3 May 2000 12:28:17 +0000 (12:28 +0000)]
* tests/tools.m4 (autoheader): Don't pass `-l at_srcdir' to
`autoheader', since `acconfig.h' is created in the build dir.
There's one empty line less in `config.h.in' than before when
using `acconfig.h'.
Akim Demaille [Wed, 3 May 2000 11:22:50 +0000 (11:22 +0000)]
Simplify the handling of `acconfig.h'.
* autoheader.sh: No longer try to select the needed paragraphs of
`acconfig.h', just dump everything into `config.h.in'.
Implement support for `--warnings'.
Warn the users that these auxiliary files are obsolete when `-W
obsolete'.
* doc/autoconf.texi (Invoking autoheader): Adjust.
Akim Demaille [Wed, 3 May 2000 08:53:06 +0000 (08:53 +0000)]
Don't double quote in AC_MSG_*.
* acgeneral.m4 (_AC_SH_QUOTE): Don't double quote. Escape the
double quotes too.
(_AC_ECHO_UNQUOTED): Don't double quote :).
(_AC_ECHO, _AC_ECHO_N): Quote the call to _AC_SH_QUOTE.
The autoheader chain needs to be adjusted.
* acgeneral.m4 (AH_VERBATIM): Just pass two arguments to AH_OUTPUT
instead of trying to build what `autoheader' needs: let it handle
the format by itself.
* autoheader.m4: Adjust.
s,tmp/config.h,tmp/config.hin.
The adjustment revealed that `autoconf --trace' is not robust to
single quotes in its argument.
* autoconf.sh: Fix this issue.
Rename the escape `$*' as `$%'. Implement `$@'.
* doc/autoconf.texi: Adjust.
mawk suffers a severe performance loss when using `sub' with a
changing value. On the `configure' script of the fileutils:
mawk '{ sub (/foo/, foo++) }' -> 14s.
mawk '{ if ($0 ~ /foo/) sub (/foo/, foo++) }' -> 0.03s.
mawk '{ sub (/foo/, foo) }' -> 0.03s.
* autoconf.sh (task script, AWK script): Run `sub (__oline__,
oline)' only in the lines that match `__oline__'.
Suggested by Paul Eggert.
* acgeneral.m4 (_AC_INIT_HELP): Move --srcdir in the first
section.
Document --help=short and recursive.
Split the `Directory' section into `Installation directories' for
--prefix and --exec-prefix, and all the others into `Fine tuning
of the installation directories'.
In the latter, don't repeat `in DIR', the user understands, and it
comes out better.
Default for --exec-prefix is PREFIX.
Reported by Kathryn Hargreaves.
Move --host before --build.
Fix a test on `$ac_init_help' which was not updated.
* tests/atspecific.m4 (AT_TEST_MACRO): Don't check `env-after' if
the file does not exist, which may happen when a `configure' exits
brutally.
* tests/semantics.m4 (AC_CHECK_MEMBERS, AC_CHECK_TYPES): ANSI C++
forbids members named like their hosting struct, so don't do it.
* autoscan.pl: Reindent using 2 spaces, not 4.
Use `#' to denote Autoconf comments, not `dnl'.
Put a few `' here and there to avoid misfontification and
misindentation.
Use your base name when reporting errors.
(parse_args::usage): Use $0, use the same order as the other
executables.
(parse_args): Don't dump `--help' on cmd line errors.
* acgeneral.m4 (AC_PROVIDE_IF): Rename as...
(AC_PROVIDE_IFELSE): this. Change all callers.
Spread the use of AC_PROVIDE_IFELSE, no macro should know how
AC_PROVIDE names its internal variables.
* doc/autoconf.texi (Old Macro Names): Rename as...
(Old Macros): this. Change the @table enumeration into a list of
@defmac.
(AC_CHECKING, AC_CHECK_TYPE, AC_COMPILE_CHECK, AC_C_CROSS,
AC_DYNIX_SEQ, AC_HAVE_LIBRARY, AC_IRIX_SUN, AC_LINK_FILES,
AC_OUTPUT, AC_OUTPUT_COMMANDS, AC_SCO_INTL, AC_VERBOSE,
AC_XENIX_DIR): Move their descriptions into here.
Kill a few TeX warnings.
* acgeneral.m4: s/1>&/>&/g.
(AC_FD_LOG): New macro, replaces...
(AC_FD_CC): this. Provide an AU definition.
(_AC_ECHO_UNQUOTED, _AC_ECHO_N): Use m4_default.
At the end of `./configure', save the cache values, and the CPP
values.
* acgeneral.m4 (_AC_CACHE_DUMP): New macro.
(AC_CACHE_SAVE, AC_OUTPUT): Use it.
(AC_OUTPUT): Dump confdefs.h into config.log.
(_AC_INIT_PREPARE::config.log): Name the package being configured
if you can.
Disable caching by default, so as not to cause problems when
newbies accidentally use a stale cache file.
* acgeneral.m4 (_AC_INIT_PARSE_ARGS): Set cache_file to /dev/null
to disable caching by default.
(_AC_INIT_HELP): Adjust the --help message.
(AC_CACHE_LOAD, AC_CACHE_SAVE): Don't print "loading/updating
/dev/null" messages.
* autoconf.texi: Note that caching is disabled, how to enable it,
and that `./config.cache' is the traditional name of the cache file.
* install.texi: Likewise.
* doc/autoconf.texi (Writing configure.in): Explain what Autoconf
is. Explain how to use the quotation scheme used in Autoconf.
(Quoting): Update. Do not advocate changequote.
Fix F77 name-mangling macros to work with cached values (so
they don't break the second time you run configure).
* aclang.m4 (AC_F77_NAME_MANGLING): Extract f77_case,
f77_underscore from cache variable.
(AC_F77_WRAPPERS): Get rid of ac_cv_f77_wrappers, it's useless.
Simplify the nested case-esac into a single one.
Simplify the documentation strings of CPP symbols.
Akim Demaille [Wed, 29 Mar 2000 16:48:00 +0000 (16:48 +0000)]
Rewrite the autoheader chain on top of `autoconf --trace'.
* autoheader.m4: Dispatch the prototypes next to there AC_
siblings.
(AH_TEMPLATE, AH_VERBATIM): Move to...
* acgeneral.m4: here.
(AH_OUTPUT): New macro.
* autoheader.sh: Run `autoconf --trace' instead of `m4 autoheader.m4'.
* autoheader.m4: Remove.
* Makefile.am: Adjust.
* tests/tools.m4 (AH_DEFUN): Remove, no longer makes sense.
* tests/actests.m4 (autoheader::AC_TATOOINE): Remove, was used by
the test above.
Akim Demaille [Wed, 29 Mar 2000 11:09:59 +0000 (11:09 +0000)]
Use `mktemp -d' when possible to create securely a tmp work dir.
* autoconf.sh: Use it when possible to create the dir $tmp.
Stop using variables for tmp files, use their names in $tmp.
[install]: Use the new features of autoconf --trace.
Akim Demaille [Tue, 28 Mar 2000 14:48:56 +0000 (14:48 +0000)]
Probably all the versions of bash up to 2.04 fail on
fnmatch ("/tmp", "[/\\]")
The backslash must not be last.
* acgeneral.m4 (_AC_INIT_HELP, AC_PATH_PROG, _AC_OUTPUT_FILES,
_AC_OUTPUT_LINKS, _AC_OUTPUT_SUBDIRS): Always make `\' be the
first character in all the `[]' of `case' patterns.
Akim Demaille [Sat, 25 Mar 2000 09:24:16 +0000 (09:24 +0000)]
* acgeneral.m4 (_AC_CANONICAL_TARGET, _AC_CANONICAL_BUILD): Rename
as (AC_CANONICAL_TARGET, AC_CANONICAL_BUILD), although internal,
too much foreign code depends upon them.
Akim Demaille [Sat, 25 Mar 2000 09:17:40 +0000 (09:17 +0000)]
* autoconf.sh (translate_awk): `> "/dev/stderr"' is not portable
to systems without a real /dev/stderr in the file system or if not
using one of the three free awks. Use
print message | "cat >&2"
...
END { close("cat >&2") }
From Aharon Robbins.
Akim Demaille [Sat, 25 Mar 2000 09:16:53 +0000 (09:16 +0000)]
* autoheader.sh (checking completeness): Be ready to recognize
patterns with a value, and spaces between `#' and the directive, e.g.
# define FOO FIXME:
Reported by John Fortin.
Akim Demaille [Sat, 25 Mar 2000 09:05:22 +0000 (09:05 +0000)]
* acgeneral.m4 (AC_LANG_CALL, AC_LANG_CALL(C), AC_LANG_CALL(C++),
AC_LANG_CALL(FORTRAN77)): New macros.
(AC_TRY_LINK_FUNC): Use it.
(AC_TRY_CPP): Argument was output twice.
(AC_COMPILE_IFELSE, AC_LINK_IFELSE): Output $3 only if needed.
Akim Demaille [Sat, 25 Mar 2000 09:04:13 +0000 (09:04 +0000)]
* acgeneral.m4 (AC_TRY_COMPILER): Use AC_LINK_IFELSE.
(AC_TRY_LINK_FUNC, AC_CHECK_LIB, AC_CHECK_FUNC): Don't check that
the current language is C++ to output `extern "C"': the CPP
condition is enough.
Akim Demaille [Tue, 21 Mar 2000 12:41:22 +0000 (12:41 +0000)]
Provide a language independent means to generate language specific
programs.
* acgeneral.m4 (_AC_LANG_DISPATCH): New macro.
(AC_LANG): Use it.
(AC_LANG_SOURCE, AC_LANG_SOURCE(C), AC_LANG_SOURCE(C++),
AC_LANG_SOURCE(FORTRAN77)): New macros.
(AC_TRY_COMPILER, AC_EGREP_CPP, AC_TRY_RUN_NATIVE): Use
AC_LANG_SOURCE.
Akim Demaille [Tue, 21 Mar 2000 12:33:37 +0000 (12:33 +0000)]
Fix a bug: some macros (e.g., AC_REVISION, AC_COPYRIGHT etc.) can
be used before AC_INIT, but they do require it. But then, the
argument of the explicit AC_INIT call is lost.
* acgeneral.m4 (AC_CONFIG_SRCDIR): New macro.
(_AC_INIT_SRCDIR): Adjust.
(_AC_INIT): Pass your argument to AC_CONFIG_SRCDIR.
Akim Demaille [Tue, 21 Mar 2000 12:09:31 +0000 (12:09 +0000)]
Speed ups.
* libm4.m4 (m4_append, m4_list_append): Use m4_define, not define.
On my machine the former implementation takes 4mn 40s to run the
test suite. Using m4_define leads to 4mn 15s.
* acgeneral.m4 (_AC_SUBST): Use AC_EXPAND_ONCE (which uses
m4_define, not define). 4mn.
(_AC_DIVERT): Don't use m4_case. Starting from those 4mn, if you
just move NORMAL* first in m4_case, the test suite is run in 3mn.
If instead of using m4, you use an `associative array' plus a
wrapper (current implementation), it falls to 2mn.
Akim Demaille [Tue, 21 Mar 2000 12:06:30 +0000 (12:06 +0000)]
* autoconf.sh (task trace): Pipe the output of the first m4 into
the second one, instead of saving to a tmp file, so that we can
trace endless configure.in expansion.
Akim Demaille [Tue, 21 Mar 2000 12:03:55 +0000 (12:03 +0000)]
Uniform idioms.
* acgeneral.m4 (_AC_OUTPUT_FILES, _AC_OUTPUT_HEADERS,
_AC_OUTPUT_LINKS, _AC_OUTPUT_COMMANDS): Prefer
for i in : $is; do test $i = : && continue
over
for i in .. $is; do if test $i != ..; then
Akim Demaille [Tue, 21 Mar 2000 10:01:40 +0000 (10:01 +0000)]
Give a means to compute `srcdir' earlier in configure.
* acgeneral.m4 (_AC_INIT_SRCDIR): New macro, pulled out from...
(_AC_INIT_PREPARE): No longer compute `srcdir'.
(_AC_INIT): Use _AC_INIT_SRCDIR.
(AC_INIT): Don't forget to pass the argument to _AC_INIT.
Akim Demaille [Tue, 21 Mar 2000 09:07:15 +0000 (09:07 +0000)]
Give an identity to `configure' scripts.
* acgeneral.m4 (AC_PACKAGE): New macro.
(_AC_COPYRIGHT_SEPARATOR): Remove.
(AC_COPYRIGHT): Adjust.
(_AC_INIT_HELP, _AC_INIT_VERSION): Name the package you configure
when you want.
(_AC_INIT): Adjust.
* configure.in (AC_PACKAGE): Add.
Jim Meyering [Mon, 20 Mar 2000 11:16:40 +0000 (11:16 +0000)]
(AC_SYS_LONG_FILE_NAMES): Don't test for existence
of $ac_xdir. Not only is `test -e' not portable, but the test isn't
necessary at all; the following mkdir ends up accomplishing the
same goal. Suggestion from Alexandre Oliva.