platform/upstream/automake.git
11 years agoMerge branch 'branch-1.13.2' into maint
Stefano Lattarini [Fri, 19 Apr 2013 13:46:36 +0000 (15:46 +0200)]
Merge branch 'branch-1.13.2' into maint

* branch-1.13.2:
  Add missing '$' for variable expansion in depout.m4
  fixup: one stray reference to older versioning scheme

11 years agoAdd missing '$' for variable expansion in depout.m4
Gavin Smith [Fri, 19 Apr 2013 13:16:26 +0000 (15:16 +0200)]
Add missing '$' for variable expansion in depout.m4

* m4/depout.m4: "am__include" appeared where "$am__include" was meant.

Reference:
<http://lists.gnu.org/archive/html/automake-patches/2013-04/msg00000.html>

Copyright-paperwork-exempt: yes
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoMerge branch 'preproc' into maint
Stefano Lattarini [Fri, 19 Apr 2013 13:12:09 +0000 (15:12 +0200)]
Merge branch 'preproc' into maint

* preproc:
  maintcheck: avoid spurious failure

11 years agomaintcheck: avoid spurious failure
Stefano Lattarini [Fri, 19 Apr 2013 12:15:17 +0000 (14:15 +0200)]
maintcheck: avoid spurious failure

* t/preproc-errmsg.sh: Here, breaking up a sed command to avoid spuriously
triggering a failure in the 'sc_tests_logs_duplicate_prefixes' maintainer
check.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoMerge branch 'no-perl-protos' into maint
Stefano Lattarini [Fri, 19 Apr 2013 09:28:16 +0000 (11:28 +0200)]
Merge branch 'no-perl-protos' into maint

* no-perl-protos:
  perl: perl subroutine prototypes are problematic, don't use them

11 years agoperl: perl subroutine prototypes are problematic, don't use them
Stefano Lattarini [Tue, 5 Mar 2013 17:30:03 +0000 (18:30 +0100)]
perl: perl subroutine prototypes are problematic, don't use them

Basically, in perl, "subroutine prototypes" are not prototypes at all;
rather, they are a trick to allow user-defined subroutines that behave
like perl built-in functions.  For example, prototyped subroutines can
be called without parentheses, and can impose context on their arguments.

Such semantics can be useful in some selected situations, but might also
easily cause unexpected and harmful behaviours and side effects if we
try to use perl prototypes as we would use C prototypes.

See the excellent article "Far More than Everything You've Ever Wanted
to Know about Prototypes in Perl" by Tom Christiansen for more detailed
information:

    <http://www.perlmonks.org/?node_id=861966>
    <http://web.archive.org/web/20080421062920/\
     library.n0i.net/programming/perl/articles/fm_prototypes>

It is important to note that modern perl allows a non-predeclared
subroutine to be called without the '&' character, as long as its
call uses proper parentheses:

    foo 'str', 2;   # will trigger errors if foo is not predeclared
    foo('str', 2);  # ok even if foo is not predeclared
    &foo('str', 2); # ditto; but the '&' is old-style and redundant

Note also that the prototype indicating "no argument":

    sub func() { ... }

can actually be useful, and has no discernible downsides, so we'll
keep using it where it makes sense.

Also, in few, selected cases, we *want* to have subroutines behave like
perl builtins (e.g., we want the 'append_exeext' function to be able
to take a code block as first argument).  In such cases, we will of
course continue to make use of perl subroutine prototypes.

Let's finally see an example that might clarify the kind of problems the
use of subroutine prototypes in perl can cause.  This is just scratching
the surface; there are several other aspects, typically subtler and more
dangerous, that are not touched here.

If you have the prototyped subroutine definition:

    sub foo ($@)
    {
        my $s = shift;
        print "SCALAR: $s\n";
        print "ARRAY: @_\n";
    }

and call 'foo' in code like:

    @list = (-1, 0, 1);
    foo(@list);

you won't get a compile-time nor a runtime error (as a naive interpretation
of the "prototype" characterization would let you think).  Rather, the
prototype will cause the array '@list' will be coerced into scalar context
before being passed too 'foo', which means that its *length* (3) will be
passed to 'foo' as first argument; and since no further arguments are
present after '@list', that *void* will be coerced to an empty list before
being passed to 'foo'.

So code above will have the result of printing:

  SCALAR: 3
  ARRAY:

Quite tricky, and definitely a behaviour we don't want to rely on.

* automake.in: Delete most subroutine prototypes.  Fix few of the
remaining ones.  Related minor simplifications and adjustments.
* lib/gen-perl-protos: Adjust.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoMerge branch 'preproc' into maint
Stefano Lattarini [Tue, 5 Mar 2013 14:58:49 +0000 (15:58 +0100)]
Merge branch 'preproc' into maint

* preproc:
  preproc: enhance and extend tests
  preproc: add support for relative names in included fragments

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agofixup: one stray reference to older versioning scheme
Stefano Lattarini [Thu, 21 Feb 2013 18:25:55 +0000 (19:25 +0100)]
fixup: one stray reference to older versioning scheme

* lib/Automake/Options.pm: Here, in a FIXME comment: reference
"Automake 3.0" rather than "Automake 1.15".

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoMerge branch 'branch-1.13.2' into maint
Stefano Lattarini [Thu, 21 Feb 2013 15:10:16 +0000 (16:10 +0100)]
Merge branch 'branch-1.13.2' into maint

* branch-1.13.2:
  aclocal: fix for more-than-once specified directories
  aclocal: just warn if the primary local m4 dir doesn't exist (don't error)

11 years agomaint: more adjustments to the new versioning scheme
Stefano Lattarini [Thu, 21 Feb 2013 14:52:22 +0000 (15:52 +0100)]
maint: more adjustments to the new versioning scheme

This is a follow-up to commit 'v1.13.1b-11-g97aaf12'.

* automake.in: Adjust a comment.
* PLANS: Adjust several files in here.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoMerge branch 'fix-pr13514' into branch-1.13.2
Stefano Lattarini [Thu, 21 Feb 2013 14:35:04 +0000 (15:35 +0100)]
Merge branch 'fix-pr13514' into branch-1.13.2

* fix-pr13514:
  aclocal: fix for more-than-once specified directories
  aclocal: just warn if the primary local m4 dir doesn't exist (don't error)

11 years agoaclocal: fix for more-than-once specified directories
Pavel Raiskup [Mon, 11 Feb 2013 12:11:52 +0000 (13:11 +0100)]
aclocal: fix for more-than-once specified directories

Related to automake bug#13514.

Do not consider directories for extra m4 files multiple times in
'aclocal'.  Doing so caused problems on older packages that specify

    configure.ac:  AC_CONFIG_MACRO_DIRS([m4])
    Makefile.am:   ACLOCAL_AMFLAGS = -I m4

if the 'm4' directory does not exist when aclocal is called the first
time by autoreconf.

See:
<http://lists.gnu.org/archive/html/bug-automake/2013-01/msg00115.html>

