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.
Ralf Wildenhues [Sun, 1 Nov 2009 00:04:31 +0000 (01:04 +0100)]
Micro-optimization of config.status substitution.
* lib/autoconf/status.m4 (_AC_OUTPUT_FILES_PREPARE): No need to
concatenate an empty second string, when we have exactly 148
characters to substitute.
* tests/torture.at (Substitute a 2000-byte string): Add test
exposure for runs of backslashes near the 148 character limit.
Ralf Wildenhues [Sat, 31 Oct 2009 16:04:38 +0000 (17:04 +0100)]
Fix testsuite failure on IRIX and AIX.
* tests/torture.at (Substitute and define special characters):
Double the backslash before the double-quote in
AC_DEFINE_UNQUOTED, as documented for here-documents.
Ralf Wildenhues [Sat, 31 Oct 2009 07:46:58 +0000 (08:46 +0100)]
Do not fail OpenMP tests on systems without aclocal.
* tests/c.at (AC_OPENMP and C, AC_OPENMP and C++): Override
`ACLOCAL=true' for autoreconf, the tests don't need aclocal.
* tests/fortran.at (AC_OPENMP and Fortran 77)
(AC_OPENMP and Fortran): Likewise.
Bruno Haible [Sat, 31 Oct 2009 06:56:53 +0000 (07:56 +0100)]
Improve cache variable documentation.
* doc/autoconf.texi (AC_PROG_AWK, AC_PROG_GREP, AC_PROG_EGREP,
AC_PROG_FGREP, AC_PROG_INSTALL, AC_PROG_MKDIR_P, AC_PROG_LEX,
AC_PROG_YACC, AC_CHECK_PROG, AC_CHECK_PROGS, AC_PATH_PROG,
AC_PATH_PROGS): Don't suggest to use the cache variable, only to
override it, or preferably, a non-cache variable associated with
the test.
(AC_PROG_SED): Likewise. Fix name of cache variable.
(AC_FUNC_GETMNTENT): Fix name cache variable.
(AC_FUNC_LSTAT): Fix typo.
Ralf Wildenhues [Sat, 31 Oct 2009 01:24:09 +0000 (02:24 +0100)]
Fix AC_OPENMP for Fortran (F77 and FC).
* lib/autoconf/fortran.m4 (AC_LANG_FUNC_LINK_TRY(Fortran): New.
* tests/c.at (AC_C_RESTRICT and C++, AC_OPENMP and C)
(AC_OPENMP and C++): New tests.
* tests/fortran.at (AC_OPENMP and Fortran 77)
(AC_OPENMP and Fortran): New tests.
* THANKS: Update.
Report by Bart Oldeman.
Eric Blake [Wed, 28 Oct 2009 18:21:36 +0000 (12:21 -0600)]
Minor optimizations to m4sh.
* lib/m4sugar/m4sh.m4 (AS_VAR_IF, AS_IDENTIFIER_IF)
(AS_LITERAL_IF): Parse fewer bytes during expansion, by visiting
if-true and if-false arguments only once.
Eric Blake [Wed, 28 Oct 2009 17:23:45 +0000 (11:23 -0600)]
Optimize m4_escape for common case.
* lib/m4sugar/m4sugar.m4 (m4_escape): Don't use regex if string is
already sane, by copying from AS_LITERAL_IF. Move guts...
(_m4_escape): ...into new helper.
Eric Blake [Wed, 28 Oct 2009 14:17:27 +0000 (08:17 -0600)]
Fix m4_text_wrap handling of quoted whitespace.
* lib/m4sugar/m4sugar.m4 (m4_escape): New macro.
(m4_text_wrap): Use it to avoid issues with embedded [ and ].
* tests/m4sugar.at (m4@&t@_text_wrap): Test it.
* NEWS: Document this.
* doc/autoconf.texi (Text processing Macros) <m4_escape>:
Likewise.
Reported by Mike Frysinger.
Eric Blake [Wed, 28 Oct 2009 02:14:14 +0000 (20:14 -0600)]
Mention another feature of AC_RUN_IFELSE.
* doc/autoconf.texi (Runtime) <AC_RUN_IFELSE>: Mention that
compiled test program still exists during if-true branch.
* THANKS: Update.
Reported by Stefano Lattarini, suggestion by Ralf Wildenhues.
Eric Blake [Thu, 15 Oct 2009 13:00:38 +0000 (07:00 -0600)]
Improve INSTALL wording.
* doc/install.texi (Basic Installation): Clarify installcheck
behavior.
(Installation Names): Mention that --prefix only overrides
directory locations not specified on the command line. Prefer
/alternate/directory over /path/to. Remove a sentence targeted to
the developer, not the user.
* THANKS: Update.
Suggested by Alfred M. Szmidt.
Bruno Haible [Fri, 9 Oct 2009 03:36:45 +0000 (05:36 +0200)]
Recommend `sh -n' debugging, and public result variables for macros.
* doc/autoconf.texi (Debugging): Recommend to use "bash -n
configure". Recommend the use of result variables as an
alternative to run-if-true/run-if-false parameters.
Clarify documentation about Solaris sed quantifier restriction.
* doc/autoconf.texi (Limitations of Usual Tools) <sed>: '*' does
not work after subexpressions, \{M,N\} only after one-character
expressions. From GCC PR 38923.
* doc/autoconf.texi: Define new index `CA' for cache variables.
(caindex): New macro.
(Cache Variable Index): New appendix node.
(Top, Indices): Adjust menus.
(Cache Variable Names, Site Defaults): Adjust text.
* doc/Makefile.am (CLEANFILES): Add files generated for CA index.
Document AM_MAKEFLAGS workaround to the macro override problem.
* doc/autoconf.texi (Macros and Submakes): Automake makefiles
provide AM_MAKEFLAGS to help with overriding macros in submake
invocations.
Prompted by bug report from Bruno Haible.
Jim Meyering [Tue, 15 Sep 2009 17:21:21 +0000 (19:21 +0200)]
AC_INIT: Use correct value for PACKAGE_TARNAME.
* lib/autoconf/general.m4 (AC_PACKAGE_NAME): Remove what are excess
quotes around the package name, now that m4_tolower's result is quoted.
* tests/base.at (AC_INIT): Test for this.
Work around DJGPP shell function return bug with command substitutions.
DJGPP bash 2.04 has a bug in that `return $ac_retval' done in a
shell function which also contains a command substitution causes
the shell to barf. For more details and a fix see:
<http://www.delorie.com/djgpp/mail-archives/browse.cgi?p=djgpp-workers/2009/09/09/03:35:08>
Possible workaround include putting the `return' in a subshell
or calling another function to set the status.
* lib/autoconf/general.m4 (_AC_PREPROC_IFELSE_BODY)
(_AC_COMPILE_IFELSE_BODY, _AC_LINK_IFELSE_BODY)
(_AC_RUN_IFELSE_BODY, _AC_COMPUTE_INT_BODY): Use AS_SET_STATUS
instead of `return'.
* doc/autoconf.texi (Common Shell Constructs, Shell Functions):
Document the issue.
* THANKS: Update.
Report by Rugxulo and Reuben Thomas.
The DJGPP compiler may create both `a.out' and `a.exe' without -o,
and both `conftest' and `conftest.exe' with `-o conftest', but not
with `-o conftest.exe'.
* lib/autoconf/lang.m4 (_AC_COMPILER_EXEEXT_O): Also remove
`conftest' without $ac_exeext suffix.
DJGPP fix: do not try to source /dev/null as cache or site file.
* lib/autoconf/general.m4 (AC_SITE_LOAD, AC_CACHE_LOAD): Do not
load the cache or site file if it is `/dev/null', as DJGPP treats
it as a regular file, but the shell then warns about it later.
Fixes several test suite failures on DJGPP.
* tests/autotest.at (Erlang Eunit unit tests): Use "no" as
value-if-not-found for Erlang tools.
* tests/erlang.at: Likewise. Also, use AS_EXIT instead of plain
exit.
* tests/tools.at (autoupdating macros recursively)
(autoupdating with m4@&t@_pushdef, autoupdating with AC_REQUIRE)
(autoupdating with complex quoting): New tests.