Eric Blake [Mon, 19 Jul 2010 22:39:45 +0000 (16:39 -0600)]
Fix up AC_INIT vs. " issues, and document it.
* doc/autoconf.texi (Initializing configure): Improve
documentation on argument restrictions.
* NEWS: Tweak information.
* lib/autoconf/general.m4 (_AC_INIT_GENERAL): New macro, that also
rejects literal ".
(_AC_INIT_PACKAGE): Use it to plug hole in last patch.
* tests/base.at (AC_INIT with unusual version strings): Enhance
test.
Relax AC_INIT requirements for PACKAGE and VERSION strings again.
* lib/m4sugar/m4sh.m4 (AS_LITERAL_HEREDOC_IF): New macro.
(_AS_LITERAL_HEREDOC_IF, _AS_LITERAL_HEREDOC_IF_YES)
(_AS_LITERAL_HEREDOC_IF_NO): New helper macros.
* lib/autoconf/general.m4 (_AC_INIT_PACKAGE): Use
AS_LITERAL_HEREDOC_IF for PACKAGE and VERSION strings.
* tests/base.at (AC_INIT with unusual version strings): New test.
* tests/m4sh.at (AS@&t@_LITERAL_IF): Extend test.
* NEWS: Update.
Allow inspecting AC_PREPROC_IFELSE output in true branch.
* lib/autoconf/general.m4 (_AC_PREPROC_IFELSE_BODY): Redirect
preprocessor output to conftest.i rather than /dev/null.
(_AC_PREPROC_IFELSE): Remove conftest.i in the postprocessing.
* tests/compile.at (Order of user actions and cleanup): Extend
test in the ACTION-IF-TRUE branch.
* doc/autoconf.texi (Running the Preprocessor): Document new
feature.
* NEWS: Update.
manual: compiler flags -D and -L should not be followed by space
* doc/autoconf.texi (Preset Output Variables): Remove space
between -D and -L flags and their arguments, traditional cpp
implementations like Solaris 10, IRIX 6.5, OSF Tru64 5.1D,
AIX 5.3 do not accept it.
Eric Blake [Tue, 6 Jul 2010 20:00:44 +0000 (22:00 +0200)]
Fix regression of AC_CHECK_SIZEOF on pointer types.
* lib/autoconf/types.m4 (AC_CHECK_SIZEOF): Translate `*' to `p'
when checking literal-ness of the type, for pointer types.
* lib/m4sugar/m4sh.m4 (_AS_TR_SH): Also consider `*' as literal.
(_AS_TR_CPP): Likewise.
* tests/semantics.at (AC_CHECK_ALIGNOF struct): When checking
for numeric answer, be sure to not allow variable references.
(AC_CHECK_SIZEOF struct): Likewise. Also, test the
`AC_CHECK_SIZEOF([int *])' example from the manual.
* doc/autoconf.texi (Generic Compiler Characteristics): Add
example marker.
* NEWS: Update.
Reports by Nishio Futoshi and Roberto Bagnara.
Fix regression of AC_CONFIG_SUBDIRS with multiple arguments.
* lib/autoconf/status.m4 (AC_CONFIG_SUBDIRS): Do not assume the
argument is a single word.
* tests/torture.at (Deep Package): Extend test to cover this.
(Non-literal AC_CONFIG_SUBDIRS): New test.
* doc/autoconf.texi (Subdirectories): Add example marker.
* NEWS: Update.
Report by Bruno Haible.
* tests/torture.at (Torturing config.status)
(Substitute a 2000-byte string)
(Substitute and define special characters)
(Substitute a newline): Quote first argument in for list so
that it does not look like an assignment.
Eric Blake [Fri, 2 Jul 2010 21:35:45 +0000 (15:35 -0600)]
Make AS_TR_SH and AS_TR_CPP similar.
* lib/m4sugar/m4sh.m4 (_AS_TR_CPP_LITERAL): Avoid underquoting.
(_AS_TR_CPP_INDIR): Handle all polymorphic variables.
* tests/m4sh.at (AS@&t@_TR_SH and AS@&t@_TR_CPP): New test.
* NEWS: Document the fix.
Reported by Bruno Haible.
Eric Blake [Fri, 2 Jul 2010 20:03:50 +0000 (14:03 -0600)]
Reduce startup cost of autotest.
* lib/autotest/general.m4 (_AT_FINISH) <banners>: Rather than
doing a recursive find, limit ourselves to top ChangeLog only.
Reported by Ralf Wildenhues.
Ralf Wildenhues [Mon, 28 Jun 2010 22:15:25 +0000 (00:15 +0200)]
New macro AC_FC_FIXEDFORM, improved AC_FC_FREEFORM, coverage.
* lib/autoconf/fortran.m4 (_AC_FC_DIALECT_YEAR): Fix typo in
comment.
(AC_FC_FREEFORM): Update list of known options for Sun, HP,
Lahey/Fujitsu Fortran compilers. Use M4 quoting consistently.
(AC_FC_FIXEDFORM): New macro.
* tests/fortran.at (AC_FC_DUMMY_MAIN usage, AC_FC_MAIN usage):
Use AC_FC_FIXEDFORM, to avoid testsuite failure with FC=xlf95.
(AC_FC_FREEFORM with AC_FC_SRCEXT, AC_FC_FIXEDFORM)
(AC_FC_FIXEDFORM with AC_FC_SRCEXT): New tests.
* tests/mktests.sh: No need to exclude AC_FC_FREEFORM, it uses
AC_LANG_PUSH/AC_LANG_POP.
* doc/autoconf.texi (Fortran Compiler): Document it.
* NEWS: Update.
Eric Blake [Tue, 2 Mar 2010 00:17:40 +0000 (17:17 -0700)]
Optimize AS_BOX.
* lib/m4sugar/m4sh.m4 (AS_BOX): Use less m4 time.
(_AS_BOX_LITERAL): Use fewer forks in the common case.
* doc/autoconf.texi (Common Shell Constructs) <AS_BOX>: Document
the macro.
* NEWS: Mention it.
Eric Blake [Sat, 27 Feb 2010 18:43:21 +0000 (11:43 -0700)]
Use new AS_LITERAL_IF argument when appropriate.
* lib/m4sugar/m4sh.m4 (AS_VAR_SET): Reduce m4 overhead.
(AS_VAR_IF, AS_VAR_TEST_SET): Provide shorter variant for simple
references.
Suggested by Bruno Haible.
Eric Blake [Tue, 16 Mar 2010 21:51:23 +0000 (15:51 -0600)]
Add AS_LITERAL_WORD_IF.
* lib/m4sugar/m4sh.m4 (_AS_LITERAL_IF): Also reject shell quoting
characters as non-literal, and provide way to reject space.
(AS_LITERAL_WORD_IF): New macro.
* doc/autoconf.texi (Polymorphic Variables) <AS_LITERAL_IF>:
Document new macro. Fix example to match reality.
* NEWS: Document change and new macro.
* tests/m4sh.at (AS@&t@_LITERAL_IF): Update test.
* doc/autoconf.texi (Limitations of Shell Builtins) <for>:
Document a bug of the 'for' builtin in Solaris /bin/sh, w.r.t.
tokens seeming variable assignment in the list of arguments.
* doc/autoconf.texi (Limitations of Shell Builtins) <for>:
Document a bug of the 'for' builtin in Solaris /bin/sh, w.r.t.
tokens seeming variable assignment in the list of arguments.
Ralf Wildenhues [Wed, 23 Jun 2010 17:23:12 +0000 (19:23 +0200)]
Improve VPATH handling in config.status for non-Automake projects.
* lib/autoconf/status.m4 (_AC_OUTPUT_FILES_PREPARE): Be sure not
to remove references to a subdir of srcdir. Fix treatment of
multiple colon-separated VPATH entries.
* tests/torture.at (VPATH): New test.
Report by Keith Marshall.
Ralf Wildenhues [Wed, 23 Jun 2010 17:55:02 +0000 (19:55 +0200)]
Further improve docs about nested double-quotes and backquotes.
* doc/autoconf.texi (Shellology): Remove anchor for pdksh.
Move quoting bug example to ...
(Shell Substitutions): ... here. Document which behavior is
specified by Posix.
Ralf Wildenhues [Wed, 23 Jun 2010 17:18:14 +0000 (19:18 +0200)]
Coverage for Fortran compiler macros.
* tests/fortran.at (AC_OPENMP and Fortran 77)
(AC_OPENMP and Fortran): Simplify, using AT_CHECK_CONFIGURE.
(AC_F77_DUMMY_MAIN usage, AC_FC_DUMMY_MAIN usage)
(AC_F77_MAIN usage, AC_FC_MAIN usage, AC_F77_FUNC usage)
(AC_FC_FUNC usage, AC_FC_SRCEXT usage, AC_FC_FREEFORM): New
tests.
* doc/autoconf.texi (Fortran Compiler): Use GNU coding style
on C code snippets. Add markers for tested examples.
Suggest AC_FC_FREEFORM for source file extensions which the
compiler might not natively support but which are accepted
with help from AC_FC_SRCEXT. Suggest AC_CONFIG_HEADERS for
setups using one of the AC_*MAIN macros.
Ralf Wildenhues [Sat, 19 Jun 2010 18:17:09 +0000 (20:17 +0200)]
Accept any nonzero exit status upon config.status write failure.
* tests/torture.at (AC_CONFIG_FILES, HEADERS, LINKS and COMMANDS):
Normalize nonzero status to 1 for writing to /dev/full, for HP-UX
11.31 cat which exits 2.
Ben Pfaff [Tue, 15 Jun 2010 04:10:48 +0000 (21:10 -0700)]
Document how to propogate variables to submakes.
On bug-gnulib, archived at
http://permalink.gmane.org/gmane.comp.lib.gnulib.bugs/22132
Ralf Wildenhues taught me a bit about how Automake propagates
variables to submakes. I thought that it would good to document
this in the Autoconf manual, which currently has no detail at
all.
* doc/autoconf.texi: Describe technique used by Automake to
propagate variables to submakes in more detail.
Ralf Wildenhues [Tue, 22 Jun 2010 21:50:03 +0000 (23:50 +0200)]
Formatting cleanups for optional arguments.
* doc/autoconf.texi (Configuration Actions, Help Formatting)
(External Software): Use @r{} for brackets denoting optional
arguments, where @ovar is not safe to use.
Ralf Wildenhues [Tue, 22 Jun 2010 18:05:38 +0000 (20:05 +0200)]
Clarify nested double-quotes and backquotes shell issues.
* doc/autoconf.texi (Shellology): New anchor for pdksh.
(Shell Substitutions): Link to it for escaped double-quotes
within double-quoted backquotes; add ksh example for unescaped
inner double-quotes problem.
Ralf Wildenhues [Tue, 22 Jun 2010 18:26:33 +0000 (20:26 +0200)]
Overhaul the manual, esp. the Autotest chapter.
* doc/autoconf.texi (Installation Directory Variables):
Replace some uses of @var with @code.
(Special Shell Variables): Fix misordered paragraph about IFS.
(Writing Testsuites): Include paragraph following AT_TESTED in
the macro definition.
(testsuite Invocation): Failed tests are not rerun.
(testsuite Scripts, Autotest Logs, testsuite Invocation)
(Making testsuite Scripts): Minor edits for consistency and
language.
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.