* doc/automake.texi: Use @acindex for Autoconf macros, and @vindex
for variables (@cvindex was previously used for both). Separate
these two indices in the output. Use @code, @file, and @command
in @cindex lines wherever appropriate so they render nicely.
* automake.in (parse_arguments): Diagnose empty arguments, options
with missing argument, and support `--'.
* aclocal.in (parse_arguments): Diagnose options with missing
argument.
* tests/aclocal.test: More checks.
* tests/automake.test: New file.
* tests/postprog.test: Use `--' for fun.
* tests/Makefile.am (TESTS): Add automake.test.
Report from Eric Blake.
* lib/am/progs.am (installcheck-%DIR%PROGRAMS): Run programs with
/dev/null as input, so we do not hang on programs that read their
input without supporting --help and --version.
* lib/am/scripts.am (installcheck-%DIR%SCRIPTS): Likewise for scripts.
* tests/gnits2.test: Change scriptnok.sh to cat its input.
Report and fix from James Youngman.
* aclocal.in (%file_type, FT_USER, FT_AUTOMAKE_SYSTEM): New variables.
(scan_m4_dirs): New function, extracted from ...
(scan_m4_files): ... here. Call scan_m4_files three times, for each
FT_ constant.
(scan_file): Take a file type argument to update %file_type.
(write_aclocal): Do not m4_include files that are not of type FT_USER.
* tests/dirlist.test: Make sure m4_include is not used for --acdir
files.
* m4/python.m4 (AM_PATH_PYTHON): Fix the invocation of
AC_PATH_PROGS to correctly define PYTHON as `:' when no interpreter
is found (this worked correctly only when a minimal version was
passed to AM_PATH_PYTHON). Report from Stepan Kasal.
(_AM_PYTHON_INTERPRETER_LIST): Define using m4_define_default,
so we can easily override the list from the test suite.
* tests/python11.test: New file.
* tests/Makefile.am (TESTS): Add python11.test.
* aclocal.in ($acdir): Rename as ...
(@system_includes): ... this.
(@user_includes, @automake_includes): New variables.
($default_acdir, $default_dirlist): Remove.
(parse_arguments): Populate @user_includes, @automake_includes, and
@system_includes instead of filling a unique @dirlist array.
("MAIN"): Adjust to scan m4 files in @user_includes,
@automake_includes, and @system_includes.
* aclocal.in: Use Automake::ChannelDefs, and adjust all output
to be done via `fatal', `msg', `verb', or `prog_error'.
(version): New function.
(parse_arguments): Rewrite using Getopt::Long, call &version, and
honor -W and --warning.
($verbose): Remove.
(trace_used_macros): Do not trace the first arguments of macros
for which we do not need it. This caused failures because of
unexpected newlines in the output.
* doc/automake.texi (aclocal options): Document -W and --warning.
* tests/defs.in (ACLOCAL): Always use -Werror, to catch Perl
warnings about uninitialized variables.
* aclocal.in (write_aclocal): Make sure $map_traced_defs{$m} exists
before using it. Suppress a warning observable in test/acloca16.test.
Report from Ralf Wildenhues.
* lib/Automake/XFile.pm (lock): Make sure $ENV{'MAKEFLAGS'} exists
before inspecting it; this fixes "uninitialized value in
concatenation" diagnostics when flock fails.
Report from Gary V. Vaughan.
* aclocal.in: Use strict and -w. Declare local variables with `my',
and get rid of `local'.
(scan_m4_files, add_macro): Reindent these functions while we are
at it.
* lib/install-sh: Fix the dirname emulation to ignore trailing
slashes, i.e., the direname of `a/b/' is `a', not `a/b/'. This
caused `install-sh a/b/' to fail.
* tests/instsh2.test: Augment.
Report from Пухальский Юрий Андреевич.
* automake.in (get_object_extension): The extension to use is know
by the caller, and cannot be selected by looking only at the
target name. Simplify this function to simply conditionally
prepend $U to the given extension.
(handle_programs, handle_libraries, handle_ltlibraries): Hard-code
the extension to use. This way Automake won't mistake a program
named `foo.la' as a libtool library.
* tests/primary3.test: New file.
* tests/Makefile.am (TESTS): Add primary3.test.
* doc/automake.texi (Install): Link to node Extending for examples.
(Extending): More comments about install-data-hook vs
install-exec-hook, and link to Install.
* configure.ac: Export @am_AUTOCONF@.
* tests/defs.in (AUTOCONF): Define as @am_AUTOCONF@, not @AUTOCONF@,
so the test suite runs `autoconf' and not `missing --run autoconf'.
* tests/missing.test, tests/missing2.test: Arrange for missing
to be used in front of autoconf even if the user has exported
AUTOCONF. This fixes two spurious failures reported by
Mark D. Baushke.
* m4/as.m4 (AM_PROG_AS): Check dependency tracking mode for CCAS.
* automake.in (cppasm): Use the dependency tracking more for CCAS.
* doc/automake.texi (Assembly Support): Note that *.S are
preprocessed with CPPFLAGS.
* automake.in (Languages): Split .s (asm) and .S (cppasm) into
separate languages. Make cppasm (Preprocessed Assembler) aware
of CPPFLAGS, AM_CPPFLAGS.
(handle_languages): Fix typo.
(lang_cppasm_rewrite): New function.
* automake.in (handle_languages, define_compiler_variable): Output
Libtool's --tag= option before --mode=compile, because depcomp use
--mode=compile as end marker for libtool arguments.
(define_linker_variable): Likewise before --mode=link, for
uniformity.
* tests/pr307.test: Make sure dependency files are updated. That
was not the case because depcomp thought `--tag=CC' was the
compiler to get dependencies from.
Report from Пухальский Юрий Андреевич.
* configure.ac: Require Perl 5.6.
* lib/Automake/Config.in: Require Perl 5.6 (not done in
lib/Automake/General.pm because it is shared with Autoconf),
and use `our' instead of `use vars'.
* aclocal.in (rel2abs): Remove.
(scan_configure_dep): Use File::Spec->rel2abs instead.
* tests/compile.test, tests/instsh2.test, tests/instspc.test: Use
two consecutive spaces in filename instead of one, to catch mistake
like `echo $val | ...`.
* tests/README: Suggest this.
Suggested by Ralf Wildenhues.
* doc/automake.texi (Timeline): New node. Thanks to Karl and Tom
for their comments on a preliminary version of this, Akim for
digging out some old mails, and Jason Molenda for sending the note
about Automake in Alias to Tom.
(Releases): Rename `ac' to `acl', suggested by Akim.
* doc/automake.texi (Dependencies): Link to Dependency Tracking
Evolution.
(Dependency Tracking Evolution): Link to GNU make, Sources (for
BUILT_SOURCES), and update the paragraph about the "plan" to
inline dependency tracking with gcc3.
* doc/automake.texi (History): New node.
(Dependency Tracking Evolution): New node, filled with a Texinfo
version of Tom Tromey's ``Dependency Tracking in Automake''
document, initially published on the Automake homepage on
2001-06-29.
* m4/minuso.m4 (AM_PROG_CC_C_O): Make sure AC_PROG_CC is never
called after this macro.
* tests/distname.test, tests/subdir5.test, tests/subdir8.test,
tests/subobj.test, tests/subobj4.test, tests/subobj5.test,
tests/subobj6.test: Adjust.
Report from Ralf Wildenhues.
* lib/Automake/Channels.pm (_print_message): Handle uniq_part with
arbitrary string.
* automake.in (lang_c_rewrite): Set uniq_part so that the
AM_PROG_CC_C_O diagnostic is output only once for subdir objects
and only once for objects with per-target flags.
* automake.in (lang_c_rewrite): Print files and locations
for AM_PROG_CC_C_O errors.
(handle_single_transform): Pass $var to &$subr so it can
print locations.
* automake.in (handle_clean): Sort rm commands output for
mostlyclean-generic, clean-generic, distclean-generic, and
maintainer-clean-generic.
Report from Bob Friesenhahn.
* automake.in (lang_c_rewrite): Do not require AM_PROG_CC_C_O for
libtool objects.
(handle_single_transform): Pass nonansi_obj to &$subr so
lang_c_rewrite can distinguish libtool objects.
* tests/libtool7.test: Use subdir-objects without using AM_PROG_CC_C_O.
Report from Gary V. Vaughan and Patrick Welche.
* tests/missing3.test: New file (check for Paolo's change below).
* tests/Makefile.am (TESTS): Add missing3.test.
* missing: Handle all command line options together. Add a
separate case statement to detect failed runs, and fail
silently there if --help or --version is passed to the program.
* lib/Automake/DisjConditions.pm (new): Precompute 'string' and 'conds'
in place instead of as a side-effect of calling ->string and ->conds.
This saves method-lookup time, simplify ->string and ->conds, and
allows to create the object only when necessary.
(string, conds): Simplify, now that the result is precomputed.
* lib/Automake/Variable.pm (%_primary_dict): New hash.
(_new, variable_delete): Update %_primary_dict.
(variables): Accept an optional $suffix argument.
* automake.in (check_typos, am_primary_prefixes): Use that
optional argument to restrict the loops over the variables we are
interested in.
Speed up make_paragraphs.
* automake.in (handle_languages): Always define SUBDIROBJ,
DERIVED-EXT, and DIST_SOURCE, because the new transform() will
abort on unknown tokens.
(transform): Rewrite with different semantics.
(make_paragraphs): Make a single pass over the paragraph to
transform all template tokens instead of doing as much passes as
possible token.
* automake.in ($libtool_new_api): New variable.
(handle_libtool): Do not libtool's aux files if $libtool_new_api.
(scan_autoconf_traces) <LT_SUPPORTED_TAG>: Set $libtool_new_api.
(scan_autoconf_traces) <AC_REQUIRE_AUX_FILE>: Remember only the
first location for required files.
Support AC_REQUIRE_AUX_FILE, and fix requirement of AM_PROG_CC_C_O.
* automake.in (%required_aux_file): New hash.
(handle_single_transform, lang_c_rewrite): Do note explicitly
require 'compile', this is now an internal detail of
AM_PROG_CC_C_O.
(scan_autoconf_traces): Trace AC_REQUIRE_AUX_FILE and fill
%required_aux_file.
(scan_autoconf_files): Require all %required_aux_file instead
of explicitly requiring install-sh and missing.
(generate_makefile): Do not require config.sub and config.guess.
(handle_single_transform): Pass $have_per_exec_flags to
&lang_c_rewrite.
* configure.ac, m4/init.m4: Require Autoconf 2.59a.
* doc/automake.texi (Optional): Document AC_REQUIRE_AUX_FILE.
(Program and Library Variables, Options, Public macros):
AC_PROG_CC_C_O is required when per-target flags or subdir-objects
are used with C sources.
* m4/minuso.m4: Require `compile' using AC_REQUIRE_AUX_FILE.
* m4/missing.m4: Require `missing' similarly.
* tests/acsubst2.test, tests/distcom2.test, tests/distcom6.test,
tests/specflg.test, tests/specflg2.test, tests/specflg3.test,
tests/specflg6.test, tests/specflg7.test, tests/specflg8.test,
tests/specflg9.test, tests/subobj7.test, tests/target-cflags.test,
tests/yacc6.test: Fix to use AM_PROG_CC_C_O.
* automake.in (yacc_lex_finish_helper): Fix definition of YLWRAP
when ylwrap is installed in a default aux dir found in a parent
package.
* tests/subpkg.test: Augment to check that YLWRAP is installed
properly.
* doc/automake.texi (Yacc and Lex): ylwrap is not sought is the
current directory.
Report from Norman Gray.
* automake.in (AC_CANONICAL_HOST, AC_CANONICAL_SYSTEM): Replace by ...
(AC_CANONICAL_BUILD, AC_CANONICAL_HOST, AC_CANONICAL_SYSTEM): ... these.
(scan_autoconf_traces): Scan for the latter three macros instead of
the former two.
(make_paragraphs): Adjust definitions of %BUILD%, %HOST%, and %TARGET%.
* tests/hosts.test: New file.
* tests/Makefile.am (TESTS): Add hosts.test.
Report and test case from Norman Gray.
Disable Lex and Yacc rules whenever possible if AM_MAINTAINER_MODE
is used and maintainer-mode disabled.
* automake.in (Automake::struct): Define nodist_specific.
Set it in languages yacc, yaccxx, lex, and lexxx.
(register_language): Default nodist_specific to 0.
(handle_single_transform): Honor nodist_specific.
* lib/am/yacc.am (am__skipyacc): Define this in maintainer mode.
(%EXT%%DERIVED-EXT%, %OBJ%): Use $(am__skipyacc) to disable these
rules when needed.
* lib/am/lex.am (am__skiplex): Define this in maintainer mode.
(%EXT%%DERIVED-EXT%, %OBJ%): Use $(am__skiplex) to disable these
rules when needed.
* tests/mmodely.test: New file.
* tests/pr204.test: Augment to check AM_MAINTAINER_MODE and nodist_
parsers.
* tests/Makefile.am (TESTS): ADd mmodely.test.
* doc/automake.texi (Yacc and Lex): Note dependence on maintainer mode.
* lib/am/yacc.am, lib/am/lex.am: Only compile these targets in
maintainer mode.
* doc/automake.texi (Yacc and Lex): Note dependence on maintainer mode.
* NEWS: Note same dependency.
* tests/mmode-lexyacc.test: New file.
* m4/mkdirp.m4 (AM_PROG_MKDIR_P): Remove `.' from the mkdir_p
definition, it causes `make install' to fails for user with no
right to write in the source-tree.
* automake.in (handle_configure): Do not use mkdir_p in the
definition for $(mkdir_p).
Report from Harlan Stenn.
* lib/am/distdir.am (distdir): Always use $(DIST_SUBDIRS) now
that it is always defined. This is less confusing for users
reading the generated Makefiles.
* automake.in (handle_dist): Do not substitute DIST_SUBDIR_NAME.