* aclocal.in (scan_m4_files): Remove duplicates in @user_includes.
* t/aclocal-macrodir.tap: Extend.
* t/aclocal-macrodirs.tap: Likewise.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoMerge branch 'docstrings-tweaks' into maint
Stefano Lattarini [Wed, 20 Feb 2013 21:15:21 +0000 (22:15 +0100)]
Merge branch 'docstrings-tweaks' into maint

* docstrings-tweaks:
  cosmetics: fix some "docstring-like" comments in automake

11 years agoMerge branch 'branch-1.13.2' into maint
Stefano Lattarini [Wed, 20 Feb 2013 21:14:55 +0000 (22:14 +0100)]
Merge branch 'branch-1.13.2' into maint

* branch-1.13.2:
  coverage: expose automake bug#13760
  tests: refactor/enhance tests about make dry-run mode
  maint: describe new versioning and branching scheme, and adjust to it

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoMerge branch 'new-versioning-scheme' into branch-1.13.2
Stefano Lattarini [Wed, 20 Feb 2013 21:13:34 +0000 (22:13 +0100)]
Merge branch 'new-versioning-scheme' into branch-1.13.2

* new-versioning-scheme:
  maint: describe new versioning and branching scheme, and adjust to it

11 years agoaclocal: just warn if the primary local m4 dir doesn't exist (don't error)
Pavel Raiskup [Mon, 11 Feb 2013 12:11:51 +0000 (13:11 +0100)]
aclocal: just warn if the primary local m4 dir doesn't exist (don't error)

Related to automake bug#13514.

