Ralf Wildenhues [Thu, 17 Jun 2010 20:44:02 +0000 (22:44 +0200)]
Document, test, and fix AT_ARG_OPTION, AT_ARG_OPTION_ARG.
* lib/autotest/general.m4 (_AT_ARG_OPTION): Fix translation of
hyphens to underscores when turning option names to variables.
Avoid macro name concatenation garbage with trailing `dnl'.
(AT_ARG_OPTION, AT_ARG_OPTION_ARG): Overhaul macro description.
The OPTIONS are space-separated, not comma-separated. The
negative form of AT_ARG_OPTION is prefixed with `--no-'.
* tests/autotest.at (AT@&t@_ARG_OPTION, AT@&t@_ARG_OPTION_ARG):
New tests.
* NEWS: Update.
* doc/autoconf.texi (Writing Testsuites): Document AT_ARG_OPTION
and AT_ARG_OPTION_ARG.
(testsuite Invocation): Call the thingies passed to the
testsuite options, not arguments. Note that the testsuite
author may add further package-specific options.
Ralf Wildenhues [Thu, 17 Jun 2010 20:26:30 +0000 (22:26 +0200)]
Autotest: enable colored test results.
* lib/autotest/general.m4 (HELP_TUNING_BEGIN): New diversion.
(HELP_TUNING, HELP_OTHER, HELP_END): Bump diversion numbers.
(AT_INIT): Accept
--color and --color=never|auto|always. If desired, colorize
test results and testsuite summary on standard output.
[HELP_TUNING]: Divert content instead to ...
[HELP_TUNING_BEGIN]: ... this diversion, m4_wrapped until the
end, when we know whether AT_COLOR_TESTS has been specified.
(AT_COLOR_TESTS): New macro, set the default for color to auto.
* doc/autoconf.texi (Writing Testsuites): Document it.
(testsuite Invocation): Document --color* options.
* tests/local.at: Call AT_COLOR_TESTS for Autoconf's testsuite.
* tests/autotest.at (color test results): New test, mirroring
color.test from Automake.
* NEWS: Update.
Eric Blake [Tue, 8 Jun 2010 12:25:35 +0000 (06:25 -0600)]
Make CONFIG_SITE handling more robust.
* lib/autoconf/general.m4 (AC_SITE_LOAD): Avoid leading - and path
search, and check for failure to load.
* tests/base.at (AC_CACHE_CHECK): Enhance test.
* doc/autoconf.texi (Site Defaults): Mention that CONFIG_SITE
works best as an absolute path.
* NEWS: Document the semantic change.
Bruno Haible [Tue, 16 Mar 2010 06:04:40 +0000 (07:04 +0100)]
Allow plus signs in AC_ARG_ENABLE and AC_ARG_WITH.
* doc/autoconf.texi (External Software): Mention that AC_ARG_WITH
accepts packages with a + sign in it.
(Package Options): Likewise for AC_ARG_ENABLE.
* lib/autoconf/general.m4 (_AC_ENABLE_IF): Also replace '+' with '_'.
* tests/base.at (AC_ARG_ENABLE and AC_ARG_WITH): New test.
* NEWS: Update.
Ralf Wildenhues [Mon, 14 Jun 2010 18:31:58 +0000 (20:31 +0200)]
New Autotest testsuite option --recheck.
* lib/autotest/general.m4 (AT_INIT): New variable $at_recheck.
Escape hyphen in $at_dir early. Accept command line switch
--recheck. Set $at_suite_log early, based on --directory
switch; with --recheck, include the list of FAILed and XPASSed
tests from old testsuite.log file in $at_groups. Document
--recheck in --help output.
* tests/autotest.at (recheck): New test.
* doc/autoconf.texi (testsuite Invocation): Document --recheck.
* NEWS: Update.
Ralf Wildenhues [Tue, 8 Jun 2010 04:56:43 +0000 (06:56 +0200)]
Coverage and doc fixes for AC_LANG_SOURCE and AC_LANG_PROGRAM.
* tests/compile.at (AC_LANG_SOURCE, AC_LANG_SOURCE(C++))
(AC_LANG_SOURCE example, AC_LANG_PROGRAM example): New tests.
* doc/autoconf.texi (Generating Sources): Add markers for tested
examples; update quoting, and update AC_INIT usage to also set
optional URL arguments. Mention that the examples require gcc.
Prompted by report from Brian J. Murrell.
Ralf Wildenhues [Tue, 8 Jun 2010 04:55:10 +0000 (06:55 +0200)]
Make AS_SET_CATFILE polymorphic, and add testsuite coverage.
* lib/m4sugar/m4sh.m4 (AS_SET_CATFILE): Use AS_VAR_SET to set
the variable.
* tests/m4sh.at (AS@&t@_SET_CATFILE): New test.
* doc/autoconf.texi (Common Shell Constructs): Document that
AS_SET_CATFILE is polymorphic in its VAR argument now.
* NEWS: Update.
Ralf Wildenhues [Tue, 8 Jun 2010 04:49:55 +0000 (06:49 +0200)]
Testsuite coverage for AC_CACHE_VAL and caching semantics.
* tests/base.at (AC_CACHE_CHECK): Extend test.
(AC_CACHE_LOAD): New test.
* tests/torture.at (Configuring subdirectories): Also test
--config-cache with AC_CONFIG_SUBDIRS.
* doc/autoconf.texi (Caching Results): Annotate code snippets
which are tested in the test suite.
(Cache Files): Documented cache variables may be used on the
configure command line to override individual entries in the
cache file.
Joern Rennecke [Tue, 1 Jun 2010 18:06:54 +0000 (20:06 +0200)]
Generalize AC_CHECK_DECL for C++: allow optional arguments.
* general.m4 (_AC_CHECK_DECL_BODY): Process trailing function
argument types as arguments to use for C++.
(_AC_CHECK_DECLS): Filter out trailing function argument types
when generating the HAVE_DECL_* macro.
Don't expose AC_{COMPILE,LINK}_IFELSE internals in documentation.
* doc/autoconf.texi (Runtime) <AC_LINK_IFELSE>: Suggest to use
`conftest$EXEEXT' rather than `conftest$ac_exeext' to acces the
just-linked program file.
(Runtime) <AC_COMPILE_IFELSE>: Suggest to use `conftest.$OBJEXT'
rather than `conftest.$ac_object' to access the just-compiled
object file. Also, refer to the object file as "just-compiled"
rather than "just-linked".
* doc/autoconf.texi (Autoconf Language, Generic Structures):
Do not capitalize the first word in error messages, do not end
them with a period.
* lib/autoconf/general.m4 (_AC_INIT_PARSE_ARGS, AC_MSG_FAILURE):
Likewise.
* lib/autoconf/status.m4 (_AC_OUTPUT_FILE): Likewise.
* lib/autotest/general.m4 (AT_INIT, at_fn_group_prepare):
Likewise.
* m4/m4.m4 (AC_PROG_GNU_M4): Likewise.
* tests/base.at (AC_TRY_COMMAND): Likewise.
* tests/torture.at (datarootdir workaround): Adjust expected
message.
Ensure autotest tests have an atconfig file, for testsuite -v.
* tests/autotest.at (AT_CHECK_AT_PREP): Create a default
atconfig file in the directory of the testsuite.
(AT_CHECK_AT_TITLE): Also check that `./micro-suite -v' output
does not contain empty $at_srcdir expansion.
(srcdir propagation): Remove the atconfig file generated by
AT_CHECK_AT_PREP. Check each suite invocation for $at_srcdir
expansion.
Fix autotest testsuite -v output to print test group title.
* lib/autotest/general.m4 (AT_CLEANUP): Actually print test
title in verbose output. Fixes AUTOCONF-2.57-101-gc102ed8
regression.
* tests/autotest.at (AT_CHECK_AT_TITLE): Amend macro to check
for test title in -v output.
Eric Blake [Mon, 5 Apr 2010 14:06:17 +0000 (08:06 -0600)]
Fix m4_cr_all for EBCDIC.
* lib/m4sugar/m4sugar.m4 (m4_cr_all): Swap * and $, so that we
don't end up with $* in EBCDIC.
* NEWS: Document the fix.
* THANKS: Update.
Reported by Steve Goetze.
Eric Blake [Tue, 2 Mar 2010 22:46:34 +0000 (15:46 -0700)]
Document AC_LANG_CONFTEST semantic change.
* doc/autoconf.texi (Generating Sources) <AC_LANG_CONFTEST>:
Enhance documentation, to show that semantic change in 2.63b was
intentional.
* THANKS: Update.
Reported by Brian J. Murrell, analyzed by Ralf Wildenhues.
Eric Blake [Tue, 2 Mar 2010 21:00:24 +0000 (14:00 -0700)]
Improve documentation on AC_{COMPILE,LINK}_IFELSE.
* doc/autoconf.texi (Running the Compiler): Mention that the
object file is available after a successful compile.
(Running the Linker): Likewise for the linker output.
Suggested by Paolo Bonzini.
Ralf Wildenhues [Tue, 2 Mar 2010 19:19:32 +0000 (20:19 +0100)]
Fix AS_ERROR for FreeBSD sh.
* lib/m4sugar/m4sh.m4 (_AS_ERROR_PREPARE): Rewrite as_fn_error
to take additional first argument STATUS instead of transporting
$? across shell function entry, which does not work with FreeBSD
sh. Shift all other arguments by one, adjust.
(AS_ERROR): Pass EXIT-STATUS, defaulting to $?, to as_fn_error.
Report by Václav Haisman.
Ralf Wildenhues [Tue, 2 Mar 2010 06:50:19 +0000 (07:50 +0100)]
Fix `autom4te cache creation' testsuite failure on FreeBSD.
* tests/tools.at (autom4te cache creation): Normalize exit
status of failed redirection to 1, may be 2 with FreeBSD sh.
* THANKS: Update.
Report by Václav Haisman.
Eric Blake [Thu, 25 Feb 2010 22:49:12 +0000 (15:49 -0700)]
Update file flow diagram to mention Automake.
* doc/autoconf.texi (Making configure Scripts): Avoid confusion
with listing Makefile.in twice on one line. Add a diagram showing
how automake fits into the picture.
Reported by santilín.
Eric Blake [Wed, 9 Sep 2009 14:32:46 +0000 (08:32 -0600)]
Optimize AC_REPLACE_FUNCS.
* lib/autoconf/functions.m4 (_AC_REPLACE_FUNC): New helper macro.
(AC_REPLACE_FUNCS): Use it to reduce forks when checking for
replacements, by using literal rather than shell variable.
Eric Blake [Thu, 25 Feb 2010 21:56:34 +0000 (14:56 -0700)]
Document how to safely override CFLAGS default.
* doc/autoconf.texi (C Compiler) <AC_PROG_CC>: Document a way to
change the default CFLAGS.
(C++ Compiler) <AC_PROG_CXX>: Likewise, for CXXFLAGS.
Reported by Monty Taylor; wording suggested by Paolo Bonzini.
Eric Blake [Thu, 25 Feb 2010 21:06:38 +0000 (14:06 -0700)]
Document that Autoconf relies on IFS.
* doc/autoconf.texi (Special Shell Variables) <IFS>: Add details
about use of IFS within configure script.
* THANKS: Update.
Reported by Arkadiusz Miskiewicz.
Eric Blake [Tue, 9 Feb 2010 13:22:59 +0000 (06:22 -0700)]
Avoid uninitialized use of $U.
Automake sets up $U in AM_C_PROTOTYPES, but we can't assume that
automake is always in use.
* lib/autoconf/general.m4 (_AC_LIBOBJS_NORMALIZE): Ensure $U is
set if automake did not define it.
* THANKS: Update.
Reported by Heiko Schlichting, via Julien Élie.
Ralf Wildenhues [Sun, 24 Jan 2010 08:33:25 +0000 (09:33 +0100)]
Fix substitution of carriage return on Darwin.
* lib/autoconf/status.m4 (_AC_OUTPUT_FILES_PREPARE): Set
ac_cs_awk_cr to '\\r', so that sed portably expands this to '\r'
rather than a literal carriage return, to fix substitution on
Darwin. Regression introduced in 2.63b.
Report by Peter O'Gorman.
Ralf Wildenhues [Mon, 18 Jan 2010 19:26:22 +0000 (20:26 +0100)]
config.status: consistent exit status with nonexistent config file input.
* lib/autoconf/status.m4 (_AC_OUTPUT_MAIN_LOOP): Ensure we
exit with status 1 rather than with that of 'false', for
reproducibility.
(AC_OUTPUT): Ensure to exit 1 in case of config.status failure.
* tests/torture.at (Missing templates): Also test code path
for $srcdir != '.'.
Report by Tim Rice.
Ralf Wildenhues [Tue, 12 Jan 2010 18:43:04 +0000 (19:43 +0100)]
Allow AC_FUNC_MKTIME to work with C++.
* lib/autoconf/functions.m4 (AC_FUNC_MKTIME): ANSIfy KnR function
definitions. Use `const char*' for character literals; cast them
to `char*' for putenv.
Ralf Wildenhues [Wed, 6 Jan 2010 19:26:04 +0000 (20:26 +0100)]
Don't fail autom4te preselection test due to different Automake.
* tests/tools.at (autom4te preselections): If the cache test
fails, extract the Automake version from the toplevel
Makefile.in file of the source tree; skip, rather than fail
the test group if the automake program has a different version.
* THANKS: Update.
Report by Dieter Jurzitza, fix suggested by Eric Blake.
Fix AC_CONFIG_LINKS to generated files when srcdir is absolute.
* lib/autoconf/status.m4 (_AC_OUTPUT_LINK): Check $ac_source,
not $srcdir, for being relative or absolute.
* tests/torture.at (AC_CONFIG_LINKS): New test.
(AC_CONFIG_LINKS and identical files): Extend test, avoid some
forks.
Report, patch and testcase example by Peter Breitenlohner.
Eric Blake [Sat, 12 Dec 2009 14:03:46 +0000 (07:03 -0700)]
Improve wording about m4 quote characters.
* doc/autoconf.texi (Autoconf Language): Autoconf quote characters
come from m4sugar, not raw m4.
(Active Characters): Mention that it is m4sugar which changes
quotes from `' to [].
* THANKS: Update.
Suggested by Josef Vukovic.
Ralf Wildenhues [Sat, 12 Dec 2009 07:40:14 +0000 (08:40 +0100)]
Revert "Improve AC_CONFIG_AUX_DIRS a bit." to fix shtool usage.
* lib/autoconf/general.m4 (AC_CONFIG_AUX_DIRS): Revert test for
shtool as install script. Regression introduced in 2.64.
* NEWS, THANKS: Update.
Report by Dmitry Grebeniuk.
Document Solaris/Heirloom sh set -e issue with command substitutions.
* doc/autoconf.texi (Limitations of Builtins): Fix typos `set -d'
in previous example. Document failure to honor && lists with set -e
and a command substitution in the failing command.
Report and initial patch by Stefano Lattarini against Automake.
Eric Blake [Wed, 25 Nov 2009 00:20:33 +0000 (17:20 -0700)]
Warn if using unnamed diversion.
* lib/m4sugar/m4sugar.m4 (_m4_divert, m4_divert_push): Add
optional parameter, which controls warning.
(m4_divert_pop, m4_cleardivert, m4_divert_require)
(_m4_require_call): Adjust callers.
* lib/m4sugar/m4sh.m4 (AS_REQUIRE): Likewise.
* tests/m4sh.at (AT_DATA_LINENO): Avoid triggering the warning.
* tests/m4sugar.at (AT_CHECK_M4SUGAR_TEXT, m4@&t@_append)
(m4@&t@_text_wrap, recursion): Likewise.
(m4@&t@_warn, m4@&t@_divert_stack): Adjust expected output.
* tests/tools.at (autom4te and whitespace in file names)
(autoconf: the empty token): Avoid triggering the warning.
(autoconf: AC_PRESERVE_HELP_ORDER): New test.
* tests/mktests.sh (ac_exclude_list): Retire prior test.
* NEWS: Document the warning.
* doc/autoconf.texi (Redefined M4 Macros) <m4_divert>,
<m4_undivert>: Make even more explicit that using these directly
is discouraged.
(Diversion support): Further warn against improper diversion
changes.
<m4_divert_text>: Give an example of proper use.
Reported by Mike Frysinger.
Ralf Wildenhues [Tue, 24 Nov 2009 10:36:53 +0000 (11:36 +0100)]
Fix AC_FUNC_MMAP regression with C++ compiler in 2.65.
* lib/autoconf/functions.m4 (AC_FUNC_MMAP): Use const char*
for the constant string. Cast void* to char* for assignment.
* NEWS, THANKS: Update.
Report by Michal Čihař.
Ralf Wildenhues [Sat, 14 Nov 2009 11:40:07 +0000 (12:40 +0100)]
Fix AC_CONFIG_SUBDIRS tracing in autoreconf.
* bin/autoreconf.in (autoreconf_current_directory): Collapse
newlines in the autoconf trace output, similar to how automake
invokes autoconf, so that newlines do not matter in the argument
to AC_CONFIG_SUBDIRS.
* tests/torture.at (Deep Package): Expose this issue in the
test.
* THANKS: Update.
Report by Nathan Schulte.
Eric Blake [Tue, 10 Nov 2009 04:45:00 +0000 (21:45 -0700)]
Fix AC_FUNC_MMAP for cygwin.
* lib/autoconf/functions.m4 (AC_FUNC_MMAP): Make the test more
portable: Actually check for <sys/param.h>, and only use MAP_FIXED
on an address previously returned from mmap.
* THANKS: Update.
Reported by Corinna Vinschen.