* lib/am/distdir.am (dist-xz): Do not hard-code xz's -9: that
made it impossible to override. Instead, use its XZ_OPT envvar,
defaulting to -9 if not defined. Thus no change in behavior
when XZ_OPT is not set, and now, this rule honors the setting
of that envvar when it is set. Suggested by Lasse Collin.
(dist-bzip2): Likewise for it's corresponding envvar: BZIP2.
* NEWS (Miscellaneous changes): Mention it.
* doc/automake.texi (The Types of Distributions): Describe the
newly enabled environment variables.
* m4/python.m4 (AM_PATH_PYTHON): Add python2.7 and python3.2 to
_AM_PYTHON_INTERPRETER_LIST. Since we are at it, break a long
line and fix indentation.
* THANKS: Updated.
* tests/help4.test: Fix broken sed commands used to strip `-W...'
flags away from "$AUTOMAKE" and "$ACLOCAL".
* tests/help3.test: Likewise, and fix a botched comment.
* tests/help.test: Likewise. Also, use "AUTOMAKE_fails ..."
instead of "$AUTOMAKE ... && Exit 1", for consistency and to
please maintainet-check.
* tests/help2.test: Likewise.
* tests/help.test: To run automake, use `$AUTOMAKE' with all `-W'
flags stripped away rather than hard-coded `automake-$APIVERSION',
to better honour user-overrides. Similarly for aclocal.
* tests/help2.test: Likewise.
* tests/help3.test: Likewise.
* tests/help4.test: Likewise.
Ralf Wildenhues [Sun, 3 Oct 2010 09:45:31 +0000 (11:45 +0200)]
maintainer-check coverage for variables before rules.
* Makefile.am (sc_ensure_testsuite_has_run): Suggest keeping
around the test directories.
(sc_tests_makefile_variable_order): New rule with a heuristic to
catch ordering violations.
Ralf Wildenhues [Sun, 3 Oct 2010 09:42:12 +0000 (11:42 +0200)]
Document and fix expansion of variables before rules.
* doc/automake.texi (General Operation): Document that variables
are expanded before rules.
* lib/am/check.am (am__check_post): Reword a bit so it does not
get matched as a rule.
Suggestion by Ben Pfaff.
Ralf Wildenhues [Sat, 2 Oct 2010 18:25:53 +0000 (20:25 +0200)]
Implement EXTRA_maude_DEPENDENCIES for programs and libraries.
* automake.in (handle_programs, handle_libraries)
(handle_ltlibraries): Mark EXTRA_*_DEPENDENCIES as recognized.
* doc/automake.texi (Linking, Program and Library Variables)
(LIBOBJS): Document EXTRA_*_DEPENDENCIES.
* lib/am/library.am (%LIBRARY%): Also depend on
$(EXTRA_%XLIBRARY%_DEPENDENCIES).
* lib/am/ltlibrary.am (%LTLIBRARY%): Also depend on
(%XLTLIBRARY%_DEPENDENCIES).
* lib/am/program.am (%PROGRAM%%EXEEXT%): Also depend on
$(EXTRA_%XPROGRAM%_DEPENDENCIES).
* tests/extradep.test, tests/extradep2.test: New tests.
* tests/Makefile.am (TESTS): Update.
* NEWS: Update.
Suggested by Eric Blake.
Ralf Wildenhues [Sat, 2 Oct 2010 18:00:02 +0000 (20:00 +0200)]
Merge branch 'sanity-sleep-fix-master'
* sanity-sleep-fix-master:
tests: avoid running into timing issues due to sanity change.
Fix timestamp issues by ensuring configure takes at least a second.
Ralf Wildenhues [Sat, 2 Oct 2010 17:58:39 +0000 (19:58 +0200)]
tests: avoid running into timing issues due to sanity change.
* tests/acloca10.test, tests/acloca18.test, tests/aclocal9.test:
Insert strategic sleep before aclocal reruns, to ensure files
are newer.
* tests/python11.test: Use --force for repeated autotools runs.
Reports from the NixOS Hydra build daemon via Ludovic Courtès.
Ralf Wildenhues [Sat, 2 Oct 2010 16:58:56 +0000 (18:58 +0200)]
Fix timestamp issues by ensuring configure takes at least a second.
* m4/sanity.m4 (AM_SANITY_CHECK): If we didn't sleep here,
start a sleep in the background and wait for it to finish
before creating config.status, hopefully fixing all spurious
testsuite failures involving botched time stamps.
* NEWS: Update.
Reports by Ludovic Courtès, Peter Breitenlohner, and others.
parallel-tests: avoid command-line length limit issue.
* automake.in (handle_tests): New argument $makefile, new
substitution %MAKEFILE%.
(generate_makefile): Adjust.
* lib/am/check.am [%?PARALLEL_TESTS%] (check-TESTS): Pass
sanitized TEST_LOGS value as makefile snippet on standard
input to $(MAKE), to avoid exceeding the command line limit on
w32 (MSYS).
* NEWS: Update.
Report by Bob Friesenhahn.
* tests/help.test: Create a new empty directory and chdir into
it, rather than removing already present files. Run the aclocal
and automake wrapper scripts directly, instead of relying on
$AUTOMAKE and $ACLOCAL. Be sure to correctly match literal dots
in aclocal's and automake's stderr. Add a trailing `:' command.
* tests/help2.test: New test, checking that options `--help' and
`--version' works in directories with broken `configure.in'.
* tests/help3.test: New test, checking that options `--help' and
`--version' take precedence on the other options.
* tests/help4.test: New test, checking that the first among the
`--help' and `--version' options to be specified on the command
line wins.
* tests/Makefile.am (TESTS): Updated.
Manual: be more agnostic w.r.t. version control system used.
* doc/automake.texi (Basics of Distribution): Also refer to `.svn'
directories as a type of probably-unwanted files that are copied
regardless when adding directories to EXTRA_DIST.
(The dist Hook): Show a dist-hook example which removes Subversion
`.svn' private directories from distdir, rather than CVS private
directories.
(missing and AM_MAINTAINER_MODE): Try to be more agnostic w.r.t.
the version control system used.
Perl modules: remove references to "Automake CVS repository".
* lib/Automake/Channels.pm: Update comments to refer to "Automke's
git repository" rather than to "Automake's CVS repository".
* lib/Automake/Configure_ac.pm: Likewise.
* lib/Automake/FileUtils.pm: Likewise.
* lib/Automake/Struct.pm: Likewise.
* lib/Automake/XFile.pm: Likewise.
* lib/Automake/Version.pm (=head1 DESCRIPTION): Refer to "git
branches" rather than "CVS branches".
* .cvsignore, doc/.cvsignore, lib/.cvsignore, lib/am/.cvsignore,
lib/Automake/.cvsignore, lib/Automake/tests/.cvsignore,
m4/.cvsignore, tests/.cvsignore: Files deleted. Even when using
savannah's CVS readonly mirror there's no way to commit back to
the real repository, so this files are not worth maintaining or
keeping around.
Peter Rosin [Tue, 21 Sep 2010 18:59:54 +0000 (20:59 +0200)]
compile: implement library search to support MSVC static linking
* lib/compile (func_cl_wrapper): Implement library search and
-static option so that the user can select whether to prefer
dll import libraries or static libraries. This enables MSVC to
link against dlls generated by libtool without requiring libtool
or workarounds such as -lfoo.dll etc. Makes the tests/static.at
test case in libtool pass.
* tests/compile3.test: Don't trip up if there happens to exist
a "foo" library in the library search path.
* tests/compile6.test: New test, verifying the library search.
* tests/Makefile.am (TESTS): Update.
* m4/dmalloc.m4 (AM_WITH_DMALLOC): Refer only to the dmalloc site
`http://www.dmalloc.com', not to the dmalloc tarball there (which
seems to have been removed, substituted by multiple release
tarballs now).
* HACKING (Administrivia): Fixed typo `NES' for `NEWS'.
(Naming): Do not refer to a convention dating back to Feb 2001
as "very new". Related rewording.
(Working with Git): Now we require autoconf 2.67 for bootstrap,
so use that version in the examples.
* tests/colon4.test: Fix botched editing to `configure.in'
that made the test useless. Since we are at it, improve
comments and make grepping of generated Makefile.in slighty
stricter.
Regression introduced by change "Modernize, improve and/or
extend tests `colon*.test" (Stefano Lattarini, 2010-08-08).
* m4/silent.m4 (AM_SILENT_RULES): Use `AS_HELP_STRING' to format
help message regarding configure options `--enable-silent-rules'
and `--disable-silent-rules'. Also throw in a couple of cosmetic
changes in the related `case' statement (indentation, balancing
of parentheses).
* THANKS: Update.
Make some `confh*.test' tests more "semantic" (plus tweakings).
* tests/confh.test: Run "autoconf", "configure" and "make check",
instead of munging/grepping the generated `Makefile.in'.
* tests/confh4.test: Relax the grepping of Makefile.in w.r.t.
white spaces. Do not create usless dummy source file `foo.c'
and useless dummy header file `acconfig.h'.
(configure.in): Remove superfluous call to `AC_OUTPUT'.
* tests/confh6.test: Add trailing `:' command.
* tests/confh7.test: In comments, add reference to ...
* tests/confh8.test: ... this new test, "semantic" sister
of `confh7.test'.
* tests/Makefile.am (TESTS): Updated.
Prompted by a report from Ralf Wildenhues.
* automake.in (handle_tests): New argument $makefile, new
substitution %MAKEFILE%.
(generate_makefile): Adjust.
* lib/am/check.am [%?PARALLEL_TESTS%] (check-TESTS): Pass
sanitized TEST_LOGS value as makefile snippet on standard
input to $(MAKE), to avoid exceeding the command line limit on
w32 (MSYS).
* NEWS: Update.
Report by Bob Friesenhahn.
Peter Rosin [Thu, 2 Sep 2010 19:04:00 +0000 (21:04 +0200)]
Make ar-lib support backslashed files in archives.
* lib/ar-lib: If an archive member contains a backslash, make sure
it is escaped when the archive member is extracted.
* tests/ar-lib.test: Test the above.
Peter Rosin [Tue, 31 Aug 2010 19:57:22 +0000 (21:57 +0200)]
Do file name conversion for object files in the compile wrapper.
* lib/compile (func_cl_wrapper): Do file name conversion for object
files (i.e. extensions .obj, .OBJ, .o and .O) if needed.
* lib/compile4.test: Test the above.
* tests/missing6.test: Fix the hack used to edit `configure.in',
to avoid producing a configure script that breaks with shells
that do not support $LINENO. Also throw in a couple of cosmetic
changes.
Ralf Wildenhues [Sat, 21 Aug 2010 05:27:12 +0000 (07:27 +0200)]
Improve robustness of mdate-sh script.
* lib/mdate-sh: Sanitize zsh behavior on startup, to ensure
$ls_command is word-split properly upon invocation.
(error): New function.
(main): Use it. Improve error checking to avoid endless loop
in case $ls_command gave bogus output. Fix eval quotation.
* tests/mdate6.test: New test, to expose eval quotation error.
* tests/Makefile.am: Update.
* tests/depcomp3.test: Do not uselessly escape the character `$'
in makefile rules, when it's used to expand a make macro.
* tests/depcomp5.test: Likewise.
Docs: clarify how to avoid automatic dependencies tracking.
* doc/automake.texi (Automatic dependency tracking): Mention that
automatic dependencies tracking is enabled by default, but that
the package developer can disable it altogether. Add a reference
to the proper section for a more in-depth explanation.
Docs: clarify how to avoid automatic dependencies tracking.
* doc/automake.texi (Automatic dependency tracking): Mention that
automatic dependencies tracking is enabled by default, but that
the package developer can disable it altogether. Add a reference
to the proper section for a more in-depth explanation.
Peter Rosin [Mon, 16 Aug 2010 11:50:32 +0000 (13:50 +0200)]
Optimize compile script on MSYS.
* lib/compile (func_file_conv): Add new argument 'lazy' which
takes an optional list of conversion types where the requested
conversion isn't needed.
(func_cl_wrapper): Take advantage of the above for cases where
MSYS is doing the conversion for us.
Suggested by Ralf Wildenhues.
Peter Rosin [Mon, 16 Aug 2010 07:59:10 +0000 (09:59 +0200)]
Support more C++ file extensions for MSVC in the compile script.
* lib/compile (func_cl_wrapper): MSVC only recognizes the .cpp
file extension as C++, unless it's given a hint. So hint about
.cc, .CC, .cxx, .CXX, c++ and C++. Also do path conversion on
.c, .cpp, .CPP, .lib, .LIB and .Lib files.
* lib/compile3.test: Test the C++ hinting.
Peter Rosin [Thu, 12 Aug 2010 16:01:18 +0000 (18:01 +0200)]
Enable the use of "link -lib" as the wrapped archiver.
* lib/ar-lib: Enable the use of "link -lib" as the wrapped
archiver, as well as allowing some other options to be passed
through to the wrapped archiver.
* tests/ar-lib.test: Test the above.
* tests/colon.test: Rely on the `configure.in' stub created by
`./defs', rather than writing one from scratch. Do not create
a useless dummy file. Add trailing `:' command.
* tests/colon4.test: Enable the `errexit' shell flag, and
related changes. Rely on the `configure.in' stub created by
`./defs', rather than writing one from scratch.
* tests/colon7.test: Enable `errexit' shell flag, and related
changes. Improve the generated `configure.in' file. Add
trailing `:' command.
* tests/colon2.test: Likewise. Also, add some new checks.
* tests/colon5.test: Improve the generated `configure.in' file.
Add new, much deeper checks. Add trailing `:' command.
* tests/colon6.test: Likewise.
* tests/colon3.test: Improve the generated `configure.in' file.
Prefer perl over pipelined grep. Made stricter. Other changes,
cosmetic and not.
Minor improvements and fixes in tests `depcomp*.test'.
* tests/depcomp.test: Do not create useless dummy source files.
Add a trailing `:' command.
* tests/depcomp2.test: Use `unset' on the CFLAG variable to ensure
it's not in in the environment, rather tthan exporting it with an
empty value. Do not pass CC=gcc to configure, as that's already
done in ./defs since we have gcc in $required. Ensure verbose
printing of captured stderr, and normalize its checking. Add a
trailing `:' command.
* tests/depcomp3.test: Quote literal dots and dollar characters in
grep regexps. Always use `: >' rather than `touch' to create empty
files. Explicitly declare phony targets as such in the created
Makefile.am. Add a trailing `:' command.
* tests/depcomp4.test: Quote literal dots and dollar characters in
grep regexp. Explicitly declare phony targets as such in the
created Makefile.am. Ensure verbose printing of captured makes'
stoud/stderr. Add a trailing `:' command.
* tests/depcomp5.test: Move setting of `errexit' shell flag earlier
in the script (just after inclusion of ./defs). Quote literal dots
and dollar characters in grep regexps. Explicitly declare phony
targets as such in the created Makefile.am. Add a trailing `:'
command.
* tests/depcomp6.test: Consistenty use m4 quoting in the generated
configure.in. Cosmetic fixes to spacing. Make the "dummy" `if'
statement required by OpenBSD's sh `set -e' more robust, and add
explanatory comments to it.
* tests/depcomp7.test: Likewise, and add a trailing `:' command.
Modernize, improve and extend tests for PR (`pr[0-9]*.test').
* tests/pr2.test: Add trailing `:' command.
* tests/pr229.test: Likewise.
* tests/pr401.test: Likewise.
* tests/pr401b.test: Likewise.
* tests/pr401c.test: Likewise.
* tests/pr300-prog.test: Likewise, plus cosmetic changes in
spacing.
* tests/pr300-lib.test: Likewise.
* tests/pr300-ltlib.test: Likewise, and ensure verbose printing
of captured make stdout.
* tests/pr211.test: Add trailing `:' command. Also, use the
`configure.in' stub created by ./defs, rather than writing it
from scratch.
* tests/pr204.test: Likewise, plus cosmetic spacing changes.
* tests/pr287.test: Likewise, and move setting of `errexit' shell
flag earlier in the script (just after inclusion of ./defs).
* tests/pr220.test: Make grepping of Automake's stderr stricter.
Also, add trailing `:' command, and cosmetic changes in spacing.
* tests/pr224.test: Move setting of `errexit' shell flag earlier
in the script (just after inclusion of ./defs). Do not export
`CC=gcc' to configure explicitly (it's already exported globally
in ./defs, since we have "gcc" in $required). Use the stub for
`configure.in' created by ./defs, rather than writing it from
scratch. Do not create dummy files required by "gnu" mode (e.g.
README, NEWS), since we run automake in foreign mode anyway.
* tests/pr72.test: Enable `errexit' shell flags, and related
changes. Extend existing checks a bit.
* tests/pr9.test: Likewise. Also, avoid obolescent constructs in
the generated `configure.in', and extend existing checks over the
generated tarball a bit.
* tests/pr87.test: Enable `errexit' shell flags, and related
changes. Add a trailing `:' command. Also, do not create dummy
files required by "gnu" mode (e.g. README, NEWS), since we run
automake in foreign mode anyway.
* tests/pr243.test: Avoid obolescent constructs in the generated
`configure.in'. Enable the `errexit' shell flag, and related
changes. Cosmetic changes to spacing, add trailing `:' command,
and add a "FIXME" comment.
* tests/pr266.test: Likewise, and add explicit command line switch
`--enable-dependecy-tracking' to the ./configure call.
* tests/pr279.test: Avoid obolescent constructs in the generated
`configure.in'; also, use the `configure.in' stub created by
./defs, rather than writing it from scratch. Enable `errexit'
shell flag, and related changes. Add trailing `:' command.
* tests/pr279-2.test: Likewise, and make grepping of Makefile.in
stricter.
* tests/pr307.test: Move setting of `errexit' shell flag earlier
in the script (just after inclusion of ./defs). Escape literal
dots in grep regular expressions. Also, add a trailing `:'
command, and cosmetic changes to spacing.
* tests/asm.test: Use configure.in stub generated by ./defs,
and avoid obsoleted autoconf constructs. Make grepping of
Automake stderr stricter. Do not create useless source file.
Improve verbose messages. Minor cosmetic changes. Tell to
keep it in sync with other sister tests asm*.test.
* tests/asm2.test: Likewise.
* tests/asm3.test: Likewise.
Modernize, improve and/or extend test scripts `conf*.test'.
* tests/confh5.test: Cosmetic changes.
* tests/conff.test: Likewise.
* tests/confdeps.test: Likewise.
* tests/conflnk.test: Likewise.
* tests/conflnk2.test: Likewise.
* tests/confsub.test: Likewise.
* tests/confvar.test: Likewise, and make grepping of Makefile.in
stricter.
* tests/confvar2.test: Likewise.
* tests/conflnk3.test: Cosmetic changes, and re-enable a temporarly
disabled test (which didn't work with autoconf <= 2.59, but now we
are requiring autoconf 2.62, so...)
* tests/conflnk4.test: Cosmetic changes, and extend existing tests
accordingly to "TODO" comments.
* tests/conff2.test: Make grepping of Automake's stderr stricter.
Add some comments explaining why we don't use the `configure.in'
stub preset be ./defs.
* tests/confh.test: Use the `configure.in' stub created by ./defs,
rather than writing one from scratch, and do not call AC_OUTPUT.
Enable `errexit' shell flag, and related changes. Prefer diff over
cmp to compare text files. Prefer perl over sed to fetch the value
of $(DIST_COMMON) from Makefile.in. Make grepping of the contents
of $(DIST_COMMON) stricter.
* tests/confh4.test: Use the `configure.in' stub created by ./defs,
rather than writing one from scratch. Make grepping of Makefile.in
stricter.
* tests/confh5.test: Make grepping of `config.h' stricter. Add a
comment.
* tests/configure.test: Avoid obsolescent constructs in generated
`configure.ac'. Do not write `configure.in' two times. Escape
literal dots in grep regular expressions.
* tests/confincl.test: Enable `errexit' shell flag, and related
changes. Prefer fgrep over grep. Other cosmetic changes.
* tests/config.test: Renamed to ...
* tests/confh6.test: ... this. Fix m4 quoting in `configure.in',
and make grepping of `config.h' and `config.h.in' stricter.
* tests/conf2.test: Renamed ...
* tests/confh7.test: ... to this. Use the `configure.in' stub
created by ./defs, rather than writing one from scratch. Try to
run the checks both with and without AC_PROG_CC and AC_OUTPUT in
`configure.in'.
* tests/Makefile.am (TESTS): Updated.
Tweak, extend and improve tests `cond[a-z]*.test'.
* tests/condd.test: Add trailing `:' command. Typofix in
comment.
* tests/condhook.test: Make sure target `install-data-hook' is
not called by `make install', but that data files are installed.
Use proper m4 quoting in configure.in. Add trailing `:' command.
* tests/condhook2.test: New test, sister test of condhook, with
inverted semantic.
* tests/condinc2.test: Use proper m4 quoting in configure.in.
Prefer trailing `:' command over trailing `Exit 0'.
* tests/condman2.test: Enable errexit shell flag, and related
changes. Add trailing `:' command.
* tests/condman.test: Likewise. Also, do not create useless
dummy manpages, and use proper m4 quoting in configure.in.
* tests/condman3.test: New test, similar to condman.test, but
it also runs ./configure and "make install", and check the
installed files.
* tests/Makefile.am (TESTS): Updated.
* tests/all.test: Keep only (x)failing part of the test. Working
checks moved out to ...
* tests/all2.test: ... this new test.
* tests/Makefile.am (TESTS): Updated.
Modernize, improve and extend tests `subobj*.test'.
* tests/subobjname.test: Add trailing `:' command.
* tests/subobj.test: Make grepping of `Makefile.in' stricter.
Escape literal dots in grep regexps.
* tests/subobj2.test: Add trailing `:' command. Do not use the
unportable fgrep option `-e'.
* tests/subobj3.test: Add trailing `:' command.
(configure.in): Use proper m4 quoting, and avoid obsolescent
constructs.
* tests/subobj8.test: Likewise. Also, enable `errexit' shell
flag, with related changes
* tests/subobj4.test: Likewise. Also, make grepping of
`Makefile.in' stricter.
* tests/subobj5.test: Add trailing `:' command. Move setting of
`errexit' shell flag earlier in the script (just after inclusion
of ./defs).
(configure.in): Use the stub created by `./defs', rather than
writing it from scratch, and avoid obsolescent constructs.
* tests/subobj6.test: Add trailing `:' command. Move setting of
`errexit' shell flag earlier in the script (just after inclusion
of ./defs). Do not create useless dummy ac-init file `f'.
* tests/subobj7.test: Do not create useless dummy ac-init file
`f'.
(configure.in): Use the stub created by `./defs', rather than
writing it from scratch, and avoid obsolescent constructs.
* tests/subobj9.test: Move setting of `errexit' shell flag earlier
in the script (just after inclusion of ./defs). Fail the test if
`make distcheck' fails. Ensure verbose printing of captured make
stdout. Avoid uselsss fork by doing simple grep instead of using
test -n "`COMMAND | grep ...`".
(configure.in): Normalize the call to AC_INIT w.r.t. other tests.
(Makefile.am): Explicitly mark target "print" as phony.
* tests/subobj10.test: Removed duplicated call to `set -e'. Add
trailing `:' command.
(configure.in): Normalize the call to AC_INIT w.r.t. other tests.
* bootstrap: Do not remove `lib/Automake/Config.pm' anymore,
since we don't generate it. Correctly quote arguments of
`eval' builtin. Fixed a botched error message. Removed an
extra blank line.
Bootstrap: let the user choose which autoconf to use.
* bootstrap ($AUTOCONF): New variable, from the environment.
($AUTOM4TE): Likewise, for clarity.
Use "$AUTOCONF" instead of calling "autoconf" directly.