Every package which does not need to have the local m4 macro
directory pre-existing in the version control system (because
e.g., it does not have nor need any private m4 macros) would
fail during the "autoreconf -vfi" phase if AC_CONFIG_MACRO_DIRS([m4])
is specified in configure.ac (it could be to instruct tools like
'autopoint' and 'libtoolize' to use 'm4' as the local directory
where to install definitions of their m4 macros, and to instruct
aclocal to look into it).  The failure would go like this:

  autoreconf: Entering directory `.'
  autoreconf: running: aclocal --force
  aclocal: error: couldn't open directory 'm4': No such file or directory
  autoreconf: aclocal failed with exit status: 1

The problem is that when 'aclocal' is run for the first time during
'autoreconf', the directory 'm4' does not exist yet.  It will be
created by e.g., 'libtoolize' or 'autopoint' later on.  During the
second 'aclocal' run, the 'm4' directory exists and aclocal does not
complain.

To work around this issue, we degrade the error to a simple warning.
The warning is still quite useful when aclocal is run by hand - so
we are not removing completely.

See also:
<http://lists.gnu.org/archive/html/bug-automake/2013-01/msg00115.html>
<http://lists.gnu.org/archive/html/automake-patches/2010-02/msg00030.html>
<http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=565663>
<https://bugzilla.redhat.com/show_bug.cgi?id=901333>

* aclocal.in (SCAN_M4_DIRS_SILENT, SCAN_M4_DIRS_WARN)
(SCAN_M4_DIRS_ERROR): New constants.
(scan_m4_dirs): Change the second parameter name to $ERR_LEVEL to
better reflect new semantic. Use new constants.
(scan_m4_files): Adjust to reflect the new 'scan_m4_dirs' semantics.
* t/aclocal-macrodir.tap: Adjust.
* t/aclocal-macrodirs.tap: Likewise.
* THANKS: Update.
* NEWS: Likewise.

Suggested-by: Ben Pfaff <blp@cs.stanford.edu>
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agocoverage: expose automake bug#13760
Stefano Lattarini [Wed, 20 Feb 2013 12:25:39 +0000 (13:25 +0100)]
coverage: expose automake bug#13760

* t/make-dryrun.tap: Here.
* THANKS: Update with the name of the bug reporter.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: refactor/enhance tests about make dry-run mode
Stefano Lattarini [Wed, 20 Feb 2013 11:44:50 +0000 (12:44 +0100)]
tests: refactor/enhance tests about make dry-run mode

* t/make-dryrun.tap: Here.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agomaint: describe new versioning and branching scheme, and adjust to it
Stefano Lattarini [Sun, 17 Feb 2013 09:25:29 +0000 (10:25 +0100)]
maint: describe new versioning and branching scheme, and adjust to it

See discussion about automake bug#13578 for more details and background.

Basically, for the versioning scheme:

  - micro versions only for bug and regression fixing;
  - minor versions for new backward-compatible features, and new
    non-fatal deprecations;
  - major versions for backward-incompatibilities, complex new
    features, and major refactoring.

And for the git branching scheme:

  + branch 'next' is for the upcoming major version;
  + branch 'master' is now for the upcoming minor version;
  + branch 'maint' is for the upcoming micro (bug-fixing) version;
  + the merging hierarchy is: 'maint' -> 'master' -> 'next'.

* HACKING (Automake versioning and compatibility scheme): New.
(Working with git): Adjust.
* NEWS: Update and fix.
* aclocal.in: Adjust some "FIXME" messages.
* automake.in: Likewise.
* m4/mkdirp.m4: Likewise.
* t/aclocal-acdir.sh: Likewise.
* t/aclocal-macrodir.tap: Likewise.
* t/aclocal-macrodirs.tap: Likewise.
* lib/Automake/Options.pm: Likewise.
* m4/internal/ac-config-macro-dirs.m4: Likewise.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agocosmetics: fix some "docstring-like" comments in automake
Stefano Lattarini [Sat, 16 Feb 2013 23:04:28 +0000 (00:04 +0100)]
cosmetics: fix some "docstring-like" comments in automake

* automake.in: Here.  And remove some redundant ones.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoMerge branch 'perl-sub-protos' into maint
Stefano Lattarini [Sat, 16 Feb 2013 17:54:19 +0000 (18:54 +0100)]
Merge branch 'perl-sub-protos' into maint

* perl-sub-protos:
  style: call perl functions 'like_this()', not '&like_this()'
  maint: use more perl subroutines prototypes in the automake script
  build: auto-generate perl subroutines prototypes for automake and aclocal
  refactor: rip module Automake::Language out of automake script

11 years agoMerge branch 'branch-1.13.2' into maint
Stefano Lattarini [Fri, 15 Feb 2013 14:06:19 +0000 (15:06 +0100)]
Merge branch 'branch-1.13.2' into maint

* branch-1.13.2:
  typofix: in comments in 't/ax/test-lib.sh'
  tests on TAP: don't run the driver with perl unconditionally
  typofix: in comments in 'automake.in'
  tests: remove obsolete (and now wrong) comment
  typofix: in diagnostic in test 't/tap-realtime.sh'
  automake: fix reference to relevant tests in comments
  NEWS: we no longer plan to drop $(INCLUDES) support in next major version

11 years agotypofix: in comments in 't/ax/test-lib.sh'
Stefano Lattarini [Tue, 29 Jan 2013 12:24:50 +0000 (13:24 +0100)]
typofix: in comments in 't/ax/test-lib.sh'

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agostyle: call perl functions 'like_this()', not '&like_this()'
Stefano Lattarini [Wed, 13 Feb 2013 18:39:38 +0000 (19:39 +0100)]
style: call perl functions 'like_this()', not '&like_this()'

We can do so now that our build rules auto-generate a list of
prototypes for all functions ins our scripts.

* automake.in: Adjust throughout.
* HACKING: Adjust advises.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agopreproc: enhance and extend tests
Stefano Lattarini [Fri, 8 Feb 2013 08:17:10 +0000 (09:17 +0100)]
preproc: enhance and extend tests

* t/preproc-demo.sh: New test, a "demo" of how the new pre-processing
feature could be used in a real-world package.
* t/preproc-errmsg.sh: New test, check that error messages remain
useful when the new pre-processing features are involved.
* t/preproc-reldir.sh: Split up ...
* t/preproc-basics.sh, t/preproc-c-compile.sh: ... into these two
tests, with some refactorings, clean-up and enhancements.
* t/list-of-tests.mk: Adjust.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agopreproc: add support for relative names in included fragments
Peter Rosin [Fri, 8 Feb 2013 08:11:45 +0000 (09:11 +0100)]
preproc: add support for relative names in included fragments

The rationale for this change is that it is annoying to have
to repeat the directory name when including a Makefile fragment.
For deep directory structures these repeats can generate a lot
of bloat.  It also hinders reuse and easy directory restructuring
if all Makefile fragments have to know exactly where they live.

Suggested by Bob Friesenhahn, and later discussed in bug#13524.

In the course of discussion, the following notations were rejected:
&{reldir}& - to hard to type, {reldir} - interferes with ${reldir},
{am_reldir} - short form {D} interferes with ${D}, @am_reldir@ - short
form @D@ interferes with AC_SUBST([D]) as well as invading the
config.status turf. Other notations were also suggested...

* automake.in (read_am_file): Add third argument specifying the
relative directory of this Makefile fragment compared to the
main Makefile.  Replace %reldir% and %canon_reldir% in the
fragment with this relative directory (with slashes etc, or
canonicalized).
(read_main_am_file): Adjust.
* t/preproc-reldir.sh: New test.
* t/list-of-tests.mk: Augment.
* doc/automake.texi (Include): Document the new feature.
NEWS: Add new feature.

Co-authored-by: Stefano Lattarini <stefano.lattarini@gmail.com>
Signed-off-by: Peter Rosin <peda@lysator.liu.se>
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests on TAP: don't run the driver with perl unconditionally
Stefano Lattarini [Thu, 14 Feb 2013 11:32:27 +0000 (12:32 +0100)]
tests on TAP: don't run the driver with perl unconditionally

* t/ax/tap-setup.sh: When a 'Makefile.am' was pre-existent in the
test directory at the moment the client test script sourced this
file, said 'Makefile.am' was tweaked to provide it with a proper
definition of TEST_LOG_DRIVER.  However, there was an error in this
automatic definition, since it caused the TAP test driver to be
unconditionally invoked with perl.  This wasn't an issue in most
situations, since perl is smart enough to re-execute a given script
with the proper interpreter if it sees a she-bang line that doesn't
seem to point to perl itself.  Still, there is no reason to do
something blatantly wrong even if our tools correct the dumb mistake
for us.  So fix the TEST_LOG_DRIVER definition.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotypofix: in comments in 'automake.in'
Stefano Lattarini [Thu, 14 Feb 2013 11:09:43 +0000 (12:09 +0100)]
typofix: in comments in 'automake.in'

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: remove obsolete (and now wrong) comment
Stefano Lattarini [Thu, 14 Feb 2013 10:46:58 +0000 (11:46 +0100)]
tests: remove obsolete (and now wrong) comment

* t/ax/am-test-lib.sh: Here.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotypofix: in diagnostic in test 't/tap-realtime.sh'
Stefano Lattarini [Thu, 14 Feb 2013 10:46:49 +0000 (11:46 +0100)]
typofix: in diagnostic in test 't/tap-realtime.sh'

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agomaint: use more perl subroutines prototypes in the automake script
Stefano Lattarini [Mon, 4 Feb 2013 22:37:23 +0000 (23:37 +0100)]
maint: use more perl subroutines prototypes in the automake script

* automake.in: Throughout this file.  Note that these new prototypes
are not much useful, since many subroutine calls still use the old
'&foo' form; but we'll take care of that in later patches.
* lib/Automake/Language.pm (target_hook): Call the '_target_hook'
of the given language in a more modern form, avoiding '&'.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agobuild: auto-generate perl subroutines prototypes for automake and aclocal
Stefano Lattarini [Mon, 4 Feb 2013 22:04:18 +0000 (23:04 +0100)]
build: auto-generate perl subroutines prototypes for automake and aclocal

This will allow us to avoid either using the '&foo' invocation form when
invoking a subroutine before its definition, or having to maintain the
list of prototypes by hand (with the risk of having it become incomplete
or fall out-of-sync when future edits to the automake and aclocal scripts
are done).

* Makefile.am (automake, aclocal): Automatically generate a list of
prototypes by looking at the subroutines definitions.
* bootstrap.sh: Likewise, when generating the temporary automake and
aclocal scripts used for bootstrapping.
* automake.in: Add a placeholder that will be tracked by the new recipes
and substituted with the computed prototypes.  Remove existing prototypes,
that are now superfluous. Some adjustments required by the new, more
comprehensive prototypes declarations.
* aclocal.in: Likewise.
* maintainer/syntax-checks.mk (sc_diff_automake, sc_diff_aclocal): Adjust.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agorefactor: rip module Automake::Language out of automake script
Stefano Lattarini [Mon, 4 Feb 2013 18:34:03 +0000 (19:34 +0100)]
refactor: rip module Automake::Language out of automake script

This is just a preparatory patch in view of future changes.

* lib/Automake/Language.pm: New module, ripped out from ...
* automake.in: ... here.  Related adjustments.
* Makefile.am (dist_perllib_DATA): List the new module.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoautomake: fix reference to relevant tests in comments
Stefano Lattarini [Sun, 3 Feb 2013 19:44:32 +0000 (20:44 +0100)]
automake: fix reference to relevant tests in comments

Some of those tests had been renamed in recent or less-recent changes.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoNEWS: we no longer plan to drop $(INCLUDES) support in next major version
Stefano Lattarini [Sun, 3 Feb 2013 19:16:01 +0000 (20:16 +0100)]
NEWS: we no longer plan to drop $(INCLUDES) support in next major version

For a rationale and related discussion, see:
<http://lists.gnu.org/archive/html/automake/2013-02/msg00001.html>

And note that support for INCLUDES has not been re-introduced in the
master branch yet, at the moment of writing; but we plan to definitely
do so before the next major release.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoMerge branch 'branch-1.13.2' into maint
Stefano Lattarini [Mon, 28 Jan 2013 12:33:00 +0000 (13:33 +0100)]
Merge branch 'branch-1.13.2' into maint

* branch-1.13.2:
  NEWS: IRIX is still supported; only SGI C compiler depcomp no longer is
  maint: version bump after beta release 1.13.1b
  NEWS: typofix
  release: beta release 1.13.1b (will become 1.13.2)

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoNEWS: IRIX is still supported; only SGI C compiler depcomp no longer is
Stefano Lattarini [Mon, 28 Jan 2013 12:22:12 +0000 (13:22 +0100)]
NEWS: IRIX is still supported; only SGI C compiler depcomp no longer is

This change is for the maint branch.

The only IRIX-specific support that is going to actually be removed in
the next major Automake versions is the depcomp support for the SGI
compiler.  That means that automatic dependency tracking will no
longer work with that compiler, but "normal" compilation should still
work, at least until the compiler is supported by Autoconf.

So there is no point in alarming our users by stating in the NEWS file
that "support for IRIX and the SGI compilers is going to be removed";
after all, while we don't test on nor particularly care about IRIX
anymore, that doesn't mean we are deliberately breaking it, and the
likelihood of an intended breakage there is very low.

See:
<http://lists.gnu.org/archive/html/automake-patches/2013-01/msg00164.html>
<http://lists.gnu.org/archive/html/automake-patches/2013-01/msg00165.html>

* NEWS (Future backward-incompatibilities: Adjust.  Improve explanation
of our rationale for dropping SGI support. Fix an unrelated typo while
at it.

Suggested-by: Peter Rosin <peda@lysator.liu.se>
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agomaint: version bump after beta release 1.13.1b
Stefano Lattarini [Wed, 23 Jan 2013 10:38:33 +0000 (11:38 +0100)]
maint: version bump after beta release 1.13.1b

* configure.ac (AC_INIT): Bump version number to 1.13.1c.
* m4/amversion.m4: Likewise (autoupdated by "make bootstrap").

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoNEWS: typofix
Stefano Lattarini [Wed, 23 Jan 2013 10:33:09 +0000 (11:33 +0100)]
NEWS: typofix

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agorelease: beta release 1.13.1b (will become 1.13.2) v1.13.1b
Stefano Lattarini [Wed, 23 Jan 2013 10:05:01 +0000 (11:05 +0100)]
release: beta release 1.13.1b (will become 1.13.2)

* configure.ac (AC_INIT): Bump version number to 1.13.1b.
* m4/amversion.m4: Likewise (auto-updated by "make bootstrap").

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoMerge branch 'branch-1.13.2' into maint
Stefano Lattarini [Tue, 22 Jan 2013 12:37:41 +0000 (13:37 +0100)]
Merge branch 'branch-1.13.2' into maint

* branch-1.13.2:
  docs: '.txi' and '.texinfo' extensions are deprecated
  NEWS: document recent documentation improvements
  docs: more precise cross reference
  docs: 'dist-shar' and 'dist-tarZ' are obsolescent today
  docs: improve documentation of 'dist-*' targets slightly
  docs: make even clearer 'dist-gzip' is the default.
  docs: document 'dist-xz' together with the other 'dist-*' options
  docs: 'no-define' option and AM_INIT_AUTOMAKE three-args usage: fixlets
  warn: correct broken hyperlink in warning message

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agodocs: '.txi' and '.texinfo' extensions are deprecated
Stefano Lattarini [Tue, 22 Jan 2013 12:28:38 +0000 (13:28 +0100)]
docs: '.txi' and '.texinfo' extensions are deprecated

And Automake will warn about them (since commit 'v1.13.1-6-ge1ed314').

* doc/automake.texi (Texinfo): Adjust.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoNEWS: document recent documentation improvements
Stefano Lattarini [Tue, 22 Jan 2013 12:14:41 +0000 (13:14 +0100)]
NEWS: document recent documentation improvements

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agodocs: more precise cross reference
Stefano Lattarini [Tue, 22 Jan 2013 12:02:25 +0000 (13:02 +0100)]
docs: more precise cross reference

See automake bug#13520.

* doc/automake.texi (The Types of Distributions): Here,
cross-reference "List of Automake options" rather then
the more generic node "Options".  Improve wording while
at it.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agodocs: 'dist-shar' and 'dist-tarZ' are obsolescent today
Stefano Lattarini [Tue, 22 Jan 2013 11:30:15 +0000 (12:30 +0100)]
docs: 'dist-shar' and 'dist-tarZ' are obsolescent today

Both the options and the formats; and they might be deprecated
and removed in future automake versions (see discussion on
automake bug#13324).

In any case, it's better if the documentation starts advising
against their use right now.

* doc/automake.texi (The Types of Distributions): Here.
(List of Automake options): And here.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agodocs: improve documentation of 'dist-*' targets slightly
Stefano Lattarini [Tue, 22 Jan 2013 11:14:20 +0000 (12:14 +0100)]
docs: improve documentation of 'dist-*' targets slightly

* doc/automake.texi (The Types of Distributions): Here.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agodocs: make even clearer 'dist-gzip' is the default.
Stefano Lattarini [Tue, 22 Jan 2013 11:08:43 +0000 (12:08 +0100)]
docs: make even clearer 'dist-gzip' is the default.

See automake bug#13520.

* doc/automake.texi (The Types of Distributions): Here.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agodocs: document 'dist-xz' together with the other 'dist-*' options
Stefano Lattarini [Tue, 22 Jan 2013 11:03:35 +0000 (12:03 +0100)]
docs: document 'dist-xz' together with the other 'dist-*' options

See automake bug#13520.

* doc/automake.texi (List of Automake options): Here.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agodocs: 'no-define' option and AM_INIT_AUTOMAKE three-args usage: fixlets
Stefano Lattarini [Tue, 22 Jan 2013 09:56:57 +0000 (10:56 +0100)]
docs: 'no-define' option and AM_INIT_AUTOMAKE three-args usage: fixlets

See automake bug#13519.

* doc/automake.texi: Adjust.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agowarn: correct broken hyperlink in warning message
Stefano Lattarini [Tue, 22 Jan 2013 09:49:17 +0000 (10:49 +0100)]
warn: correct broken hyperlink in warning message

* automake.in (scan_autoconf_traces): Here, when an use of the
deprecated two- and three-arguments forms of AM_INIT_AUTOMAKE
is detected.

Fixes automake bug#13519.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: more information about Lex and Yacc programs
Stefano Lattarini [Mon, 21 Jan 2013 14:45:17 +0000 (15:45 +0100)]
tests: more information about Lex and Yacc programs

* t/get-sysconf.sh: Try to also get the version of '$LEX' and '$YACC'.
This will help debugging of user-reported problems.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agolint: fix spurious failure for 'sc_rm_minus_f' syntax check
Stefano Lattarini [Mon, 21 Jan 2013 14:35:48 +0000 (15:35 +0100)]
lint: fix spurious failure for 'sc_rm_minus_f' syntax check

* maintainer/syntax-checks.mk (sc_rm_minus_f): Also exempt
file 't/rm-f-probe.sh'.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agomaint: bump version 1.13.1a -> 1.13.2a
Stefano Lattarini [Mon, 21 Jan 2013 14:24:03 +0000 (15:24 +0100)]
maint: bump version 1.13.1a -> 1.13.2a

The 1.13.2 bug-fixing release will ship from the 'branch-1.13.2' git
branch, not from the 'maint' one, since the latter contains changes
that are non-trivial and hasn't cooked enough yet.  The 'maint' branch
will give rise to the 1.13.3 release instead, eventually.  Adjust the
version number to match.

* configure.ac (AC_INIT): Bump version number to 1.13.2b.
* m4/amversion.m4: Likewise (auto-updated by "make bootstrap").

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoMerge branch 'branch-1.13.2' into maint
Stefano Lattarini [Mon, 21 Jan 2013 13:52:37 +0000 (14:52 +0100)]
Merge branch 'branch-1.13.2' into maint

That branch is for the "emergency" bug-fixing release 1.13.2.

* branch-1.13.2:
  maint: update copyright in files generated by automake and aclocal
  tests: avoid a spurious failure when running inside Emacs
  tests: make two new test executable
  m4: rename an m4 file to a more appropriate name
  NEWS: update w.r.t. recent documentation fixes
  compat: reinstate AM_CONFIG_HEADER and AM_PROG_CC_STDC
  docs: parallel-tests is no longer experimental
  docs: serial-tests are not deprecated, just discouraged
  NEWS: we are not going to remove AM_PROG_MKDIR_P in Automake 1.14

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agomaint: update copyright in files generated by automake and aclocal
Stefano Lattarini [Mon, 21 Jan 2013 13:47:00 +0000 (14:47 +0100)]
maint: update copyright in files generated by automake and aclocal

* bootstrap.sh ($RELEASE_YEAR): Bump top 2013.
* configure.ac ($RELEASE_YEAR): Likewise.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: avoid a spurious failure when running inside Emacs
Thien-Thi Nguyen [Mon, 21 Jan 2013 12:35:03 +0000 (13:35 +0100)]
tests: avoid a spurious failure when running inside Emacs

Some versions of Emacs set the environment variable 'EMACS' to 't'
for child processes.  Thus, when running from inside Emacs, "$(MAKE) -e"
erroneously allows the 't' to override the one in the Makefile.

* t/lisp-flags.sh: Unset var 'EMACS', fixing the issue.

Copyright-paperwork-exempt: yes
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: make two new test executable
Stefano Lattarini [Thu, 3 Jan 2013 12:42:20 +0000 (13:42 +0100)]
tests: make two new test executable

* t/backslash-issues.sh: This.
* t/extra-data.sh: And this.

Issue revealed by the 'sc_tests_executable' maintainer check.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agom4: rename an m4 file to a more appropriate name
Stefano Lattarini [Fri, 18 Jan 2013 12:39:38 +0000 (13:39 +0100)]
m4: rename an m4 file to a more appropriate name

* m4/obsolete-err.m4: Rename ...
* m4/obsolete.m4: ... like this.
* Makefile.am (dist_automake_ac_DATA): Adjust.
* t/ansi2knr-no-more.sh: Likewise.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoNEWS: update w.r.t. recent documentation fixes
Stefano Lattarini [Fri, 18 Jan 2013 12:32:12 +0000 (13:32 +0100)]
NEWS: update w.r.t. recent documentation fixes

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agocompat: reinstate AM_CONFIG_HEADER and AM_PROG_CC_STDC
Stefano Lattarini [Fri, 18 Jan 2013 12:13:30 +0000 (13:13 +0100)]
compat: reinstate AM_CONFIG_HEADER and AM_PROG_CC_STDC

Make them give runtime warnings in the obsolete category, but apart
from that, make them behave as they did in Automake 1.12.x and earlier.

While removing those macros seemed quite harmless, because it didn't put
a real burden on the developers (requiring them just to do a quick edit
to configure.ac), it turned out to place an unsustainable burden (or at
least, a burden perceived as such) on distro packagers who use the latest
Automake to bootstrap existing packages.  Many of those packages, while
having likely updated to AC_CONFIG_HEADERS in their development version,
still used AM_CONFIG_HEADER in their existing released versions, and the
removal of this macro would have thus forced the Fedora packagers to
patch all of them.  References:

  <http://www.mail-archive.com/devel@lists.fedoraproject.org/msg52840.html>
  <http://www.spinics.net/lists/fedora-devel/msg175922.html>
  <http://blog.flameeyes.eu/2013/01/autotools-mythbuster-automake-pains>

In addition, the Fedora packagers have already decided to patch their
Automake 1.13.1 to reinstate the AM_CONFIG_HEADER and AM_PROG_CC_STDC
macros (plus other macros that I don't believe it's worth worrying about):

  <http://www.spinics.net/lists/fedora-devel/msg176098.html>
  <http://www.mail-archive.com/devel@lists.fedoraproject.org/msg53030.html>
  <http://pkgs.fedoraproject.org/cgit/automake.git/commit/?id=ffe6bc39>

So, rather than having one more incompatibility floating around, we
better mirror that change (or, actually, its relevant parts) in the
upstream.

* m4/obsolete-err.m4 (AM_CONFIG_HEADER, AM_PROG_CC_STDC): Revert to the
older semantics, plus a runtime warning in the 'obsolete' category.
* t/backcompat6.sh: Use AM_CONFIG_HEADER once again.
* t/am-config-header-no-more.sh: Rename ...
* t/am-config-header.sh: ... like this, and adjust.
* t/am-prog-cc-stdc-no-more.sh: Rename ...
* t/am-prog-cc-stdc.sh: ... like this, and adjust.
* t/list-of-tests.mk: Adjust.
* NEWS: Update.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoMerge branch 'rm-f-probe' into maint
Stefano Lattarini [Fri, 18 Jan 2013 15:28:54 +0000 (16:28 +0100)]
Merge branch 'rm-f-probe' into maint

* rm-f-probe:
  init.m4: add probe to check "rm -f" without args work

11 years agodocs: parallel-tests is no longer experimental
Stefano Lattarini [Fri, 18 Jan 2013 11:02:23 +0000 (12:02 +0100)]
docs: parallel-tests is no longer experimental

So don't declare it as such in the documentation.

Reported by Brandon Black:
<http://lists.gnu.org/archive/html/automake/2013-01/msg00052.html>

* doc/automake.texi: Adjust.
* THANKS: Update.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agodocs: serial-tests are not deprecated, just discouraged
Stefano Lattarini [Fri, 18 Jan 2013 10:39:28 +0000 (11:39 +0100)]
docs: serial-tests are not deprecated, just discouraged

We don't plan to remove support for them, nor to have the serial-tests
option give any kind of runtime warning, so don't alarm the users
still using serial tests with pointless "deprecation" or "obsolescence"
warnings.

Fixes automake bug#13478.

See also:
<http://lists.gnu.org/archive/html/automake/2013-01/msg00058.html>

* doc/automake.texi: Adjust.
* THANKS: Update.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoplans: we are not going to remove AM_PROG_MKDIR_P in Automake 1.14
Stefano Lattarini [Fri, 18 Jan 2013 10:22:01 +0000 (11:22 +0100)]
plans: we are not going to remove AM_PROG_MKDIR_P in Automake 1.14

See commit v1.13.1-109-g030ecb4 of 2013-01-16, "compat: restore
AM_PROG_MKDIR, again", for the rationale; that rationale is now
also copied...

* PLANS/obsolete-removed/am-prog-mkdir-p.txt: ... here.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoNEWS: we are not going to remove AM_PROG_MKDIR_P in Automake 1.14
Stefano Lattarini [Fri, 18 Jan 2013 10:04:25 +0000 (11:04 +0100)]
NEWS: we are not going to remove AM_PROG_MKDIR_P in Automake 1.14

See commit v1.13.1-109-g030ecb4 of 2013-01-16, "compat: restore
AM_PROG_MKDIR, again", for the rationale.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoinit.m4: add probe to check "rm -f" without args work
Stefano Lattarini [Sat, 12 Jan 2013 18:20:54 +0000 (19:20 +0100)]
init.m4: add probe to check "rm -f" without args work

See automake bug#10828.

POSIX will say in a future version that running "rm -f" with no argument
is OK: <http://austingroupbugs.net/view.php?id=542>).

We want to be able to make that assumption in our Makefile recipes.
So we introduce an aggressive probe to check that the usage we want is
actually supported "in the wild" to an acceptable degree.

* m4/init.m4 (AM_INIT_AUTOMAKE): Implement the probe.  To make any issue
more visible, cause the running configure to be aborted by default if
the 'rm' program in use doesn't match our expectations; the user can
still override this though, by setting the ACCEPT_INFERIOR_RM_PROGRAM
environment variable to "yes".

* t/spy-rm.tap: Update heading comments.
* t/rm-f-probe.sh: New test.
* t/list-of-tests.mk: Add it.
* PLANS/rm-f-without-args.txt: Adjust.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agosubdir-objects: complain if it isn't enabled
Stefano Lattarini [Sun, 13 Jan 2013 16:50:30 +0000 (17:50 +0100)]
subdir-objects: complain if it isn't enabled

Since the next major automake version will make the behaviour so far
only activated with the 'subdir-object' option mandatory, it's better
if we start warning users not using that option.

As suggested by Peter Johansson, we strive to avoid the warning when
it would be irrelevant, i.e., if all source files sit in "current"
directory.

See automake bug#13378.

* automake.in (handle_single_transform): Print the warning when
necessary.
* t/subobj.sh: Enhance.
* t/ax/depcomp.sh: Adjust.
* t/cscope.tap: Likewise.
* t/depcomp8a.sh: Likewise.
* t/depcomp8b.sh: Likewise.
* t/ext2.sh: Likewise.
* t/extra-portability.sh: Likewise.
* t/fort2.sh: Likewise.
* t/fort4.sh: Likewise.
* t/fort5.sh: Likewise.
* t/lex-line.sh: Likewise.
* t/libtool3.sh: Likewise.
* t/ltinstloc.sh: Likewise.
* t/ltlibsrc.sh: Likewise.
* t/ltorder.sh: Likewise.
* t/parallel-tests-suffix-prog.sh: Likewise.
* t/sourcefile-in-subdir.sh: Likewise.
* t/specflg9.sh: Likewise.
* t/subobj4.sh: Likewise.
* t/subobj7.sh: Likewise.
* t/subpkg-yacc.sh: Likewise.
* t/subpkg.sh: Likewise.
* t/suffix-custom-subobj-and-specflg.sh: Likewise.
* t/vala-libs.sh: Likewise.
* t/vala-non-recursive-setup.sh: Likewise.
* t/yacc-grepping2.sh: Likewise.
* t/yacc-line.sh: Likewise.

11 years agoplans: update w.r.t. latest changes
Stefano Lattarini [Sat, 12 Jan 2013 17:42:43 +0000 (18:42 +0100)]
plans: update w.r.t. latest changes

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoywrap: remove an obsolete FIXME comment
Stefano Lattarini [Sat, 12 Jan 2013 16:53:17 +0000 (17:53 +0100)]
ywrap: remove an obsolete FIXME comment

If it were still relevant, somebody would have complained by now.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoywrap: style fixes (no semantic change intended)
Stefano Lattarini [Sat, 12 Jan 2013 16:52:44 +0000 (17:52 +0100)]
ywrap: style fixes (no semantic change intended)

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoconvenience: "make lint" as an alias for "make maintainer-check"
Stefano Lattarini [Sat, 12 Jan 2013 16:41:58 +0000 (17:41 +0100)]
convenience: "make lint" as an alias for "make maintainer-check"

* maintainer/syntax-checks.mk (lint): Here.  I'm a lazy typist ...

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agodocs: typofix in manual
Stefano Lattarini [Sat, 12 Jan 2013 16:38:32 +0000 (17:38 +0100)]
docs: typofix in manual

* doc/automake.texi (Yacc and Lex): Here, don't write "automake -i"
where "automake -a" is actually intended.  Re-wrap some text while
at it.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agocoverage: using multiple lexers in a single program
Stefano Lattarini [Sat, 12 Jan 2013 16:30:32 +0000 (17:30 +0100)]
coverage: using multiple lexers in a single program

Using Flex and Automake built-in support for lex, that is possible.
A little tricky, but not difficult.

See:
<http://lists.gnu.org/archive/html/automake/2010-10/msg00081.html>
<http://lists.gnu.org/archive/html/automake/2009-03/msg00061.html>

* t/lex-multiple.sh: New test.
* t/list-of-tests.mk: Add it.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: remove most uses of the AM_PROG_CC_C_O obsolete macro
Stefano Lattarini [Sat, 12 Jan 2013 11:53:21 +0000 (12:53 +0100)]
tests: remove most uses of the AM_PROG_CC_C_O obsolete macro

Our NEWS file says its use will no longer be required in Automake
1.13, so better make sure that is actually the case.

* Several tests: Adjust.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agocoverage: obsolete macro AM_PROG_CC_C_O should cause no warning nor errors
Stefano Lattarini [Sat, 12 Jan 2013 11:30:15 +0000 (12:30 +0100)]
coverage: obsolete macro AM_PROG_CC_C_O should cause no warning nor errors

Suggested by Eric Blake.

* t/am-prog-cc-c-o.sh: New test.
* t/list-of-tests.mk: Add it.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoINSTALL: update copyright years
Stefano Lattarini [Sat, 12 Jan 2013 11:10:39 +0000 (12:10 +0100)]
INSTALL: update copyright years

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoithreads: use runtime (not configure time) detection of perl threads
Mike Frysinger [Sat, 12 Jan 2013 05:19:40 +0000 (00:19 -0500)]
ithreads: use runtime (not configure time) detection of perl threads

I can't imagine the runtime checks being a big runtime penalty, so there
shouldn't be a need to do the checks at configure check and hardcode the
result in the generated automake.

With the current system, it means if you change your perl config (build
perl w/threads, build automake, build perl w/out threads), or deploy a
compiled automake package on a different system (build had threads, but
deployed system does not), you get errors when trying to run automake.

So take the logic from configure.ac and move it to the one place where
PERL_THREADS is used (lib/Automake/Config.in) and do the version/config
checking at runtime.

* bootstrap.sh (PERL_THREADS): Delete assignment and use in sed.
* configure.ac (am_cv_prog_PERL_ithreads, PERL_THREADS): Delete all code
related to these two variables.
* lib/Automake/Config.in (perl_threads): Initialize to 0, and only set to
1 if the perl version is at least 5.007_002, and useithreads is in Config.

Copyright-paperwork-exempt: yes
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agocopyright: add few missing copyright notices
Stefano Lattarini [Sat, 12 Jan 2013 10:26:36 +0000 (11:26 +0100)]
copyright: add few missing copyright notices

Issue revealed by warnings from "make update-copyright".

* maintainer/am-ft: Add copyright notice.
* maintainer/am-xft: Likewise.
* maintainer/rename-tests: Likewise.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agomaint: files in PLANS are to be exempted from copyright notice
Stefano Lattarini [Sat, 12 Jan 2013 10:22:10 +0000 (11:22 +0100)]
maint: files in PLANS are to be exempted from copyright notice

* maintainer/maint.mk (update-copyright): Adjust.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agomaint: consistently honor the UPDATE_COPYRIGHT_YEAR environment variable
Stefano Lattarini [Sat, 12 Jan 2013 10:16:44 +0000 (11:16 +0100)]
maint: consistently honor the UPDATE_COPYRIGHT_YEAR environment variable

* maintainer/maint.mk (update-copyright): Here.  The 'lib/update-copyright'
already honoured it, but some parts of our recipe didn't.  This has caused
the incomplete copyright bump that was fixed by the previous patch.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agocopyright: update some copyright years
Stefano Lattarini [Sat, 12 Jan 2013 10:09:14 +0000 (11:09 +0100)]
copyright: update some copyright years

With "make update-copyright".  Apparently they were missed in the
last bump.

* bootstrap.sh, configure.ac, t/txinfo-builddir.sh: In these files.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agocompile: use 'compile' script when "-c -o" is used with losing compilers
Stefano Lattarini [Wed, 9 Jan 2013 22:16:53 +0000 (23:16 +0100)]
compile: use 'compile' script when "-c -o" is used with losing compilers

Do so seen when only source files in the "current" directory are present.

This commit is part of a series of related changes addressing automake
bug#13378 (see also the plan 'PLANS/subdir-objects.txt').

Before this change, Automake-generated C compilation rules mistakenly
passed the "-c -o" options combination unconditionally (even to losing
compiler) when the 'subdir-objects' was used but sources were only
present in the top-level directory.  Issue spotted by Nick Bowler:

  <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13378#35>
  <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13378#44>

We fix this by having Automake redefine AC_PROG_CC to take over the role
of AM_PROG_CC_C_O and to require the 'compile' script unconditionally
(albeit that will continue to be invoked only when inferior compilers
are detected).

Among other things, this means AM_PROG_CC_C_O explicitly is no longer
required; that macro is still supported for backward-compatibility, but
calling it is basically a no-op now.

This change has some pros and some cons (obviously, we believe the former
outweighs the latter).  Here are the most relevant ones:

+ Pros 1:
  Some logic in the Automake script has been simplified.
+ Pros 2:
  That simplification has automatically fixed an actual bug (see
  Nick's mails referenced above; admittedly, that was present only in
  corner-case situations, but still); the test 't/ccnoco4.sh', which
  demonstrated the bug and has been failing so far, now passes.
+ Pros 3:
  Things works more "automagically" now (no need to manually add the
  AM_PROG_CC_C_O macro to configure.ac anymore).

* Cons 1:
  The 'compile' script will be required in all projects using C
  compilation; this will only be a problem for packages not using
  '--add-missing'.  However, such packages are definitely more rare
  than the ones using '--add-missing', and adjusting them will be
  trivial -- just copy the compile script over from the new Automake
  installation.
* Cons 2:
  The copy & paste of autoconf internals hack this change has introduced
  in our "rewrite" of AC_PROG_CC is really an egregious abomination.  It
  can only be justified with the fact that we expect future versions of
  autoconf to implement the semantics we need directly in AC_PROG_CC, so
  that we'll be able to leverage that (since Automake 1.14 will require
  the latest Autoconf version released).

Now, the detailed list of file-by-file changes ...

* automake.in ($seen_cc_c_o): Remove this global variable.
(scan_autoconf_traces): Don't set it, and do not trace the
'AM_PROG_CC_C_O' m4 macro.
(lang_c_rewrite): Remove, no longer needed.
* doc/automake.texi: Adjust expected "autoreconf --install" output
in the amhello example.  Remove statements about the need for the
AM_PROG_CC_C_O macro.  Report it is obsolete now.
* m4/init.m4: Re-write AC_PROG_CC to append checks about whether the
C compiler supports "-c -o" together.  These checks have basically
been ripped out (with adaptations) from the 'AC_PROG_CC_C_O' macro
of Autoconf and ...
* m4/minuso.m4 (AM_PROG_CC_C_O): ... this macro of ours, which has
thus basically become a no-op.
* t/ax/am-test-lib.sh (am_setup_testdir): Also copy the 'compile'
script in the test directory; if we don't do so, every test using
AC_PROG_CC should call automake with the "--add-missing" option, or
copy the 'compile' script itself.
* t/cond11.sh: No need to create a dummy 'compile' script: that is
already brought in by 'am_setup_testdir()', that is automatically
invoked when 'test-lib.sh' is sourced.
* t/add-missing.tap: Adjust: we expect the 'compile' script to be
required by a mere AC_PROG_CC call now.
* t/dist-auxdir-many-subdirs.sh: Likewise.
* t/specflg6.sh: Likewise.
* t/subobj4.sh: Likewise.
* t/cxx-lt-demo.sh: Likewise, and update comments to match.
* t/distcom2.sh: Enhance a little.
* t/dollarvar2.sh: Adjust.
* t/extra-portability.sh: Likewise.
* t/libobj19.sh: Likewise.
* t/per-target-flags.sh: Likewise.
* t/repeated-options.sh: Likewise.
* t/subobj.sh: Likewise, and enhance a little.
* t/ccnoco2.sh: Remove as obsolete.
* t/list-of-tests.mk (handwritten_TESTS): Adjust.
(XFAIL_TESTS): Remove 't/ccnoco4.sh'.
* NEWS: Update.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoHACKING: suggest more checks before releasing
Stefano Lattarini [Fri, 11 Jan 2013 17:57:28 +0000 (18:57 +0100)]
HACKING: suggest more checks before releasing

In particular, "make check-no-trailing-backslash-in-recipes",
"make check-cc-no-c-o" and "make maintainer-check" should also
be run.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: can fake a compiler not grasping "-c -o" -- globally in all tests
Stefano Lattarini [Fri, 11 Jan 2013 17:26:03 +0000 (18:26 +0100)]
tests: can fake a compiler not grasping "-c -o" -- globally in all tests

The ability to easily do so will be quite important in upcoming changes
about C compilation handling and semantics of the 'subdir-objects'
option.  Refer to the extensive discussion about automake bug#13378 for
more details: <http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13378>.

See also commit 'v1.13.1-34-g744cd57' of 2013-01-08, "coverage: compile
rules used "-c -o" also with losing compilers".

* t/ax/cc-no-c-o.in: New, a "C compiler" that chokes when the '-c' and
'-o' options are passed together to it on the command line.
* Makefile.am (t/ax/cc-no-c-o): Generate this script from it.
(noinst_SCRIPTS, CLEANFILES): Add it.
(EXTRA_DIST): Add 't/ax/cc-no-c-o.in'.
(check-cc-no-c-o): New target, runs the whole testsuite with 'cc-no-c-o'
as the C compiler (bot GNU and non-GNU).
* .gitignore: Update.
* t/ccnoco.sh: Use the new script instead of duplicating it.
* t/ccnoco3.sh: Likewise.
* t/ccnoco4.sh: Likewise.
* t/self-check-cc-no-c-o.sh: New testsuite self-check.
* t/list-of-tests.mk: Adjust.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agosync: update files from upstream with "make fetch"
Stefano Lattarini [Fri, 11 Jan 2013 16:38:58 +0000 (17:38 +0100)]
sync: update files from upstream with "make fetch"

* lib/INSTALL: Update.
* lib/config.guess: Likewise.
* lib/config.sub: Likewise.
* lib/gendocs_template: Likewise.
* lib/gitlog-to-changelog: Likewise.
* lib/gnupload: Likewise.
* lib/texinfo.tex: Likewise.
* lib/update-copyright: Likewise.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotypofix: in comments in GNUmakefile
Stefano Lattarini [Thu, 10 Jan 2013 22:44:33 +0000 (23:44 +0100)]
typofix: in comments in GNUmakefile

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoRename 'maint/' -> 'maintainer/', for Git's sake
Stefano Lattarini [Thu, 10 Jan 2013 22:40:26 +0000 (23:40 +0100)]
Rename 'maint/' -> 'maintainer/', for Git's sake

Otherwise, Git gets confused by the fact that a directory ('maint')
is named like a branch, and forces me to tweak the command line to
resolve the ambiguity for it.

* maint/: Rename ...
* maintainer/: ... like this.
* Makefile.am, GNUmakefile: Adjust.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoHACKING: minor typofix
Stefano Lattarini [Thu, 10 Jan 2013 22:28:45 +0000 (23:28 +0100)]
HACKING: minor typofix

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoHACKING: bug-tracker, the PLANS directory, and how to plan "big" changes
Stefano Lattarini [Thu, 10 Jan 2013 22:27:21 +0000 (23:27 +0100)]
HACKING: bug-tracker, the PLANS directory, and how to plan "big" changes

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoHACKING: rewindable branches should live in the 'experimental/*' namespace
Stefano Lattarini [Thu, 10 Jan 2013 22:16:37 +0000 (23:16 +0100)]
HACKING: rewindable branches should live in the 'experimental/*' namespace

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoHACKING: fixlets about git branch rewinding policy
Stefano Lattarini [Thu, 10 Jan 2013 22:10:58 +0000 (23:10 +0100)]
HACKING: fixlets about git branch rewinding policy

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoHACKING: commit messages are not to follow GCS ChangeLog rules too strongly
Stefano Lattarini [Thu, 10 Jan 2013 22:10:02 +0000 (23:10 +0100)]
HACKING: commit messages are not to follow GCS ChangeLog rules too strongly

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoHACKING: "detailed explanation" in commit messages is almost mandatory
Stefano Lattarini [Thu, 10 Jan 2013 22:06:27 +0000 (23:06 +0100)]
HACKING: "detailed explanation" in commit messages is almost mandatory

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoHACKING: we use "merge --log" even when merging master
Stefano Lattarini [Thu, 10 Jan 2013 22:04:06 +0000 (23:04 +0100)]
HACKING: we use "merge --log" even when merging master

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoHACKING: typofix
Stefano Lattarini [Thu, 10 Jan 2013 22:01:28 +0000 (23:01 +0100)]
HACKING: typofix

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agodepend2.am: fix comments on verbosity of compilation rules
Stefano Lattarini [Wed, 9 Jan 2013 21:17:53 +0000 (22:17 +0100)]
depend2.am: fix comments on verbosity of compilation rules

The situation and decisions described on those comments have become
quite outdated since the introduction of the silent-rules support.
Today, the general idea is to have nice, terse output if silent rules
are enabled, and complete, faithful, very verbose output if they are
not -- without trying to "massage" this verbose output in a more
pleasant form if that would cause complication in the affected code.

So it's better to just drop the obsolescent comments.

Note that we don't start simplifying the existing rules according
to this new philosophy; that will only be done when touching some
existing code (for the 'depend2.am' code, that will probably happen
on the master branch).

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agodepend2.am: improve comments a little
Stefano Lattarini [Wed, 9 Jan 2013 21:01:45 +0000 (22:01 +0100)]
depend2.am: improve comments a little

* lib/am/depend2.am: The "fastdep" mode is supported not only for
gcc 3.x, but for gcc 3.x or later, in particular, for all gcc in
the 4.x series (at the time of writing, the latest release is 4.72).
Adjust the comments to match, and re-wrap them while at it.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoplans: automake 1.14 is to assume "rm -f" with no args is OK
Stefano Lattarini [Wed, 9 Jan 2013 19:11:31 +0000 (20:11 +0100)]
plans: automake 1.14 is to assume "rm -f" with no args is OK

See automake bug#10828.

* PLANS/rm-f-without-args.txt: New.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agoplans: we want to active subdir-objects unconditionally in automake 1.14
Stefano Lattarini [Wed, 9 Jan 2013 18:57:27 +0000 (19:57 +0100)]
plans: we want to active subdir-objects unconditionally in automake 1.14

See automake bug#13378.

* PLANS/subdir-objects.txt: New.
* t/ccnoco4.sh: Improve heading comments a little.

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
11 years agotests: adjust stale references to old test names
Stefano Lattarini [Tue, 8 Jan 2013 20:52:07 +0000 (21:52 +0100)]
tests: adjust stale references to old test names

* t/remake-renamed-m4-macro-and-file.sh: Adjust to reflect to old
"acloca22 -> t/aclocal-deleted-header.sh" test rename.
* t/aclocal-pr450.sh (configure.ac): Use '$me' in the AC_INIT call,
instead of hard-coding the old name of this test, i.e., "acloca19".

Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>