maint: make position of gnulib checkout configurable
Some gnulib-related tools (most prominently, the gnulib-provided
'bootstrap' script) allow the user to define the position of his
gnulib's repository checkout through the use of the 'GNULIB_SRCDIR'
environment variable. We should do the same, for consistency and
to easily support slightly unusual layouts in developers' source
trees.
* cfg.mk (gnulib_dir): Define to "$GNULIB_SRCDIR" if that's set,
and to default value of "'$(abs_srcdir)'/../gnulib" otherwise.
Update comments.
* lib/Autom4te/Getopt.am: The master copy of this file has
been moved to the Automake repository (see Automake commit
'v1.11-662-g52246cc' 2012-01-18, "cmdline parsing: move into
a dedicated perl module"). So we now we sync it from there,
by listing it ...
* cfg.mk (autom4te_files): ... in this variable.
build: fix automake error due to missing ChangeLog
Apparently, Automake does not accept the '$(srcdir)/ChangeLog'
target in Makefile.am as a declaration that ChangeLog is
automatically generated (and thus does not need to exist at
automake time). One has to use a *literal* 'ChangeLog' target.
Problem introduced in commit v2.68-118-g6ed5195 of 2012-01-17,
"maint: generate ChangeLog from git log".
* Makefile.ma ($(srcdir)/ChangeLog): Renamed ...
(ChangeLog): ... to this.
* lib/Autom4te/General.pm (getopt): Move the guts of its
implementation ...
* lib/Autom4te/Getopt.pm (parse_options): .. into this function
in the new Autom4te::Getopt module. This will make it simpler
for the implementation to be shared with other projects (right
now, Automake).
* lib/Automake/Makefile.am (dist_perllib_DATA): Add the new
module.
Jim Meyering [Tue, 17 Jan 2012 11:22:59 +0000 (12:22 +0100)]
tests: avoid spurious failure for each gnu-fortran-using test
The tests compare pre- and post-run lists of envvars, which must
be the same, modulo a list of known, filtered-out exceptions.
However, when running fortran-checking tests with GNU fortran, each
would fail due to the post-run addition of the GFC symbol added in v2.68-97-gbd962ac.
* tests/local.at (AT_CHECK_ENV): Add GFC to the list of symbols
that we ignore in pre-/post-run environment diffs.
Following the practice set by various other GNU projects, we start
to automatically generate the ChangeLog file from the git commit
messages. This will avoid duplication (as the ChangeLog entries
were always inserted both in the git commit message and in the
version-controlled ChangeLog file), and potential problems with
spurious merge conflicts (which, although greatly mitigated by
Bruno Haible's `git-merge-changelog' helper program, have never
been completely solved).
* ChangeLog: Moved ...
* ChangeLog.3: ... to this.
* build-aux/gitlog-to-changelog: New script, synced from gnulib.
* cfg.mk (gnulib-update): Also sync gitlog-to-changelog.
* Makefile.am (gen-ChangeLog): New .PHONY rule, generate the
ChangeLog for distribution.
(dist-hook): Depend on it.
($(srcdir)/ChangeLog): New dummy rule, to pacify automake "gnu"
strictness. Creates a dummy ChangeLog, that will be overridden
by the proper one at distribution time.
(gen_start_date): New variable, the date starting from which the
git log entries are to be copied in the generated ChangeLog.
(EXTRA_DIST): Add ChangeLog.3 and gitlog-to-changelog.
* configure.ac (AC_CONFIG_SRCDIR): Use 'lib/autoconf/autoconf.m4'
instead of 'ChangeLog' as the sentinel file.
* .gitignore: Add ChangeLog.
getopt: remove hack for special handling of "-" argument
Older versions of Getopt::Long acted bogusly and died when they
where configured with the 'bundling' flag and an argument '-' was
seen on the command line they were parsing. That is no longer
the case though, and has not been for quite a long time: the bug
is no longer present in the 5.6.2 version of perl and the 2.25
version of Getopt::Long (and today, the latest versions of perl
and Getopt::Long are respectively 5.14.2 and 2.38). The obsolete
workaround for that Getopt::Long bug can thus be removed from our
'getopt' function.
It is also worth noting that such a workaround was quite buggy
and brittle itself; for example, a command like this:
"autom4te --output -"
would have caused the incorrect diagnostic:
"autom4te: option `--output' requires an argument"
Much worse, a command like this:
"autom4te --language=autoconf --output - configure.ac"
would have caused the standard input of autom4te to be processed
and copied into the 'configure.ac' file, deleting its pre-existing
content! Surely not what a user would have expected.
After this change, a command like this:
autom4te --language=autoconf --output - - <configure.ac >out
works as expected, processing the input from 'configure.ac' and
writing it to the 'out' file.
* lib/Autom4te/General.pm (use): Require perl version 5.6.2.
(getopt): Remove the old workaround.
getopt: fix diagnostic for missing mandatory option argument
Before this change, an incorrect command line usage:
"autom4te --output"
triggered broken diagnostic like:
"autom4te: unrecognized option `--output'"
instead of the expected and correct:
"autom4te: option `--output' requires an argument"
* lib/Autom4te/General.pm (getopt): Give correct diagnostic in
case of usage errors due to missing arguments for options for
which they are mandatory. Code basically copied from automake's
'parse_arguments' private subroutine.
Paul Eggert [Thu, 5 Jan 2012 20:32:12 +0000 (12:32 -0800)]
doc: mention Bash 2.03 bug with backslash-newline
* doc/autoconf.texi (Invoking the Shell): New section.
(Backslash-Newline-Empty): Rename from Backslash-Newline-Newline.
Mention problem with Bash 2.03.
Paul Eggert [Mon, 2 Jan 2012 19:22:25 +0000 (11:22 -0800)]
autoconf: remove " -link" and ")" from xlf output
* lib/autoconf/fortran.m4 (_AC_PROG_FC_V_OUTPUT):
Also remove " -link" and trailing ")" from xlf output.
Problem and fix reported by Thomas Jahns in
<http://lists.gnu.org/archive/html/bug-autoconf/2012-01/msg00000.html>.
configure: will re-execute with $CONFIG_SHELL, if it's set
* lib/m4sugar/general.m4 (_AS_DETECT_BETTER_SHELL): Define the macro
`_AS_FORCE_REEXEC_WITH_CONFIG_SHELL' to `yes', so that the code in
`_AS_DETECT_BETTER_SHELL' will cause autoconf-generated configure
scripts to always re-execute themselves with $CONFIG_SHELL, if it's
set in the environment.
* doc/autoconf.texi (config.status Invocation): Update.
* doc/install.texi (Defining Variables): Likewise.
* NEWS: Likewise.
* tests/m4sh.at: Add tests for the new semantics in ...
(Configure re-execs self with CONFIG_SHELL): ... this new
test group.
m4sh: allow forced re-execution with $CONFIG_SHELL, if it's set
* lib/m4sugar/m4sh.m4 (_AS_DETECT_BETTER_SHELL): If the m4sh client
has defined the macro `_AS_FORCE_REEXEC_WITH_CONFIG_SHELL' to
"yes", emit code to always re-execute the current script with
$CONFIG_SHELL, if that's set.
* tests/m4sh.at: Add tests for the new and old semantics, in ...
(Re-exec with CONFIG_SHELL, Forced re-exec with CONFIG_SHELL): ...
these new test groups.
Paul Eggert [Mon, 26 Dec 2011 08:34:13 +0000 (00:34 -0800)]
AS_LN_S: fall back on 'cp -pR' (not 'cp -p') if 'ln -s' fails
This works better for symlinks to directories.
Problem reported by Eli Zaretskii via Werner Lemberg in
<http://lists.gnu.org/archive/html/bug-autoconf/2011-12/msg00006.html>.
* NEWS:
* doc/autoconf.texi (Particular Programs): Document this.
* lib/m4sugar/m4sh.m4 (_AS_LN_S_PREPARE): Implement this.
Paul Eggert [Thu, 8 Dec 2011 06:41:04 +0000 (22:41 -0800)]
AC_LANG_BOOL_COMPILE_TRY(C): port to g++ with warnings
* lib/autoconf/c.m4 (AC_LANG_BOOL_COMPILE_TRY(C)): Use the
array as well as setting it, to pacify g++. Reported by
Werner Lemberg in
<http://lists.gnu.org/archive/html/autoconf/2011-12/msg00005.html>.
fortran: define $GFC to "yes" if $FC is a GNU compiler
* lib/autoconf/fortran.m4 (AC_PROG_FC): Define `$GFC' to "yes" if
the detected fortran compiler is a GNU compiler, define it to the
empty string otherwise.
This is mostly for consistency for what is done for the C, C++
and Fortran 77 compilers.
* doc/automake.texi: Update.
docs: some fixlets in section about shell signal handling
* doc/autoconf.texi (Signal handling): Rename ...
(Signal Handling): ... to this, for consistency with other node
names. Fix some typos and grammaros. Add more URL references
in comments.
docs: korn shells can have $? > 256 for signal-terminated children
Some Korn shells, when a child process dies due to signal number
n, can leave in $? an exit status of 256+n, instead of the more
common 128+n. See also Austin Group issue 0000051:
<http://www.austingroupbugs.net/view.php?id=51>
* doc/autoconf.texi (Signal handling): Document the described Korn
Shell behaviour, and some of its possible shortcomings.
Eric Blake [Mon, 26 Sep 2011 18:01:11 +0000 (12:01 -0600)]
docs: relax documentation license by dropping cover text
See https://lists.gnu.org/archive/html/bug-diffutils/2011-08/msg00022.html
for precedence in diffutils. The autoconf manual, as of this commit,
was still barely below 400 pages.
* doc/autoconf.texi (copying): Drop front- and back-cover texts.
* NEWS: Document this.
Reported by Brian Gough.
docs: signal-related bugs and incompatibilities for the shells
* doc/autoconf.texi (Signal handling): New paragraph.
(@menu at "Portable Shell", @detailmenu): Update.
Motivated by recent discussion on the bug-autoconf list, as well
as work in the automake testsuite:
<https://lists.gnu.org/archive/html/bug-autoconf/2011-09/msg00003.html>
<https://lists.gnu.org/archive/html/bug-autoconf/2011-09/msg00004.html>
<http://lists.gnu.org/archive/html/automake-patches/2011-09/msg00066.html>
docs: more details about make VPATH rewriting woes
* doc/autoconf.texi (Automatic Rule Rewriting): Solaris make
VPATH rewriting applies to any whitespace-separated word in a
rule, so it might apply also to shell variables, functions
and keywords (and automake has already tripped on this once);
document this, with an example. Since we are at it, do some
minor reformatting of existing text.
Paul Eggert [Thu, 1 Sep 2011 06:16:06 +0000 (23:16 -0700)]
AC_C_CONST: don't reject gcc -Werror -Wall
* lib/autoconf/c.m4 (AC_C_CONST): Don't reject gcc when it is used
with -Werror -Wall during configuring. It's unwise to use GCC
that way, but apparently enough people do it nowadays that it's an
issue. These days nobody uses the old compilers that the old
tests reject, so we can't test this fix against them, but it's
more important to work with modern GCC (even when misused) than to
work with no-longer-used compilers. Problem reported by Shevek in
<http://lists.gnu.org/archive/html/bug-autoconf/2008-11/msg00007.html>
and raised again by Dan Kegel in
<http://lists.gnu.org/archive/html/bug-autoconf/2011-08/msg00020.html>.
Motivated by automake bug#9245:
<http://debbugs.gnu.org/cgi/bugreport.cgi?bug=9245>
and FreeBSD PR bin/159730:
<http://www.freebsd.org/cgi/query-pr.cgi?pr=159730>
* doc/autoconf.texi (Parallel Make): Document other BSD make
incompatibilities. Reorganize the existing related documentation
accordingly.
Eric Blake [Fri, 22 Jul 2011 13:03:47 +0000 (07:03 -0600)]
docs: fix minor doc problems
* doc/autoconf.texi (Why Not Imake): Fix grammar.
(autoreconf Invocation): Fix short option for --version.
* THANKS: Update.
Reported by Christophe Jarry and Russ Allbery.
Paul Eggert [Sat, 18 Jun 2011 21:39:57 +0000 (14:39 -0700)]
* lib/autoconf/functions.m4 (_AC_LIBOBJ_ALLOCA): Try to outsmart GCC.
Problem with stack-detection code reported by Andy Wingo in
<http://lists.gnu.org/archive/html/bug-autoconf/2011-06/msg00032.html>.
This fix is imported from gnulib's c-stack module.
New macro AC_FC_PP_DEFINE for the preprocessor define flag.
* lib/autoconf/fortran.m4 (AC_FC_PP_DEFINE): New macro.
* lib/autom4te.in (Automake-preselections): Preselect it.
* doc/autoconf.texi (Fortran Compiler): Document it.
* tests/local.at (_AT_CHECK_ENV): Do not complain about
FCFLAGS_F nor FC_DEFINE.
* NEWS: Update.
New macro AC_FC_PP_SRCEXT for preprocessed file extensions.
* lib/autoconf/fortran.m4 (AC_FC_PP_SRCEXT): New macro.
* lib/autom4te.in (Automake-preselections): Preselect it.
* doc/autoconf.texi (Fortran Compiler): Document it, rewriting
the documentation for AC_FC_SRCEXT along the way.
* tests/fortran.at (AC_FC_PP_SRCEXT usage): New test.
* tests/mktests.sh: Exclude the macro from default testing.
* NEWS: Update.
New macro AC_FC_MODULE_OUTPUT_FLAG: module output directory.
* lib/autoconf/fortran.m4 (AC_FC_MODULE_OUTPUT_FLAG): New macro.
* doc/autoconf.texi (Fortran Compiler): Document it.
* tests/local.at (_AT_CHECK_ENV): Do not complain about
FC_MODOUT.
* NEWS: Update.
New macro AC_FC_MODULE_FLAG: Fortran 90 module include path.
* lib/autoconf/fortran.m4 (AC_FC_MODULE_FLAG): New macro,
adjusted and rewritten from the AX_F90_MODULE_FLAG macro from
the Autoconf Macro Archive by Luc Maisonobe, Julian C. Cummings,
and Alexander Pletzer.
* doc/autoconf.texi (Fortran Compiler): Document it.
* tests/fortran.at (AC_FC_MODULE_FLAG): New test.
* tests/local.at (AT_CHECK_ENV): Do not complain about FC_MODINC
setting.
* NEWS, THANKS: Update.
New macro AC_FC_MODULE_EXTENSION: Fortran 90 module extension.
* lib/autoconf/fortran.m4 (AC_FC_MODULE_EXTENSION): New macro,
rewritten from the AX_F90_MODULE_EXTENSION macro from the
Autoconf Macro Archive by Luc Maisonobe and Alexander Pletzer.
* doc/autoconf.texi (Fortran Compiler): Document it.
* tests/local.at (_AT_CHECK_ENV): Do not complain about
FC_MODEXT setting.
* NEWS, THANKS: Update.
Ralf Wildenhues [Sat, 5 Mar 2011 06:55:14 +0000 (07:55 +0100)]
New macro AC_FC_CHECK_BOUNDS to enable Fortran array bounds checking.
* lib/autoconf/fortran.m4 (AC_FC_CHECK_BOUNDS): New macro.
* doc/autoconf.texi (Fortran Compiler): Document it.
* tests/fortran.at (AC_FC_CHECK_BOUNDS): New test.
* NEWS: Update.
Prompted by report from Eve-Marie Devaliere.
Ralf Wildenhues [Fri, 4 Mar 2011 20:25:06 +0000 (21:25 +0100)]
tests: accept f2c/fort77 as GNU Fortran 77.
* tests/fortran.at (GNU Fortran 77): Try to detect f2c wrapper
fort77 as GNU as well: it defines __GNUC__ too. Fixes testsuite
failure when f77 is fort77.
Report from Giulio Paci.
Ralf Wildenhues [Sat, 26 Feb 2011 07:19:36 +0000 (08:19 +0100)]
config.status: do not quote $SHELL when rerunning configure.
* lib/autoconf/status.m4 (_AC_OUTPUT_CONFIG_STATUS): Allow
$SHELL to contain more than one word, when rerunning configure,
for debugging purposes like CONFIG_SHELL='/bin/sh -x'.
Christian Rössel [Sun, 20 Feb 2011 17:24:23 +0000 (18:24 +0100)]
Fix OpenMP flag detection for various Fortran compilers.
* lib/autoconf/c.m4 (_AC_LANG_OPENMP(Fortran 77)): Use '!$'
OpenMP-conditional compilation construct, to force compile
failure with missing OpenMP flag.
(AC_OPENMP): Add flags for Cray CCE and NEC SX compilers.
* THANKS: Update.
Eric Blake [Fri, 18 Feb 2011 18:08:08 +0000 (11:08 -0700)]
docs: document fourth argument of AC_RUN_IFELSE better
* doc/autoconf.texi (Runtime) <AC_RUN_IFELSE>: Make synopsis show
that the default is configure failure. Rework the text about
proper use of the fourth argument.
Paul Eggert [Wed, 16 Feb 2011 09:29:40 +0000 (01:29 -0800)]
autoconf: tune long long tests, particularly for c99
This change is imported from gnulib.
* lib/autoconf/types.m4 (AC_TYPE_LONG_LONG_INT): Don't bother compiling
or running anything if c99, or if unsigned long long int does not
work. In either case, we know the answer without further tests.
Do not compile _AC_TYPE_LONG_LONG_SNIPPET twice. Instead, compile
it at most once, and use its results for both long long int and
unsigned long long int. This is more likely to be efficient in
the common case where the program wants to check for both long
long int and unsigned long long int.
(AC_TYPE_UNSIGNED_LONG_LONG_INT): Don't bother compiling if c99,
since the answer is already known.
Paul Eggert [Sat, 5 Feb 2011 04:38:07 +0000 (20:38 -0800)]
autoconf: new macro AC_HEADER_CHECK_STDBOOL
* NEWS: Document this.
* doc/autoconf.texi (Particular Headers): Likewise.
In example, don't assume a 'system.h' exists.
* lib/autoconf/headers.m4 (AC_CHECK_HEADER_STDBOOL): New macro.
Use it with AN_IDENTIFIER, since it's less heavyweight.
Reindent to match gnulib, since that's a bit nicer.
(AC_HEADER_STDBOOL): Reimplement in terms of it.
* doc/autoconf.texi (Parallel Make): Document that some make
implementations, when run in parallel mode, connect stdout and
stderr of child processes to pipes or temporary files, and might
re-route stderr of spawned processes to stout. Also document
that FreeBSD make in parallel mode reuses the same shell for
multiple commands within one recipe (like NetBSD make does).
Ralf Wildenhues [Tue, 25 Jan 2011 19:49:50 +0000 (20:49 +0100)]
docs: advise against HP-UX make due to time stamp semantics.
* doc/autoconf.texi (Timestamps and Make): Document HP-UX 11.31
make issue with targets having the same time stamps as their
prerequisites.
* doc/install.texi (Particular Systems): Warn against using
HP-UX make.
Ralf Wildenhues [Sun, 23 Jan 2011 10:24:02 +0000 (11:24 +0100)]
docs: new section about whitespace trimmmed from make command-lines.
* doc/autoconf.texi (Command-line Macros and whitespace): New
section, document trimming of whitespace from macros set on the
command line and from the environment.
Ralf Wildenhues [Sat, 22 Jan 2011 18:39:29 +0000 (19:39 +0100)]
docs: document how to use comment characters in rules.
* doc/autoconf.texi (Comments in Make Rules): Explain how to
produce a `#' in a rule.
(Comments in Make Macros): Add cross reference.
Suggestion from Eric Blake.
Ralf Wildenhues [Sat, 22 Jan 2011 10:16:27 +0000 (11:16 +0100)]
docs: new sections about comments and whitespace in make macros.
* doc/autoconf.texi (Top, Portable Make): Adjust menus.
(Comments in Make Macros, Trailing whitespace in Make Macros):
New sections.
Suggestion by Stefano Lattarini.
Ralf Wildenhues [Sat, 22 Jan 2011 12:46:06 +0000 (13:46 +0100)]
docs: do not use AIX 5.3 cp -R.
* doc/autoconf.texi (Limitations of Usual Tools): Document one
instance of the cp -R bug on AIX 5.3. This seems to have been
fixed in 6.1 and newer releases.