summaryrefslogtreecommitdiff
path: root/NG-NEWS
Commit message (Collapse)AuthorAgeFilesLines
* [ng] maint: update copyright years to 2015 (branch 'ng/master')Stefano Lattarini2015-01-051-1/+1
| | | | Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* update copyright years in all filesStefano Lattarini2014-12-191-1/+1
| | | | Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* texi: overriding of 'dist-info' target is brokenStefano Lattarini2013-01-091-4/+22
| | | | | | | | | | | | | | | Due to the differences in the codebase of Automake-NG and mainline Automake, that (undocumented) capability has been lost. Not a big deal, since in the long term, we should give a proper API to obtain that effect, instead of forcing the user to employ and undocumented hack. So, until we have decided on that API, just mark the test checking for the lost capability as "XFAIL." * Makefile.am (XFAIL_TESTS): Add 't/txinfo-nodist-info.sh'. * NG-NEWS: Document the regression. Related adjustments and updated. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* maint: update copyright year for 2013 (in branch ng/master)Stefano Lattarini2012-12-311-1/+1
| | | | Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* NG-NEWS: prefer "no longer" over "not anymore"; plus few minor fixletsStefano Lattarini2012-12-291-23/+22
| | | | Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* NG-NEWS: adjust w.r.t. recent changes in Automake masterStefano Lattarini2012-12-281-18/+0
| | | | | | | | | | The next version of Automake (1.14) is planned to drop few obsolete features that have already been removed in Automake-NG. There is thus no need to list this dropped features in our NG-NEWS file (as Automake-NG will certainly see no stable release before Automake 1.14 is out). Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* [ng] dist: new internal API to specify formats of distribution tarballsStefano Lattarini2012-08-131-9/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The API to specify the formats of distribution tarballs has been changed completely, in a BACKWARD-INCOMPATIBLE way. 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: AM_INIT_AUTOMAKE([dist-bzip2 dist-zip]) now it must be: AM_DIST_FORMATS = gzip bzip2 zip and similarly, where once would have been: AUTOMAKE_OPTIONS = no-dist-gzip dist-bzip2 dist-xz now is it simply: AM_DIST_FORMATS = bzip2 xz 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. * NG-NEWS: Update. * ng/automake-ng.texi: Likewise. * configure.ac (AM_INIT_AUTOMAKE): Drop the 'dist-xz' option. While at it, drop the 'color-tests' option (now on by default, even in coming-soon Automake 1.13) and add the 'ng' option (mostly for some showing-off :-). * t/ax/am-test-lib.sh: Also unset 'AM_DIST_FORMATS'. * Makefile.am (AM_DIST_FORMATS): New, containing 'gzip' ad 'xz' (so that we distribute the same formats we did before). * lib/am/distcheck.mk (AM_DIST_FORMATS): New, defaulting to 'gzip'. (am.dist.bad-targets): New, list invalid entries of $(AM_DIST_FORMATS). Error out with a suitable message if that variable is non-empty. Rename all the 'dist-*' targets, once public, to '.am/dist-*' (which are private). Adjust their rules. (am.dist.all-targets): Adjust to said 'dist-*' => '.am/dist-*' renaming. (am.dist.default-targets): New, defined from $(AM_DIST_FORMATS). (dist, dist-all): Rewritten to rely on dependencies rather than on recursive make invocation (the new API allows us to do so easily). Other minor related adjustments. (distcheck): Use $(AM_DIST_FORMATS) instead of $(am.dist.formats) in the recipe. * automake.in (handle_dist): Drop analysis of the various 'dist-*' options, and of the 'no-dist-gzip' one; don't define the internal make variable 'am.dist.formats'. * lib/Automake/Options.pm (_is_valid_easy_option): Recognize the various 'dist-*' options and the 'no-dist-gzip' one no more. (_process_option_list): Explicitly reject them (to give better diagnostic). * t/dist-obsolete-opts.sh: New, check such diagnostic. * t/dist-obsolete.sh: Remove as obsolete. * t/repeated-options.sh: Minor adjustments to avoid spurious failures. * t/dist-formats.tap: Adjust heavily (almost a complete rewrite). Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* [ng] dist: vars DIST_TARGETS and DIST_ARCHIVES are no more publicStefano Lattarini2012-08-131-8/+11
| | | | | | | | | | | | | | | 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. * lib/am/distcheck.mk (DIST_TARGETS, DIST_ARCHIVES): Rename ... (am.dist.default-targets, am.dist.default-archives): ... like these, respectively. (distcheck, dist, dist-all): Adjust. * t/dist-formats.tap (nogzip): Likewise. * NG-NEWS: Update. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* [ng] subdirs: merge $(RECURSIVE_CLEAN_TARGETS) into $(RECURSIVE_TARGETS)Stefano Lattarini2012-08-111-0/+4
| | | | | | | | * lib/am/subdirs.mk: Here. They had once been separated for historical reasons, but such separation is not needed anymore today. * NG-NEWS: Update. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* [ng] dist: remove obsolete distribution formatsStefano Lattarini2012-08-111-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | 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. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* [ng] maintainer-mode: remove it altogetherStefano Lattarini2012-08-091-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* [ng] automake: remove support for threaded executionStefano Lattarini2012-07-311-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Why are we removing such a nice feature, especially in a world where multicore systems are becoming the norm? First, that feature adds a lot of complexity to the Automake script, which might get in the way of future refactorings. And the Automake-NG fork is about refactorings and cleanups at least as much as about new features and better GNU make integration. Also, the performance enhancements offered by threaded Automake seem to be fairly limited: <http://lists.gnu.org/archive/html/automake/2009-11/msg00004.html> albeit admittedly not excessively so: <http://www.open-mpi.org/community/lists/devel/2010/09/8524.php> In addition, we should really be pushing peoples towards non-recursive build systems -- refer to Peter Miller's article "Recursive Make Considered Harmful" <http://miller.emu.id.au/pmiller/books/rmch/>. In such a non-recursive setup, there is just just one 'Makefile.am', and thus little point in trying to launch a thread for each 'Makefile.am'. In the end, however, the consideration that tipped the balance in favor of this change is that we want to reach a point, during the yet-to-come maturity of Automake-NG, where the 'automake' script will be just a thin layer around the provided helper scripts and makefile fragments (with maybe a *small* smattering of preprocessing), as well as around autom4te (for the proper parsing of configure.ac). At such a point, a threaded execution would bring no real benefit. * NG-NEWS: Update. * doc/automake-ng.texi, NG-NEWS: Likewise. * configure.ac: Don't check for 'ithreads' support in perl. Drop AC_SUBST 'PERL_THREADS'. * bootstrap.sh (PERL_THREADS): Don't define. (dosubst): Don't substitute it. * lib/Automake/Config.in ($perl_threads): Define no more. (@EXPORT): Drop it. * aclocal.in ($perl_threads): Remove, no more needed. * automake.in (BEGIN) [$perl_threads]: Don't require nor import the 'threads' and 'Thread::Queue' modules. (QUEUE_MESSAGE, QUEUE_CONF_FILE, QUEUE_LOCATION, QUEUE_STRING): Delete constants. ($required_conf_file_queue): Delete variable. ($nthreads): Likewise, and thus ... (get_number_of_threads): ... delete this function, whose only purpose was to initialize that variable. (handle_makefiles_serial): Delete, its body inlined in the main code. (require_file_internal): Don't take the '$QUEUE' argument, nor handle threading/serialization calling back ... (queue_required_file_check_or_copy): ... this function, which has thus been removed. (require_libsource_with_macro): Adjust 'require_file_internal' call to new signature. (require_conf_file): Likewise, in the process dropping any handling of threading/serialization. (handle_makefiles_threaded): This is no more called anywhere, so delete it, together with ... (require_queued_file_check_or_copy): ... this, which has in that its only caller. * lib/Automake/Location.pm (serialize, deserialize): Delete as unused. * lib/Automake/Channels.pm (setup_channel_queue, pop_channel_queue): Likewise. (@EXPORT): Adjust. (BEGIN) [$perl_threads]: Don't require nor import 'threads'. (%_default_options): Remove 'ordered', 'queue' and 'queue_key' keys, that were only required for serialization during threaded Automake. (_merge_options, _print_message): No need to handle those options. Adjust creation of channels 'automake', 'verb' and 'fatal'. (_enqueue, _dequeue): Delete as unused. (msg): Adjust a comment. (verb): Don't try to display informations about the current thread. * lib/Automake/DisjConditions.pm (CLONE): Delete, no more needed. * t/ax/am-test-lib.sh (require_tool): Drop handing of requirement 'perl-threads'; it is not used by any test now. * t/parallel-am.sh: Remove as obsolete. * t/parallel-am2.sh: Likewise. * t/parallel-am3.sh: Likewise. * t/pm/Condition-t.pl: Likewise. * t/pm/DisjConditions-t.pl: Likewise. * t/werror3.sh: Don't test with AUTOMAKE_JOBS=2. * Makefile.am (check-coverage-run, recheck-coverage-run): Don't export 'WANT_NO_THREADS' to "yes", nor unset 'AUTOMAKE_JOBS'. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* [ng] header vars: remove few old redundant variablesStefano Lattarini2012-07-271-0/+5
| | | | | | | | | | | | * lib/am/header-vars.am (target_triplet, host_triplet, build_triplet): Remove these, redundant because aliases respectively for the variables $(target), $(host) and $(build). See also: <http://lists.gnu.org/archive/html/automake/2012-07/msg00058.html> * lib/am/dejagnu.am: Adjust. * NG-NEWS: Update. * doc/automake-ng.texi: Adjust. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* [ng] news: remove duplicated headerStefano Lattarini2012-07-231-3/+0
| | | | | | * NG-NEWS (Obsolete Features Removed): This. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* [ng] rename: ACLOCAL_M4 -> am.remake.aclocal-m4Stefano Lattarini2012-07-221-0/+4
| | | | Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* [ng] rename: am__dist_* -> am.dist.*Stefano Lattarini2012-07-211-3/+3
| | | | | | | | | | | | | | Here is the complete list of renames: am__dist_common -> am.dist.common-files am__dist_sources -> am.dist.sources am__dist_files -> am.dist.all-files am__dist_files_1 -> am.dist.files-tmp1 am__dist_files_2 -> am.dist.files-tmp2 am__dist_files_cooked -> am.dist.files-cooked am__dist_parent_dirs -> am.dist.parent-dirs Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* [ng] built sources: avoid unconditional recursive make invocationStefano Lattarini2012-07-031-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With this change, the times for a null-build of GNU coreutils (as averaged from ten builds on an aging Debian system) drops from ~3.8 seconds to ~2.6 seconds. With this change, the semantic of $(BUILT_SOURCES) support is slightly altered, in that $(BUILT_SOURCES) will now be built not only before the "all", "check" or "install" targets, but before *any* target. We believe that not only this change in semantics is justified by the enhanced performance, but that the new semantics is actually better than the old one. So a double win. The new and more complex implementation is a price worth paying for those improvements. * lib/am/all-target.am: New implementation of $(BUILT_SOURCES) support, using more GNU make features (mostly, automatic remake of include files and automatic restart in the face of rebuilt makefiles). This new implementation should ensure that $(BUILT_SOURCES) will be built before before any other target. * lib/am/check-target.am, lib/am/install.am: Simplify: now there's no need to explicitly cater for $(BUILT_SOURCES) in the 'check' and 'install' targets. * t/built-sources-subdir.sh: Adjust and enhance a little. * t/remake-gnulib-remove-header.sh: Trivial adjustment (relying on the fact that .PHONY works correctly for GNU make, also when applied to targets that are existing files). * t/suffix-hdr.sh: Adjust, to avoid GNU make erroneously remove a generated header thinking it is an intermediate file. * t/yacc-deleted-headers.sh: Adjust: we should expect non-existing $(BUILT_SOURCES) to be rebuilt by *any* make invocation. * t/yacc-mix-c-cxx.sh: Likewise. * NG-NEWS (Source Files with Unknown Extensions): Adjust the example to mirror the change. (Miscellaneous): Document the new $(BUILT_SOURCES) semantic. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* [ng] clean: do not ignore errors while removing filesStefano Lattarini2012-06-211-0/+3
| | | | | | | | | | | Possible culprits have been identified with the command "git grep '-rm\b'". * NG-NEWS: Update. * lib/am/tags.am, lib/am/distdir.am, lib/am/dejagnu.am, lib/am/clean.am: Do not prefix recipes invoking "rm" with the "-" recipe modifier: we now want the cleaning recipes to fail if rm encounters an error. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* Merge branch 'ng/texinfo-work' into ng/masterStefano Lattarini2012-06-181-0/+9
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * ng/texinfo-work: (29 commits) [ng] texi: drop support for '.txi' and '.texinfo' suffixes [ng] coverage: texinfo silent rules with a subdir texinfo file [ng] tests: rename silent8.sh -> silent-texi.sh [ng] texi: remove some crufty code to support obsolete environment [ng] texi: move more code from automake to Makefile [ng] texi: "de-prettify" makeinfo command line [ng] automake: merge handle_texinfo_source() -> handle_texinfo_helper() [ng] texi: simplify handle_texinfo_source by assuming '.info' suffix ... [ng] texi: move some more knowledge from automake to texi-spec.am [ng] texi: in texi-spec.am, assume suffix for info files is always '.info' [ng] automake: remove two unused variables from '&handle_texinfo_source' [ng] coverage: texinfo input files using @include directives [ng] texi: always look for mdate-sh in the build-aux directory ... [ng] refactor: more proper name for a subroutine in automake [ng] texi: drop a useless transform when processing texinfos.am [ng] texi: adjust names of vars used for silent rules support [ng] texi: drop transforms when reading texibuild.am [ng] texi: reorganize '.am' fragments even more [ng] texi: reorganize '.am' fragments a bit [ng] texi: reduce code duplication in output Makefile [ng] texi: refactoring in texibuild.am [ng] texi: reduce code duplication in texibuild.am [ng] texi: read 'texibuild' rules more verbatim [ng] texi: be sure to only emit generic pattern rules once [ng] texi: drop support for suffix-less info files [ng] texi: more target-specific variables use in '.info' build rules [ng] texi: reimplement '.info' build using target-specific variables [ng] texi: tweak rules for HTML generation to spawn only one shell [ng] texi: simplify by always assuming generic rules Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
| * [ng] texi: drop support for '.txi' and '.texinfo' suffixesStefano Lattarini2012-06-171-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The former was only needed to cater to 8+3 file systems (for which we have dropped support anyway), and the latter was hardly used in practice, it's extra "eye-candy" not worth complicating the code. We now only accept and handle files with a '.texi' suffix. * NG-NEWS: Update. * automake.in (handle_texinfo_helper): Drop support for '.txi' and '.texinfo' suffixes. (scan_texinfo_files): Likewise. * lib/am/texibuild.am: Simplify accordingly, assuming '.texi' as the only valid suffix for Texinfo input files. * t/txinfo-rules-once.sh: Resurrect this test, and enhance it a little, also merging in the suitably adapted contents of ... * t/txinfo9.sh: ... this test, now deleted. * t/txinfo6.sh: Remove as obsolete. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
| * [ng] texi: drop support for suffix-less info filesStefano Lattarini2012-06-171-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Such support is seldom used, and will get in the way of future, useful refactorings. We can still re-introduce it at a later time, after the dust is settled, if there are users' requests in this direction. * automake.in (scan_texinfo_file): Error out if a input '.texi' file specifies an output (in the '@setfilename' directive) that doesn't have a '.info' extension. (output_texinfo_build_rules): Simplify, by assuming generated info files ought to have the '.info' extension. * lib/am/texibuild.am: Likewise. * NG-NEWS: Update * t/txinfo3.sh: Remove as obsolete. * t/txinfo-unrecognized-extension-2.sh: New test. * t/primary-prefix-valid-couples.sh: Adjust to avoid spurious failures. * t/txinfo17.sh: Likewise. * t/txinfo20.sh: Likewise. * t/vtexi2.sh: Likewise. * t/mdate2.sh: Likewise. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* | [bg] silent: simplify by taking advantage of GNU make semanticsStefano Lattarini2012-06-181-12/+17
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In particular, taking advantage of the fact that, in GNU make, command line override of variables is propagated to recursive make invocations. This change offers us a small but nice size reduction bot in Automake's code and in the generated Makefiles. It also improves the API to define custom silent "tags", by turning it from: pkg_verbose = $(pkg_verbose_$(V)) pkg_verbose_ = $(pkg_verbose_$(AM_DEFAULT_V)) pkg_verbose_0 = @echo PKG-GEN $@; to the slightly clearer: pkg_verbose = $(pkg_verbose/$(V)) pkg_verbose/1 = pkg_verbose/0 = @echo PKG-GEN $@; * NG-NEWS: Update. * doc/automake-ng.texi (Automake Silent Rules): Update w.r.t. the API for user-defined silent rules. * automake.in: Simplify, by removing the indirections involving $(AM_DEFAULT_VERBOSITY); some other changes and simplifications. (verbose_private_var): Delete, its calls from &define_verbose_var deleted (and those were its only calls). * lib/am/header-vars.am: Define '$(V)' to 0 if it's not already defined. * m4/silent.m4: Initialize and AC_SUBST the variable 'V' directly, instead of of the indirect 'AM_DEFAULT_VERBOSITY'. Do not set nor AC_SUBST the variable 'AM_BACKSLASH', it's not used anymore (and hasn't been since out overhauling and simplification of the compile rules). * GNUmakefile: Simplify a little. * t/silent6.sh, t/silent-configsite.sh: Adjust. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* [ng] cosmetics: remove trailing whitespace from few filesStefano Lattarini2012-06-101-2/+2
| | | | Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* Merge branch 'ng/subdir-objects' into ng/masterStefano Lattarini2012-06-081-0/+12
|\ | | | | | | | | | | | | | | * ng/subdir-objects: [ng] cleanup: after enabling of subdir-objects unconditionally [ng] tests: remove explicit usages of the 'subdir-objects' option [ng] subdir-objects: enable unconditionally [ng] automake: don't define many identical 'lang_*_rewrite' subroutines
| * [ng] subdir-objects: enable unconditionallyStefano Lattarini2012-06-071-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The fact that Automake-generated Makefiles places compiled object files in the current directory by default, also when the corresponding source file is in a subdirectory, is basically an historical accident, due to the fact that the 'subdir-objects' option had only been introduced in April 1999, starting with commit 'user-dep-gen-branchpoint-56-g88b5959', and never made the default, likely to avoid backwards-compatibility issues. Since we believe the behaviour enabled by the 'subdir-objects' is the only natural and most useful one, we make it the only only one available, simplifying the Automake implementation and APIs a little in the process. * NG-NEWS: Update. * doc/automake-ng.texi (Program and Library Variables): The output object files are not anymore placed in the current directory by default, but rather in the same directory of the source file. (LIBOBJS): Now the $(LIBOBJS) and $(ALLOCA) variables can also be be used outside of the directory where their sources lie. (List of Automake options): Don't document the 'subdir-objects' option anymore. Other related minor adjustments. * automake.in (LANG_PROCESS): Remove, it's not needed anymore. (handle_languages): Don't test whether option 'subdir-objects' is set (just assume it is), and do not use the '%SUBDIROBJ%' transform when processing '.am' fragments. (lang_sub_obj): Delete, it would just return 'LANG_SUBDIR' unconditionally now. (lang_c_rewrite): Adjust. Don't test whether the option 'subdir-objects' is set (just assume it is). (lang_yacc_rewrite): Likewise. (lang_lex_rewrite): Likewise. (handle_single_transform): Likewise. Remove an obsolete comment. Add a proper "FIXME" comments about a fragment of code that might have become dead code now. (handle_LIBOBJS_or_ALLOCA): Simplify assuming that the option 'subdir-objects' is always set. Accordingly, there's no need to warn anymore if '$(LIBOBJS)' or '$(ALLOCA)' are used outside the '$config_libobj_dir' directory (as specified by autoconf macro 'AC_CONFIG_LIBOBJ_DIR'). * lib/am/depend2.am: Assume the '?SUBDIROBJ?' Automake time conditional is always true, and remove its use accordingly. lib/am/depend2.am * t/ax/depcomp.sh: Adjust to the fact that 'subdir-objects' is always in effect. * t/ccnoco2.sh: Likewise. * t/cscope.tap: Likewise. * t/depcomp8a.sh: Likewise. * t/depcomp8b.sh: Likewise. * t/libtool3.sh: Likewise. * t/pr401.sh: Likewise. * t/pr401b.sh: Likewise. * t/pr401c.sh: Likewise. * t/lex-line.sh: Likewise. * t/yacc-line.sh: Likewise. * t/yacc5.sh: Likewise. * t/parallel-tests-suffix-prog.sh: Likewise. * t/fort4.sh: Likewise, and extend a bit. * t/fort5.sh: Likewise. * t/gcj.sh: Likewise. * t/subpkg.sh: Likewise. * t/subpkg-yacc.sh: Likewise. * t/xsource.sh: Likewise. * t/libobj20a.sh: Remove as obsolete. * t/libobj20b.sh: Adjust heading comments. * t/libobj20c.sh: Likewise. * t/subdir3.sh: Remove as obsolete. * t/subobj4.sh: Likewise. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* | [ng] vartypos: update news fileStefano Lattarini2012-06-061-0/+14
|/ | | | | | | | | * NG-NEWS (Warnings and diagnostic): Diagnostic about typos in '_SOURCES' etc. variable is issued at make, not automake, runtime, and when undesired can be silenced (totally or partly) with the help of the 'AM_VARTYPOS_WHITELIST' variable. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* [ng] general: assume dot-starting file names are supportedStefano Lattarini2012-05-301-0/+6
| | | | | | | | | | | | | | | | | | Now that we've dropped support for DJGPP, Windows 95/98/ME and MS-DOS, that should always the case. * lib/am/texibuild.am: Just assume we can have directories whose name starts with a dot, i.e., that '${am__leading_dot}' expands to '.'. * m4/depend.m4 (AM_SET_DEPDIR): Likewise. Now $(DEPDIR) will be set unconditionally to '.deps'. * m4/init.m4 (AM_INIT_AUTOMAKE): Don't AC_REQUIRE the m4 macro 'AM_SET_LEADING_DOT' anymore. * m4/lead-dot.m4: Delete. * Makefile.am (dist_automake_ac_DATA): Remove it. * NG-NEWS: Update. * t/subobj11a.sh: Just assume $(DEPDIR) expands to '.deps'. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* [ng] cleanup: drop support for DJGPP, Windows 95/98/ME, MS-DOSStefano Lattarini2012-05-301-0/+3
| | | | | | | | | | | | | | | | | See also: <http://lists.gnu.org/archive/html/automake-ng/2012-05/msg00104.html> * automake.in (BEGIN): Don't override $ENV{SHELL} for DJGPP. * bootstrap: Don't special case the default value for BOOTSTRAP_SHELL on DJGPP. While we are at, allow that variable to be overridden from the environment. * configure.ac (MODIFICATION_DELAY): Define to '2' unconditionally, as we don't have to cater to quirks of Windows 95/98/ME anymore. * lib/am/texibuild.am: Remove support for '*.iNN' files used on DJGPP. * lib/am/texinfos.am: Likewise. * NG-NEWS: Update. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* Merge branch 'ng/suffix-rules-old-fashioned' into ng/masterStefano Lattarini2012-05-291-12/+0
|\ | | | | | | | | * ng/suffix-rules-old-fashioned: [ng] suffix: don't reject old-fashioned suffix rules anymore
| * [ng] suffix: don't reject old-fashioned suffix rules anymoreStefano Lattarini2012-05-291-12/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now that, after today's commit 'v1.12-331-g645bb21', Automake-NG does not follow the chain of user-defined pattern rules anymore, there's no need to treat such rules preferentially, nor to reject old-fashioned suffix rules. This will help interoperability with tools like Gnulib, which generated Makefile.am fragments that still uses old-fashioned suffix rules (since they are targeted to mainline Automake). * automake.in (handle_footer): Do not reject the '.SUFFIXES:' rule nor the 'SUFFIXES' variable. Add a "FIXME" comment about why we still support the 'SUFFIXES' variable. * lib/Automake/Rule.pm: Do not error out if an old-fashioned suffix rule is seen. * lib/am/footer.am (.SUFFIXES): Depend on '$(SUFFIXES)', if that's non-empty. * t/suffix-rules-reject.sh: Remove. * t/suffix-rules-old-fashioned.sh: New. * NG-NEWS: Adjust. * doc/automake-ng.texi (Suffixes): Do not state that Automake-NG rejects attempts to define old-fashioned suffix rules. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
| |
| \
*-. \ Merge branches 'ng/stdinc' and 'ng/suffix-rules-mutilation' into ng/masterStefano Lattarini2012-05-291-20/+100
|\ \ \ | | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | * ng/stdinc: [ng] compile: rename make variable DEFAULT_INCLUDES -> AM_DEFAULT_INCLUDES [ng] compile: add extra -I opts from config headers at make runtime [ng] compile: rename make variable CONFIG_HEADER -> AM_CONFIG_HEADERS [ng] maintcheck: refactor checks on obsolete variable names * ng/suffix-rules-mutilation: [ng] suffix: drop Automake-time chaining of suffix rules
| | * [ng] suffix: drop Automake-time chaining of suffix rulesStefano Lattarini2012-05-291-20/+89
| |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change simplifies the Automake::Rule module a little, moves yet more logic from Automake runtime to GNU make runtime (in the spirit of Automake-NG), and gets us rid of some never-documented nor completely specified Automake magics. OTOH, it also breaks some idioms that, while only relevant for uncommon cases, have been working since the first Automake releases. Still, it is easy to slightly modify those idioms to have the use cases they were catering to correctly handled with the new semantics (examples of this are given below); the only downside being the need of a little more verbosity and explicitness on the user's part. So, with the present change, automake starts using a much simpler and dumber algorithm to determine how to build an object associated to a source whose extension in not one of those it handles internally. The new algorithm goes like this. For any file listed in a '_SOURCES' variable whose suffix is not recognized internally by automake (in contrast to known suffixes like '.c' or '.f90'), automake will obtain the expected target object file by stripping the suffix from the source file, and appending either '.$(OBJEXT)' or '.lo' to it (which one depends on whether the object is built as part of a program, a static library, or a libtool library). It will then be assumed (but not checked!) that the user has defined a rule (either explicit or defined from a pattern rule) which can turn that source file into this corresponding object file. For example, on an input like: bin_PROGRAMS = foo foo_SOURCES = mu.ext1 fu.ext1 zu.ext1 automake will expect that the three objects 'mu.$(OBJEXT)', 'fu.$(OBJEXT)' and 'zu.$(OBJEXT)' are to be used in the linking of the 'foo' program, and that the user has provided proper recipes for all those objects to be built at make time, as well as a link command for linking 'foo'. Here is an example of how those declarations could look like: %.$(OBJEXT): %.ext1 my-compiler -c -o $@ $< # We need to compile mu with debugging enabled. mu.$(OBJEXT): mu.ext1 my-compiler -DDEBUG=1 -c -o $@ $< foo_LINK = $(CC) -o $@ In this particular case, the idiom above is basically the same one that would be required in mainline automake (apart for the fact that, there, old-fashioned suffix rules should be used instead of pattern rules). To see what is truly changed with the new algorithm, we have to look at a more indirect usage. Mainline Automake follows the chain of user-defined pattern rules to determine how to build the object file deriving from a source file with a custom user extension; for example, upon reading: %.cc: %.zoo: $(preprocess) $< > $@ bin_PROGRAMS = foo foo_SOURCES = bar.zoo automake knew that it has to bring in the C++ support (compilation rules, requirement for AC_PROG_CXX in configure.ac, etc), and use the C++ linker to link the 'foo' executable. But after the present change, automake *won't follow those implicit chains of pattern rules* anymore; so that the idiom above will have to be re-worked like follows to preserve its intent and behaviour: %.cc: %.zoo: $(preprocess) $< > $@ bin_PROGRAMS = foo # The use of '.cc' is required to let Automake know to bring in # stuff for the handling of C++ compilation, and to use the C++ # linker to build 'foo'. nodist_foo_SOURCES = bar.cc EXTRA_DIST = foo.zoo Finally, we must note another, slightly annoying first consequence of this change of semantics: one can't use anymore "header files" with extensions unrecognized to Automake anymore; for example, an usage like this: # Won't work anymore: will cause errors at make runtime. %.h: %.my-hdr $(preprocess-header) $< >$@ foo_SOURCES = foo.c bar.my-hdr BUILT_SOURCES = bar.h will cause the generated Makefile to die on "make all", with an error like: make[1]: *** No rule to make target 'bar.o', needed by 'zardoz'. Stop. while an usage like this: # Won't work anymore: will cause errors at automake runtime. %.h: %.my-hdr $(preprocess-header) $< >$@ foo_SOURCES = foo.c foo.my-hdr BUILT_SOURCES = foo.h will cause automake itself to die, reporting an error like: object 'foo.$(OBJEXT)' created by 'foo.my-hdr' and 'foo.c' We don't believe the above breakage is a real issue though, because the use case can still be served by placing the "non standard" headers in EXTRA_DIST rather than in a _SOURCES variable: # This will work. %.h: %.my-hdr $(preprocess-header) $< >$@ foo_SOURCES = foo.c EXTRA_DIST = foo.my-hdr BUILT_SOURCES = foo.h A more detailed list of changes follow ... * automake.in (register_language): Don't call 'register_suffix_rule' on the source and object extensions of the registered languages. (handle_single_transform): Implement the new simple algorithm described in details above (plus an hack to continue supporting Vala-related '.vapi' files in _SOURCES variables). Remove the only call ever to ... (derive_suffix): ... this function, which has thus been removed. * lib/Automake/Rule.pm ($_suffix_rules_default, $suffix_rules, register_suffix_rule): Remove. (@EXPORT, reset): Adjust. (define): Don't call 'register_suffix_rule' on the suffixes of target and dependency when a pattern rule is seen. * t/specflg10.sh: Move ... * t/am-default-source-ext.sh: ... to this more proper name, and adjusted. * t/suffix12.sh: Renamed ... * t/suffix-custom-subobj.sh: ... to this, and remove a botched heading comment. * t/suffix3.sh: Adjust. * t/suffix5.sh: Likewise. * t/suffix8.sh: Likewise. * t/suffix10.sh: Likewise. * t/suffix13.sh: Likewise. * t/suffix-chain.sh: Likewise. * t/suffix-hdr.sh: Likewise. * t/suffix-custom.sh: New test. * t/suffix-custom-link.sh: Likewise. * t/suffix-custom-default-ext.sh: Likewise. * t/yacc-lex-cxx-alone.sh: Likewise. * NG-NEWS: Update. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
| * [ng] compile: rename make variable DEFAULT_INCLUDES -> AM_DEFAULT_INCLUDESStefano Lattarini2012-05-291-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The automake-generated variable 'DEFAULT_INCLUDES' has never been documented, and it violates user namespace. So rename it to 'AM_DEFAULT_INCLUDES', to make it clear that it is owned by Automake. We prefer that name to something that would sound more "private", like 'am__default_includes', because there are possibly legitimate usages of that variable on the user's part. * automake.in, lib/am/compile.am: Do the rename. * NG-NEWS, doc/automake-ng.texi: Update. * t/confh4.sh, t/no-extra-makefile-code.sh: Adjust. * syntax-checks.mk (old_vars_checks): Add new check 'sc_no_DEFAULT_INCLUDES'. (modern_DEFAULT_INCLUDES): Define to 'DEFAULT_INCLUDES'. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
| * [ng] compile: rename make variable CONFIG_HEADER -> AM_CONFIG_HEADERSStefano Lattarini2012-05-291-0/+6
|/ | | | | | | | | | | | | | | | | | | | The automake-generated variable 'CONFIG_HEADER' has never been documented, and it violates user namespace. So rename it to 'AM_CONFIG_HEADERS', to make it clear that it is owned by Automake. We prefer that name to something that would sound more "private", like 'am__config_headers', because there are possibly legitimate usages of that variable on the user's part. * automake.in: Do the rename. Also, don't bother explicitly rejecting the setting of 'CONFIG_HEADER' as an anachronism: that warning has been active so long that any still maintained Makefile.am file should have stopped doing that long ago. * NG-NEWS: Update. * lib/am/remake-hdr.am: Update a comment. * syntax-checks.mk (modern.CONFIG_HEADER): New, define to 'AM_CONFIG_HEADERS'. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* cleanup: don't support configure.in anymoreStefano Lattarini2012-05-261-0/+3
| | | | | | | | | | | | | | | | | | | | The autoconf input should be named 'configure.ac' instead. The use of 'configure.in' has been deprecated in Autoconf since at least the 2.13 -> 2.50 transition, and future Autoconf versions (starting with 2.70 probably) will start to warn about it at runtime. * lib/Automake/Configure_ac.pm (find_configure_ac): Don't look for configure.in if configure.ac is not found. (require_configure_ac): On failure, don't tell that "'configure.ac' or 'configure.in' is required", but just that "'configure.ac' is required". * automake.in (@common_sometimes): Don't list 'configure.in'. (scan_autoconf_files): Adjust heading comments. * NG-NEWS: Update. * t/help.sh: Adjust. * t/configure.sh: Adjust as obsolete. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* [ng] news: tweak and reorganize a bitStefano Lattarini2012-05-251-8/+21
| | | | | | | | | | | * NG-NEWS: Move the existing entries describing obsolete features that have been removed out of the section "Miscellaneous" and into a new section (aptly named "Obsolete Features Removed"). Move an entry relevant to support for distribution from the section "Miscellanea" into the section "Distribution". Improve separation of different sections with more use of vertical spacing. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* [ng] news: update w.r.t. recent changes in testsuite harnesses (TESTS based)Stefano Lattarini2012-05-231-15/+34
| | | | | | | | | | | | | * NG-NEWS (Parallel testsuite harness): The 'test-driver' auxiliary script is always distributed when the TESTS variable is seen, even if it is not strictly required. Conditional and dynamic (even computed at make runtime) content of TEST_EXTENSIONS is supported. We are more liberal in accepting TEST_EXTENSIONS entries (it's enough that they start with a dot), and if any of them is invalid, an error is given at make runtime, not at automake runtime. Adjust some existing text to be more clear, thanks to a better use of separating vertical and horizontal space. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* [ng] warns: don't report possible issues with '_DEPENDENCIES' variablesStefano Lattarini2012-05-221-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | This will allow us to move (in future changes) some more processing at make runtime, without having automake complain spuriously (which couldn't be avoided, as to avoid such complaints automake should have access to context and information only available at make runtime -- which is clearly impossible). * NG-NEWS: Document that Automake-NG can be weaker than mainline Automake in diagnostic and early error detection; and also explain why it is so. * automake.in (check_typos): Don't check for possible typos in the '_DEPENDENCIES'. Consequently, don't bother calling 'set_seen' ... (handle_per_suffix_test): ... on the 'LOG_DEPENDENCIES' variables ... (scan_aclocal_m4): ... nor on the 'CONFIG_STATUS_DEPENDENCIES' and 'CONFIGURE_DEPENDENCIES' variables ... (handle_tags): ... nor on the 'TAGS_DEPENDENCIES' variable ... (handle_ltlibraries): ... nor on the 'libfoo_la_DEPENDENCIES' nor the 'EXTRA_libfoo_la_DEPENDENCIES' variables ... (handle_libraries): ... nor on the 'libfoo_a_DEPENDENCIES' nor the 'EXTRA_libfoo_a_DEPENDENCIES' variables ... (handle_programs): ... nor on the 'program_DEPENDENCIES' nor the 'EXTRA_program_DEPENDENCIES' variables. * t/vartypos.sh, t/vartypo2.sh: Relax accordingly. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* [ng] serial-tests: simplify automake-time preprocessingStefano Lattarini2012-05-221-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Prefer make-time and recipe-time processing instead. Note that this change does not (nor is meant to) offer any simplification nor performance enhancement (in fact, it actually complicates the code); its purpose is to continue the trend of "move logic and knowledge out of the automake script and into the generated Makefiles". * NG-NEWS: Report that $(TESTS) and $(XFAIL_TESTS) are not rewritten anymore for $(EXEEXT) appending. * automake.in (handle_tests): Don't rewrite TESTS nor XFAIL_TESTS anymore. * lib/am/check.am: If 'EXEEXT' AC_SUBST is used, process $(TESTS) and $(XFAIL_TESTS) for $(EXEEXT) appending (for entries that are also compiled programs). Do so with the help of ... (am__check_cook_with_exeext_1, am__check_cook_with_exeext): ... this new internal make functions, and place the processed content into (am__cooked_tests, am__cooked_xfail_tests): ... these new internal variables respectively. (check-TESTS): Depend on and use $(am__cooked_tests) rather than plain $(TESTS). While we are at it, remove some code duplication with the help of the new 'is_xfail_test' shell function. * t/check5.sh: Adjust and extend. * t/check7.sh: Likewise. * t/serial-tests.sh: Adjust. * t/exeext4.sh: Adjust. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* [ng] compile: don't support $(INCLUDES) anymore, it's obsoleteStefano Lattarini2012-05-211-0/+6
| | | | | | | | | | | | | | | | | | | | | | The $(INCLUDES) variables has been since long supplanted and obsoleted by the $(AM_CPPFLAGS) variable (in documentation since the commit 3d248ab5 of 2001-06-12, "* automake.texi (Program variables): Document AM_CPPFLAGS. Deprecate INCLUDES", and in code since the commit '1415d22f' of 2002-07-09, "* automake.in (generate_makefile): Suggest using AM_CPPFLAGS instead of INCLUDES". So we can drop support for $(INCLUDES). * NG-NEWS, doc/automake-ng.texi: Update. * automake.in: Drop usages of $(INCLUDES) from several calls to 'register_language'. (generate_makefile): Don't explicitly warn about the definition of the $(INCLUDES) variable anymore. * t/pluseq5.sh: Adjusted to avoid using the INCLUDES variable. * t/werror2.sh: Likewise. * t/warnopts.sh: Likewise, and remove extra-verbose comment. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* [ng] mkinstalldirs: remove support for the script and the variableStefano Lattarini2012-05-211-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | According to our documentation: mkinstalldirs used to be a wrapper around 'mkdir -p', which is not portable. Now we prefer to use 'install-sh -d' when configure finds that 'mkdir -p' does not work, this makes one less script to distribute. For backward compatibility mkinstalldirs is still used and distributed when automake finds it in a package. But it is no longer installed automatically, and it should be safe to remove it. So we remove the 'mkinstalldirs' as well as its companion $(mkinstalldirs) variable from Automake-NG altogether. * NG-NEWS, doc/automake-ng.texi: Update. * automake.in (handle_configure): Don not require nor distribute the 'mkinstalldirs' script anymore. Do not define the $(mkinstalldirs) variable. (@common_files): Do not report 'mkinstalldirs' anymore. Reformat the array while we are at it, to make it easier to add or remove entries in the future. * lib/mkinstalldirs: Delete this file. * Makefile.am (dist_script_DATA): Remove it. (check-coverage-run, recheck-coverage-run): Use $(MKDIR_P), not $(mkinstalldirs), to create the 'cover_db' directory. * syntax-checks.mk (sc_mkinstalldirs): Adjust to verify we have mo more instances of 'mkinstalldirs'. * contrib/multilib/config-ml.in: Remove comment referencing the 'mkinstalldirs' script. * t/auxdir.sh: Adjust to use 'py-compile' rather than 'mkinstalldirs'. * t/auxdir6.sh: Likewise. * t/auxdir7.sh: Likewise. * t/auxdir8.sh: Likewise. * t/pr9.sh: Adjust comments to avoid spuriously triggering the 'sc_mkinstalldirs' maintainer check. * t/mkinst3.sh: Converted to test 'install-sh -d' rather than 'mkinstalldirs'. * t/subdir.sh: Adjust comments. * t/werror.sh: Use 'am_create_testdir=empty' rather than removing the install-sh, depcomp, missing and mkinstalldirs scripts by hand. * t/mkinstall.sh: Remove as obsolete. * t/instman2.sh: Likewise. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* [ng] config.h.{bot,top}: don't support anymore (distribution and deps)Stefano Lattarini2012-05-211-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | The use of those files have been obsoleted since Autoconf commit 5047ea80 of 1994-08-09, "support alternate input file names"; yes, the "1994" in there is not a typo: those files were already deprecated in Autoconf 2.0. It's well past time to remove support for them! For more information, see chapter "Obsolete Constructs", section "acconfig.h" of the Autoconf manual. See also the discussion on automake bug#7919, in particular the message <http://debbugs.gnu.org/7819#20>. * NG-NEWS: Update. * automake.in (handle_configure): Don't automatically distribute the 'config.h.top' and 'config.h.bot' files if they exist, and don't add them to the '%FILES%' transform when processing the 'remake-hdr.am' Makefile fragment. In fact, drop the '%FILES%' transform altogether, since now it would always expand to empty. (@common_sometimes): Don't list 'config.h.top' and 'config.h.bot' anymore. * lib/am/remake-hdr.am (%CONFIG_HIN%): Don't depend on '%FILES%' anymore. That transform has been removed now (and wouldn't be needed anyway). * t/autodist-config-headers.sh: Remove as obsolete. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* [ng] acconfig.h: don't support anymore (distribution and dependencies)Stefano Lattarini2012-05-211-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Support for acconfig.h is still present in Autoconf (version 2.69 at the time of writing), but deprecated by a long time in favour of AH_VERBATIM and AH_TEMPLATE. The deprecation started at least in September 1999 (see Changelog entry "Start to get rid of acconfig.h. It is an anachronism", dated 1999-09-28), and was basically completed by October 1999 (see the ChangeLog entry "Moving most of the task of creating config.h.in from sh to m4", dated 1999-10-01), i.e., before the Autoconf 2.50 release (dated 2001-05-21). For more information, see chapter "Obsolete Constructs", section "acconfig.h" of the Autoconf manual. See also the discussion on automake bug#7919, in particular the message <http://debbugs.gnu.org/7819#20>. * automake.in (handle_configure): Don't automatically distribute the 'acconfig.h' file if it exists, and don't add it to the transform '%FILES%' when processing the 'remake-hdr.am' Makefile fragment. (@common_sometimes): Don't list 'acconfig.h' anymore. Reformat it while we are at it, to make it easier to add or remove entries in the future. * t/autodist-acconfig-no-subdir.sh: Remove as obsolete. * t/autodist-acconfig: Likewise. * t/confh.sh: Adjust. * lib/missing (case $program in autoheader*)): Remove any mention of 'acconfig.h'. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* [ng] cleanup: remove obsolete special-handling of default source for libsStefano Lattarini2012-05-211-0/+8
| | | | | | | | | | | | | | | Since we are already breaking backward-compatibility in small ways in Automake-NG, we can snatch the occasion to do some cleanup of obsolescent behaviours and backward-compatibility hacks. This is the first of such cleanups. * automake.in (handle_source_transform): The default source for libfoo.la is libfoo.c, but for backward compatibility we used look for libfoo_la.c first. Don't do that anymore now. * t/ltlibsrc.sh: Remove as obsolete. * NG-NEWS: Update. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* [ng] check: per-suffix dependencies for test casesStefano Lattarini2012-05-161-0/+4
| | | | | | | | | | | | | | | | | | | | | Akim Demaille asked (in automake bug#11287) for a way to specify extra dependencies for the test cases, depending on their extension (or lack thereof). Now that Automake-NG uses pattern rules instead of old-fashion suffix rules to generate '.log' and '.trs' files from test cases, doing that is trivial. * NG-NEWS: Update. * doc/automake.texi: Document the new feature. * automake.in (handle_per_suffix_test): Mark the contents of the '${pfx}LOG_DEPENDENCIES' variable as processed (required to avoid spurious errors). * lib/am/check2.am (%.log, %.trs): Depend on '$(%PFX%LOG_DEPENDENCIES)'. * t/parallel-tests-per-suffix-deps.sh: New test. * t/parallel-tests-log-compiler-example.sh: Renamed ... * t/parallel-tests-logvars-example.sh: ... to this, and adjusted to be more faithful to the updated documentation. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* [ng] check: AM_LAZY_CHECK="yes", not RECHECK_TESTS="", for lazy re-runsStefano Lattarini2012-05-161-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | This causes a backward-incompatibility with mainline automake, but will also offer a cleaner API and a possibility to further simplify the implementation of the 'check' and 'recheck' targets in the future. * doc/automake.texi, NG-NEWS, t/README: Update. * lib/am/check.am (am__remove_if_not_lazy_check): New internal function, expanding to shell code that removes the given list of files unless the 'AM_LAZY_CHECK' variable is set to "yes". (check-TESTS): Use it instead of the contents of 'RECHECK_LOGS' top decide which .log and .trs files to remove. (RECHECK_LOGS): Don't define anymore. * t/parallel-tests.sh: Adjust. * t/parallel-tests-extra-programs.sh: Likewise. * t/test-trs-recover.sh: Likewise. * t/tap-recheck-logs.sh: Rename ... * t/tap-lazy-check.sh: ... to this, and adjust. * defs: Don't unset 'RECHECK_LOGS'; unset 'AM_LAZY_CHECK' instead. * syntax-checks.mk: Adjust some comments. (sc_no_RECHECK_LOGS): New maintainer check, guard against uses of the now-obsolete 'RECHECK_LOGS' variable. (syntax_check_rules): Add it. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* [ng] check: big refactoring with semantic changes in parallel-tests supportStefano Lattarini2012-05-161-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In this change, we move some further processing related to the parallel testsuite harness support from Automake runtime to make runtime. A welcome collateral effect of this is that we are now able to cope with test scripts whose name ends with several concatenated suffixes. Another (less welcome) collateral effect of the present change is that the user now cannot override TEST_LOGS at make runtime anymore: # This won't work anymore! make check TESTS_LOGS="foo.log bar.log baz.log" This admittedly is a small(ish) regression. But it's not a real problem, since we now explicitly allow *and document* that TESTS can be overridden at runtime without bothering to add the test suffixes to its entries: # This will work even if complete names of the tests are (say) # "foo.test", "bar.test$(EXEEXT)" and "baz$(EXEEXT)". make check TESTS="foo bar baz" With such usage, the user don't have to bother knowing which the exact extensions of each tests are -- which was precisely the only advantage of overriding TEST_LOGS instead of TESTS. * NG-NEWS: Update. * doc/automake.texi: Likewise. * lib/am/header-vars.am (am__strip_suffixes_0, am__strip_suffixes): New internal macros ... * t/internals.tap: ... covered by new checks in this test, and used ... * lib/am/check.am (am__xfail_test_bases): ... to define this new internal variable in term of $(am__cooked_xfail_tests) (and thus eventually of $(XFAIL_TESTS)), and to ... (am__TEST_BASES): ... (re)define this pre-existing internal variable in terms of $(am__cooked_tests) (and thus eventually of $(TESTS)), rather than in terms of $(TEST_LOGS) as was done before. (am__TEST_RESULTS, am__TEST_LOGS): Define in terms of $(am__TEST_BASES). (TEST_LOGS): Define to $(am__TEST_LOGS), for backward-compatibility. ($(TEST_SUITE_LOG)): Depend on $(am__TEST_RESULTS) rather than on $(TEST_LOGS). (am__check_pre): Use $(am__xfail_test_bases) and new temporary shell variable $f2, instead of $(am__cooked_xfail_tests) and $f, to decide whether a test is expected to fail or not. Fix some imprecise or botched comments since we are at it. (check-TESTS, recheck): When re-invoking make recursively, override am__TEST_BASES rather than TEST_LOGS. Relate tweaks. * automke.in (handle_tests): Pass new transform %HANDLE-EXEEXT% when including check.am (used for the definitions of am__xfail_test_bases and am__TEST_BASES). Don't define the TEST_LOGS make variable, nor the auxiliary make variables am__test_logs1, am__test_logs2, etc. Put $(am__TEST_LOGS) and $(am__TEST_RESULTS) among the "mostlyclean" files (rather than "$(TEST_LOGS)" and "$(TEST_LOGS:.log=.trs)" as before). * t/parallel-tests-concatenated-suffix.sh: New test. * t/nodeps.sh: Delete, it was causing too much spurious failures. * t/color2.sh: Avoid a spurious failure by not calling make with the '-e' flag. * t/parallel-tests-exeext.sh: Extended to check the user is not forced to specify the test suffixes nor the $(EXEEXT) suffix when overriding TESTS on the command line. * t/check-concurrency-bug9245.sh: Adjust to the new semantics of "no TEST_LOGS overriding from the command line". * t/parallel-tests-cmdline-override.sh: Likewise. * t/parallel-tests-dynamic.sh: Likewise. * t/parallel-tests-fork-bomb.sh: Likewise. * t/parallel-tests-log-override-2.sh: Likewise. * t/tap-basic.sh: Likewise. * t/test-driver-custom-multitest-recheck2.sh: Likewise. * t/test-missing.sh: Likewise. * t/test-trs-basic.sh: Likewise. * t/test-trs-recover.sh: Likewise. * t/parallel-tests-empty-tests.sh: Likewise, and extended to check that an empty TESTS produces am__cooked_tests, am__TEST_RESULTS, am__TEST_BASES and am__TEST_LOGS that are empty as well. * t/parallel-tests.sh: Adjust to the new semantics of "no TEST_LOGS overriding from the command line". Remove a workaround required only by HP-UX make. Make some "FIXME"-style comments stick out. * t/serial-tests.sh: Adjust some checks that grep the Automake generated Makefile.in. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* Merge branch 'ng/distdir-refactor' into ng/masterStefano Lattarini2012-05-111-0/+26
|\ | | | | | | | | | | | | | | | | | | * ng/distdir-refactor: [ng] dist: optimize calculation of list of distributed file [ng] dist: rename some non-public vars to make clear they are internal [ng] dist: strip duplicates from dist files at make (not automake) runtime [ng] dist: simplify VPATH handling Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
| * [ng] dist: rename some non-public vars to make clear they are internalStefano Lattarini2012-05-061-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The variable $(DISTFILES), $(DIST_COMMON) and $(DIST_SOURCES) have never been documented, and they were always intended to be internal variables. This is absolutely not evident from their names, though. So rename them like this: DISTFILES => am__dist_files DIST_COMMON => am__dist_common DIST_SOURCES => am__dist_sources * NG-NEWS: Update. * automake.in: Adjust code and comments. * lib/am/configure.am, lib/am/data.am, lib/am/java.am, lib/am/lisp.am, lib/am/python.am, lib/am/scripts.am, lib/am/texi-vers.am: Likewise. * lib/am/distdir.am: Likewise, and related variable renamings. And throw in a few improvements to comments since we are at it. * Several tests: Adjust. * syntax-checks.mk: Add rules (and supporting variables) verifying that the obsolete 'DIST*' variables are actually not used anymore. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
| * [ng] dist: simplify VPATH handlingStefano Lattarini2012-05-061-0/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now that we don't need to cater to Sun and Tru64 make, we can simplify and rationalize our VPATH support in the creation of the distribution directory. Since we are at it, we clarify some existing comments, add some new ones, and remove the obsolete ones. This change has a little collateral effect in that after it the use of "bare" wildcards in EXTRA_DIST does not work as intended anymore: # Won't distribute all test files in the builddir anymore. EXTRA_DIST = *.test One will have to use the $(wildcard) GNU make builtin instead, as in: EXTRA_DIST = $(wildcard *.test) This new limitation is deemed acceptable, especially because "bare" wildcards suffer of a number of issues and inconsistencies, and their use is mostly deprecated in favor of the $(wildcard) builtin (refer to the GNU make manual for more details). * lib/am/distdir.am (distdir): Extend the comments explaining why, while filling up the dist directory, we need to check whether any distributed file already exists in there; in particular, refer to some relevant bug numbers and past commit IDs. Remove workarounds and hack required to support automatic VPATH rewrites with Sun and Tru64 make. Refactor the recipe using ... (am__dist_files_1, am__dist_files_2, am__dist_files, am__dist_parent_dirs): This new internal custom GNU make macros. * NG-NEWS: Document that "bare" wildcards are not supported anymore in EXTRA_DIST definition. * t/extra12.sh: Adjust accordingly. * t/nodep.sh: Remove, it's giving too much false positives to be usable. * t/dist-srcdir.sh: New test. * t/dist-srcdir2.sh: New test, xfailing. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>