[ng] dist: new API to specify formats of distribution tarballs
The API to specify the formats of distribution tarballs has been changed
completely.
Instead of using the various 'dist-*' automake options, the developer is
now expected to specify the default formats of its distribution tarballs
with the special variable AM_DIST_FORMATS; for example, where once would
have been:
Similarly, The various 'dist-*' targets (dist-gzip, dist-xz, dist-lzip,
dist-bzip2 and dist-gz) has been removed. If the user wants to generate
tarballs for formats not specified by the default AM_DIST_FORMATS, he can
simply override that variable dynamically:
# Will generate a '.zip' archive and a '.tar.xz' archive, and not
# further ones.
make dist AM_DIST_FORMATS='zip xz'
This change is of course is totally backward incompatible, but the
enhanced flexibility and simplicity is worth it. Not to mention that
the transition from the mainline Automake API to the new Automake-NG
one is trivial.
* lib/am/header-vars.mk (am.fatal): New.
* automake.in (generate_makefile): Use in instead of $(error) in the
generated make code exiting for earlier errors.
[ng] dist: fixup: add 'dist' and 'dist-all' to AM_RECURSIVE_TARGETS
* lib/am/distcheck.mk: Here. That wasn't happing due to a botched
"ifdef", broken by some recent change (probably during the transition
from 'distcheck.am' to 'distcheck.mk').
[ng] dist: vars DIST_TARGETS and DIST_ARCHIVES are no more public
Turn them into two internal variables. This will clean up the
interface a bit, and make the new planned dist-related APIs (still
to be implemented) simpler to use.
[ng] dist: refactor: reduce duplication in the 'dist-*' recipes
* lib/am/distcheck.mk: Here, with heavy refactorings, in particular
introducing ...
(am.dist.all-formats,
am.dist.all-targets,
am.dist.compress-cmd.gzip,
am.dist.uncompress-cmd.gzip,
am.dist.compress-cmd.bzip2,
am.dist.uncompress-cmd.bzip2,
am.dist.compress-cmd.lzip,
am.dist.uncompress-cmd.lzip
am.dist.compress-cmd.xz,
am.dist.uncompress-cmd.xz,
am.dist.create-cmd.zip,
am.dist.extract-cmd.zip): ... these new internal variables ...
(am.dist.create-archive-for-format.aux,
am.dist.create-archive-for-format,
am.dist.extract-archive-for-format.aux,
am.dist.extract-archive-for-format): ... and these new internal
make functions ...
(am.dist-gzip, am.dist-bzip2, am.dist-lzip, am.dist-xz,
am.dist.zip): ... and rewriting these rules as static-pattern
rules sharing the same recipe ...
(distcheck): ... and updating the recipe for this target.
* t/dist-formats.tap: Little adjustments for better usefulness
of verbose output when debugging.
[ng] tests: remove dead code from a test, fix a typo
* t/dist-formats.tap: Fix typo in a message: s/.tar.Z/.tar.xz/.
(have_compressor): Remove special handling of the 'compress' tool.
This is now useless, since we've removed support for '.tar.Z' tarballs
and thus care no more whether a 'compress' program is available or not.
Also, in the main code, one stray remaining reference to the 'shar'
program, that too useless now that we've removed support for '.shar.gz'
archives.
[ng] texi: verbatim include of rules for texinfo installation
It tells whether the '.info' files must be installed by default (usually
yes, unless the "no-installinfo" automake option is used). This is just
a preparatory change, in view of future ones.
* lib/am/texinfos.am: Move ...
* lib/am/texinfos.mk: ... here, with related adjustments. Also ...
(info_TEXINFOS): ... initialize this to empty by default.
* lib/am/automake.in (handle_texinfo): Adjust and simplify accordingly.
* Makefile.am (dist_am_DATA): Adjust.
* t/txinfo10.sh: Remove, basically an obsolete grepping check. We can
instead ...
* t/txinfo21.sh: ... enhance this semantic test to subsume and supersede
the removed one.
* t/override-conditional-1.sh: Adjust to avoid spurious failures.
[ng] refactor: new internal make variable 'am.conf.no-installinfo'
It tells whether the '.info' files must be installed by default (usually
yes, unless the "no-installinfo" automake option is used). This is just
a preparatory change, in view of future ones.
* lib/am/automake.in (generate_makefile): Define it here.
* lib/am/texibuild.mk (am.texi.build.info): Here, by not hiding the
creation of the directory containing the target info when "make V=1"
is used (or "./configure --disable-silent-rules").
[ng] tests: avoid spurious error with ctags from older Emacs and XEmacs
* t/ctags.sh: Here. Those ctags (from Emacs 22.3 and XEmacs 21.5)
apparently have problems grasping "#define" in header files; feed
them an inline function instead.
[ng] tests: avoid a spurious failure on OpenIndiana
* t/autodist.sh: Ensure that the 'install-sh' script has legit content,
because it's going to be used by the "make distdir" target on systems
lacking a decent 'install' program.
[ng] contrib: rewrite and fix 'check-html' and 'recheck-html'
That has actually been broken for some time, due to the changes
done in Automake-NG proper in the meantime.
* contrib/check-html.am (.log.html): Re-declare this suffix rule ...
(%.html: %.log): ... as a pattern rule.
(mostlyclean-check-html): Remove, instead ...
(MOSTLYCLEANFILES): ... appending to this variable. Not only this
reduce the code size, but will give us resilience against possible
exceeded command line length limits for free.
(check-html, recheck-html): Rewrite as static pattern rules. Fix
the recursive "make check" and "make recheck" invocation to override
TESTS, not TEST_LOGS (the latter override is not honoured anymore
by the new incarnation of the parallel-test rules).
* contrib/t/parallel-tests-html-recursive.sh: Adjust a little, by
initializing 'MOSTLYCLEANFILES' (to empty) in all the 'Makefile.am'
files that use 'check-html.am'.
* contrib/t/parallel-tests-html.sh: Likewise. Also, since the
parallel-tests API does not allow command-line overriding of
TEST_LOGS anymore, stop doing that.
[ng] refactor: in declaration of Texinfo-related files to be cleaned
Less code, less variables, better locality.
* automake.in (handle_texinfo_helper ): Update '%clean_dirs' and
'%clean_files' from here, rather than returning the files to clean
as a triplet.
(handle_texinfo): Adjust and simplify.
[ng] texi: less use of transforms in 'texinfos.am'
* automake.in (handle_texinfo): Drop the 'MOSTLYCLEAN', 'TEXICLEAN'
and 'MAINTCLEAN' transforms, instead adding directly to '%clean_dirs'
as appropriate.
* lib/am/texinfos.am: Adjust.
That is, fail through the usual avenues ("possibly undefined macro
'AM_C_PROTOTYPES', "option 'ansi2knr' not recognized") rather than
giving a special error message "automatic de-ANSI-fication support
has been removed". Since the removal has taken place in Automake 1.12
already, people will have got used to it once Automake-NG gets stable
enough.
* lib/Automake/Options.pm (_process_option_list): Remove special
handling of 'ansi2knr' option.
* m4/protos.m4: Remove.
* Makefile.am (dist_automake_ac_DATA): Adjust.
* t/ansi2knr-no-more.sh: Remove.
[ng] subdirs: verbatim include of relevant makefile fragment
* lib/am/subdirs.am: Rename ...
* lib/am/subdirs.mk: ... like this. Prefer '#' comments over
'##' ones.
* automake.in (handle_subdirs): Include it with the 'verbatim'
function rather than with the 'file_contents' one.
(generate_makefile): Move its call later. This is actually required
to avoid spurious failures.
* Makefile.am (dist_am_DATA): Adjust.
* lib/am/distdir.mk: Here, using the fact that this file is now included
verbatim and we can thus use GNU make constructs that would have confused
the Automake parser.
[ng] tests: fix spurious testsuite failures introduced by recent changes
* t/distcom2.sh: Remove as basically obsolete.
* t/distcom3.sh: Use semantic checks rather than brittle grepping checks.
* t/hdr-vars-defined-once.sh: Likewise.
* t/location.sh: Remove some checks that would become too cumbersome to
run.
* t/targetclash.sh: Adjust to ensure the expected automake diagnostic is
actually triggered.
[ng] distdir: verbatim inclusion of relevant makefile fragment
* lib/am/distdir.am: Rename ...
* lib/am/distdir.mk: ... like here, with related adjustments.
* automake.in (handle_dist): Include it using the 'verbatim'
function, rather than the 'file_contents' one.
* Makefile.am (dist_am_DATA): Adjust.
[ng] dist: less use of transforms, prefer make variables (2)
* automake.in (handle_dist): Turn the '%DIST-TARGETS%' transform
into the 'am.dist.extra-targets' internal variable.
* lib/am/distdir.am (distdir): Adjust and simplify accordingly.
[ng] dist: less use of transforms, prefer make variables (1)
* automake.in (handle_dist): Turn the '%FILENAME_FILTER%' transform
into the 'am.dist.filename-filter' internal variable.
* lib/am/distdir.am (distdir): Adjust and simplify accordingly (and
improve an error message while at it). In particular, this removed
the need for ...
(am.dist.skip-length-check): ... this variable.
For better parallelism in "make dist". This was already the case
for mainline Automake, but our recent changes to the dist-related
code in Automake-NG had broken that invariant.
* automake.in (handle_dist): Here, use 'unshift' rather than
'push' on '@archive_formats'.
[ng] dist: more verbatim inclusion of relevant makefile fragments
* lib/am/distdir.am: Move most of the '%?TOPDIR_P%'-protected, verbatim
stuff (i.e., containing no Automake-time transforms) from here ...
* lib/am/distcheck.mk: ... to here, with related adjustments.
Those formats being the 'shar' archive and the tar archive compressed
with 'compress'. Support for them is kept in mainline Automake for
the sake of backward compatibility only, and modern software releases
should not use those formats anyway, so it's better if we just remove
them.
* NG-NEWS, doc/automake-ng.texi: Update.
* lib/Automake/Options.pm (_is_valid_easy_option): Remove 'dist-shar'
and 'dist-tarZ'.
(_process_option_list): Give a fatal error if one of those two options
is seen.
* lib/am/distdir.am (am.dist.ext.tarZ, am.dist.ext.shar): Remove these
variables.
(dist-tarZ, dist-shar): And these targets.
* lib/am/distcheck.mk (distcheck): Do not try to decompress '.shar.gz'
or '.tar.Z' archives: they won't be there anyway.
* t/dist-formats.tap: Adjust and simplify.
* t/dist-obsolete.sh: New test.
* t/lzma.sh: Remove, subsumed by it.
[ng] dist: refactor handling of dist formats a little
* automake.in (handle_dist): Define list of default dist formats in the
new internal make variable 'am.dist.formats'. Related adjustments.
(preprocess_file): Drop the following now-unused transforms: XZ, LZMA,
LZIP, BZIP2, COMPRESS, GZIP, SHAR, ZIP.
* lib/am/distdir.am: Drop any use of the removed transforms, throughout.
(DIST_TARGETS): Redefine in function of '$(am.dist.formats)'.
(.PHONY): Update in function of '$(am.dist.formats)'.
(am.dist.ext.gzip, am.dist.ext.bzip2, am.dist.ext.xz, am.dist.ext.lzip,
am.dist.ext.tarZ, am.dist.ext.shar, am.dist.ext.zip): New internal
variables.
(DIST_ARCHIVES): Redefine in function of them and of '$(am.dist.formats)'.
[ng] distcheck: include it as a verbatim makefile fragment
* lib/am/distcheck.am: Rename ...
* lib/am/distcheck.mk: ... like this, and adjust to use GNU
make conditionals rather than Automake ones, and to allow for
user overrides of the '$(distcleancheck_listfiles)' variable.
Fix some comments while at it.
* automake.in (handle_dist): Include it suing the 'verbatim'
function.
* Makefile.am (dist_am_DATA): Adjust.
* t/distcheck-configure-flags-am.sh: Remove obsolete grepping
checks, that would cause the test to fails spuriously.
* t/distcheck-configure-flags.sh: Likewise.
* lib/am/distdir.am: From here ...
* lib/am/distcheck.am: ... to here. That is especially useful because
all of the 'distcheck' target has to be protected by a if '%?TOPDIR_P%'
conditional (since the 'distcheck' target must only be present in the
top-level makefile), so that we can now remove this overly long
conditional from this fragment ...
* automake.in (handle_dist): ... and simply limiting the inclusion
of it to when '$reldir' is '.'.
* Makefile.am (dist_am_DATA): Adjust.
* master:
automake: remove an unused local variable
distcheck: more resilient against possible failures
cleanup: remove almost-unused global var 'am_relative_dir'
* t/gettext.sh: Move checks about PR/381 ...
* t/gettext-pr381.sh: ... to this new test.
* t/gettext.sh: Move checks about config.rpath requirement ...
* t/gettext-config-rpath.sh: ... to this new test.
[ng] tests: avoid spurious failure in a gettext test
* t/gettext2.sh: Here, remove obsolete grepping checks in favor
of more modern ones.
* t/gettext.sh: Likewise. This doesn't fix any failure, but
makes the test more reliable.
[ng] tests: adjust weaknesses in the gettext tests
* t/gettext-macros.sh (m4/mk-dirp.m4): Define 'AM_PROG_MKDIR_P' rather
than 'AM_MKDIR_P', and in doing so, use 'AC_PROG_MKDIR_P' rather than
'AC_MKDIR_P'.
* maint:
automake: remove an unused local variable
distcheck: more resilient against possible failures
cleanup: remove almost-unused global var 'am_relative_dir'
distcheck: more resilient against possible failures
* lib/am/distdir.am (distcheck): Ensure that a failure in the commands
making the just-extracted source tree read-only cause the recipe to fail.
While at it, save a fork by creating the '_build' and '_inst' subdir
with a single mkdir invocation.
* automake.in ($am_relative_dir): Delete, it was only used once ...
(generate_makefile): ... in here, so it's simpler to inline its
expansion.
(initialize_per_input): Don't reset the deleted variable.
[ng] distcheck: --with-included-gettext: with a variable, not a transform
This is mostly a preparatory refactoring in view of future changes.
* automake.in (handle_dist): Define the new internal variable
'am.dist.handle-gettext' to "yes" if the package uses gettext,
to the empty string otherwise. This takes over the role of the
transform 'GETTEXT', which has thus been removed.
* lib/am/distdir.am (distcheck): Adjust to rely on the new variable
instead than of the removed transform.
[ng] disthook: with an internal variable, not a transform
This is mostly a preparatory refactoring in view of future changes.
* automake.in (handle_dist): Define the internal variable
'am.dist.handle-distcheck-hook' to "yes" if a user-defined
'distcheck-hook' rule, to the empty string otherwise. This
take over the role of the transform 'DISTCHECK-HOOK', which
has thus been removed.
* lib/am/distdir.am (distcheck): Adjust to rely on the new
variable instead than of the removed transform.
* t/distcheck-hook.sh: Remove obsolete or obsolescent grepping
checks.
* t/distcheck-hook2.sh: Likewise.
* master:
cleanup: remove two almost-unused global variables: {am,in}_file_name
cleanup: remove almost-unused global var 'topsrcdir'
automake: remove an unused variable
tests: make a test script more semantic
tests: remove an obsolete, no-op test script
tests: remove an obsolete test script
* ng/inst-work:
[ng] uninstall: refactor, more processing delegated to GNU make
[ng] uninstall: reimplement various recipes using more GNU make features
[ng] am.xargs-map: can pass further arguments to the mapped function
[ng] refactor: remove all uses of $(am__nobase_strip{,_setup})
[ng] refactor: remove all uses of '$(am__strip_dir)'
* lib/am/dejagnu.am: Rename ...
* lib/am/dejagnu.mk: ... like this, and rewrite partially to make it
readable verbatim.
* Makefile.am (dist_am_DATA): Adjust.
* automake.in (handle_tests): When DejaGNU support is needed, include
'dejagnu.mk' verbatim in the output Makefile.
* t/dejagnu2.sh: Adjust.
* lib/am/dejagnu.am: Rename ...
* lib/am/dejagnu.mk: ... like this, and rewrite partially to make it
readable verbatim.
* Makefile.am (dist_am_DATA): Adjust.
* automake.in (handle_tests): When DejaGNU support is needed, include
'dejagnu.mk' verbatim in the output Makefile.
* maint:
cleanup: remove two almost-unused global variables: {am,in}_file_name
cleanup: remove almost-unused global var 'topsrcdir'
automake: remove an unused variable
tests: make a test script more semantic
tests: remove an obsolete, no-op test script
tests: remove an obsolete test script
[ng] refactor: drop 'HOST', 'BUILD' and 'TARGET' transforms
Instead, use the new make variables $(am.conf.host-triplet),
$(am.conf.build-triplet) and $(am.conf.host-triplet) are defined.
* automake.in (preprocess_file): Drop 'HOST', 'BUILD' and 'TARGET'
transforms. Their role taken over ...
(generate_makefile): ... by the new variables 'am.conf.host-triplet',
'am.conf.build-triplet' and 'am.conf.target-triplet' defined here.
* lib/am/dejagnu.am: Adjust.
* t/triplet.sh: New test.
* automake.in ($am_file_name, $in_file_name): Delete these, which were
used only in the 'read_main_am_file' subroutine; instead ...
(read_main_am_file): ... modify it to only work from the '$makefile_am'
argument (which it was already receiving), and the new '$makefile_in'
argument, which is now passed to it ...
(generate_makefile): ... from here.
(initialize_per_input): Don't reset the two deleted variables anymore.
* automake.in ($topsrcdir): Delete, it was only used once ...
(handle_LIBOBJS_or_ALLOCA): ... in here, so it's simpler to inline
its expansion. Improve formatting of immediately surrounding code
a little while we are at it.
(initialize_per_input): Don't reset the deleted variable.
* lib/am/tags.am: Moved ...
* lib/am/tags.mk: ... here, rewrite to be included verbatim, reformatted,
and enhanced to take over the role of ...
* automake.in (handle_tags): ... this function as well, which has thus
been removed.
(generate_makefile): Call the removed function no more. Include 'tags.mk'
verbatim in the generated Makefile.
* Makefile.am (dist_am_DATA): Adjust.
* t/tags.sh: This weak grepping test is broken by the other changes done
here; so remove it, adding ...
* t/tags-id.sh: ... this in its place, which is more semantic, i.e.,
operated by actually running the 'ID' target.
* t/tags2.sh: Remove as obsolete.
* t/location.sh: Adjust to avoid spurious errors.
* t/targetclash.sh: Likewise.
* automake.in (generate_makefile): Define that variable to "yes" if the
Makefile being currently generated is in the top-level directory, define
it to the empty string otherwise. This offers a way (alternative to the
'%?TOPDIR_P%' transform) to determine whether a recipe is being executed
in the top-level directory or not.
This will also simplify future changes aimed at making the current
'tags.am' makefile fragment included more "verbatim".
* lib/am/tags.am (am.tags.include-option): New internal variable, the
include-like option used by the $(EATGS) problem. This must be
determined dynamically because Exuberant Ctags wants '--etags-include'
while GNU Etags wants '--include'.
(am.tags.subfiles): New, TAGS files in $(SUBDIRS) entries (if any)
that must be included in the top-level TAGS file.
(tags-am): Use them, and simplify accordingly.
[ng] tags: drop support for pre-5.6 exuberant ctags
Exuberant Ctags before that version (release in 2006) could
fail to create TAGS files when no files are supplied, despite
any '--etags-include' option. This required the addition of
a workaround ...
* lib/am/tags.am (tags-am): ... here, which can now be removed.
* lib/am/tags.am (am__uniquify_input, am__define_uniq_tagged_files):
Remove, their role taken over by ...
(am.tags.files.uniq): ... this new (memoized) variable.
All rules adjusted.
(tags-am): Use $(CURDIR) instead of `pwd` to compute the absolute
path of the current working directory.
(GTAGS): Use $(abs_top_builddir) instead of `cd $(top_builddir) && pwd`
to compute the absolute path of the top-level build directory.
The best explanation for this move is given by excerpts from the
Automake manual itself:
Several years ago François Pinard pointed out several arguments
against this AM_MAINTAINER_MODE macro. Most of them relate to
insecurity. By removing dependencies you get non-dependable builds:
changes to sources files can have no effect on generated files and
this can be very confusing when unnoticed. He adds that security
shouldn't be reserved to maintainers (what '--enable-maintainer-mode'
suggests), on the contrary. If one user has to modify a Makefile.am,
then either Makefile.in should be updated or a error should be output
(this is what Automake uses the 'missing' script for) but the last
thing you want is that nothing happens and the user doesn't notice
it (which is exactly what happens when rebuild rules are disabled by
AM_MAINTAINER_MODE).
Jim Meyering, the inventor of the AM_MAINTAINER_MODE macro was swayed
by François's arguments, and got rid of AM_MAINTAINER_MODE in all of
his packages.
Since in Automake-NG we are breaking backward-compatibility in several
ways already, this is a good occasion to get rid of another obsolescent,
historical-reasons-only, more-dangerous-than-useful feature.
Admittedly, the manual went on saying:
Still many people continue to use AM_MAINTAINER_MODE, because it
helps them working on projects where all files are kept under
version control, and because missing isn't enough if you have the
wrong version of the tools.
But then, the right solutions for using lies not in the use of the
brittle AM_MAINTAINER_MODE macro; such solutions are indeed already
explained in another section of the manual (in the section "CVS and
generated files"):
In distributed development, developers are likely to have different
version of the maintainer tools installed. In this case rebuilds
triggered by timestamp lossage will lead to spurious changes to
generated files. There are some popular solutions to this:
- All developers should use the same versions, so that the rebuilt
files are identical to files in CVS. (This starts to be difficult
when each project you work on uses different versions).
- Or people use a script to fix the timestamp after a checkout (the
GCC folks have such a script).
The use of such a "timestamp-fixing" script is also suggested earlier
in the section, in the discussion about the merits and limits of the
'missing' script.
* NG-NEWS: Update.
* doc/automake-ng.texi: Likewise; among the other things ...
(maintainer-mode): ... rename this node ...
(maintainer tools): ... like this.
* m4/maintainer.m4: Delete.
* Makefile.am (dist_automake_ac_DATA): Delete.
* automake.in ($seen_maint_mode): Remove this global variable.
(scan_autoconf_trace): Don't trace 'AM_MAINTAINER_MODE'.
(read_am_file): Don't special-handle '@MAINT@' substitutions;
which were an anachronism anyway, according to pre-existing
comments.
(preprocess_file): Drop 'MAINTAINER-MODE' transform.
* lib/am/configure.am: Remove all uses of the %MAINTAINER-MODE%
transform.
* lib/am/remake-hdr.am: Likewise.
* lib/am/texi-vars.am: Likewise.
* lib/am/lex.am, lib/am/yacc.am: Likewise, and simplify dropping
the definition and use of (respectively) '$(am.lex.maybe-skip)'
and '$(am.yacc.maybe-skip)'.
* t/condlib.sh (configure.ac): Drop AM_MAINTAINER_MODE use.
* t/flavor.sh: Likewise, and drop '--enable-maintainer-mode'
from the './configure' invocation.
* t/lex-pr204.sh: Remove as obsolete.
* t/yacc-pr204.sh: Likewise.
* t/maintmode-configure-msg.sh: Likewise.
* t/mmode.sh: Likewise.
* t/mmodely.sh: Likewise.
* t/remake5.sh: Likewise.
* t/lex-nodist.sh: Fix header comments to account for some of
the deleted tests.
* t/yacc-nodist.sh: Likewise.
[ng] uninstall: refactor, more processing delegated to GNU make
* lib/am/header-vars.mk (am.chars.space, am.chars.tab): New variables,
defined respectively to a literal white space characters and a literal
tabulation character.
(am.util.whitespace-escape): New function, backslash-escape whitespace
characters in the given string.
(am.util.file-exists): New function, tell whether the given argument
is an existing file; it does so coping correctly with whitespaces and
wildcard metacharacters as well, to be usable with paths containing
references to $(DESTDIR).
(am.uninst.cmd.aux): Re-implement using the new $(am.util.file-exists)
function.
[ng] uninstall: reimplement various recipes using more GNU make features
This change likely introduces subtle semantic changes in corner cases
and tricky situation. Given the simplifications and improved uniformity
it offers, we consider that completely acceptable.
With this change, the test 't/instmany-python.sh' passes once again.
* lib/am/header-vars.mk (am.uninst.cmd): New private make function.
(am.uninst.cmd.aux): Likewise, used internally by the above (and
to be considered an implementation detail of it).
(am__uninstall_files_from_dir): Delete, no more needed.
* lib/am/data.am: Rewrite the uninstall recipe(s) to take advantage
of $(am.uninst.cmd).
* lib/am/libs.am: Likewise.
* lib/am/lisp.am: Likewise.
* lib/am/mans.am: Likewise.
* lib/am/python.am: Likewise.
* lib/am/progs.am: Likewise.
* lib/am/scripts.am: Likewise.
* lib/am/texinfos.am: Likewise (and also of other unrelated GNU make
features while we are at it).