* automake.in (handle_ltlibraries): Also grep AM_LDFLAGS for `-module'.
* tests/stdlib2.test: New file.
* tests/Makefile.am (TESTS): Add stdlib2.test.
Report from Kevin P. Fleming.
For Debian Bug #213524:
* lib/am/texinfos.am (install-info-am, uninstall-info-am): Merge
stderr and stdout, and grep only the first line while testing
install-info --version's output. This revert part of the change
from 2001-05-18.
Akim Demaille [Wed, 1 Oct 2003 07:14:32 +0000 (07:14 +0000)]
* lib/Automake/XFile.pm: Use Errno.
(lock): Ignore ENOLCK errors. Problem reported Andreas Schwab in
<http://mail.gnu.org/archive/html/bug-autoconf/2003-09/msg00141.html>.
* automake.in (handle_clean): Take $makefile as argument, and
define %MAKEFILE% while processing clean.am.
(generate_makefile): Pass $makefile to handle_clean.
* lib/am/clean.am (distclean, maintainer-clean): Erase %MAKEFILE%,
not Makefile.
* tests/gnumake.test: New file.
* tests/Makefile.am (TESTS): Add gnumake.test.
Report from Braden N. McDaniel.
* doc/fdl.texi: New file.
* doc/Makefile.am (automake_TEXINFOS): New variable.
* doc/automake.texi (Copying This Manual): New appendix, include
fdl.texi.
(Macro and Variable Index, General Index): Move as subsections of ...
(Indices): This new appendix.
* aclocal.in (write_aclocal): Consider files with relative
paths as local to the project, i.e., subject to m4_include.
* tests/subpkg.test (ACLOCAL_AMFLAGS): Make sure m4_include
is also used for .m4 files in the outer project.
Support for multiple inputs in AC_CONFIG_FILES.
Requested long ago by Harlan Stenn.
* automake.in (handle_dist): Remove unused argument $makefile.
(handle_subdirs): Expect SUBDIRS elements in $relative_dir,
not $am_relative_dir.
(rewrite_inputs_into_dependencies): Allow $add_srcdir to
be a filename that must always be prefixed by $(srcdir) or
$(top_srcdir).
(handle_configure, generate_makefile): Revamp to make the
Makefile.am, Makefile.in, Makefile more independent.
(locate_am): New function.
(scan_configure_dep, parse_arguments): Use locate_am.
(MAIN): Adjust call to generate_makefile.
* lib/am/configure.am: Remove %MAKEFILE-IN% from the dependencies
of %MAKEFILE%. %MAKEFILE-IN% is already in %MAKEFILE-DEPS%.
* tests/output6.test, tests/output7.test: New files.
* tests/Makefile.am (TESTS): Add them.
* automake.texi (Requirements) <AC_CONFIG_FILES>: Document how
multiple inputs are scanned.
* Makefile.am (FETCHFILES, fetch): Do not fetch lib/Automake/XFile.pm
and lib/Automake/Struct.pm from Autoconf.
* lib/Automake/XFile.pm: Update comment, Automake is now
the master for this file. Cosmetic changes.
Changes to m4_included files should also cause aclocal.m4 to change.
* aclocal.in (m4_include_rx): New variable.
(scan_configure_dep): New function.
(scan_configure, add_file): Simplify using scan_configure_dep.
* tests/Makefile.am (TESTS): Add acloca13.test.
* tests/aclocal13.test: New file.
* aclocal.in (configure_ac): Do not call require_configure_ac
before parsing the options.
* automake.in (configure_ac): Likewise.
* lib/Automake/Variable.pm (configure_ac): Do not require configure.ac,
find it.
* lib/Automake/Configure_ac.pm (require_configure_ac):
find_configure_ac never return an undefined value, so test
the file's existence instead.
* tests/Makefile.am (TESTS): Add help.test.
* tests/help.test: New file.
* lib/Automake/XFile.pm: Update to use ChannelDefs.
(close): Call Automake::FileUtils::handle_exec_errors on errors.
* automake.in (scan_autoconf_files): Exit with $?=63 on version
mismatch.
(scan_autoconf_traces): Likewise. Close the autoconf pipe to
capture abnormal exits.
* aclocal.in ($exit_status): Remove, and use Channels.pm's $exit_code
instead.
(trace_used_macros): Close the autom4te pipe to capture abnormal exits.
* lib/missing: When a tool has run and exited with $?=63, emulate
it. Adjust the diagnostic and pretend the tool is tool old in this
case. Use an emacs-updated "scriptversion" variable.
* configure.in: Output tests/aclocal-${APIVERSION} and
tests/automake-${APIVERSION}.
* tests/aclocal.in, tests/automake.in,
tests/missing.test, tests/missing2.test: New files.
* tests/defs.in (AUTOMAKE, ACLOCAL, PATH): Define
to use tests/aclocal-$APIVERSION and tests/automake-$APIVERSION.
* tests/dup3.test: Remove. alocal9.test, acloca10.test, and others are
already testing for this.
* tests/depacl2.test, tests/dup2.test, tests/order.test: Fix
configure.in so that aclocal works.
* tests/defun.test: Quote the AC_DEFUN body.
* tests/Makefile.am (TESTS): Add missing.test and missing2.test,
and remove dup3.test.
(check_SCRIPTS): Add aclocal and automake.
* aclocal.in (@file_order): New variable, to make sure
files are output in the opposite order of the -I arguments.
(scan_file): Fill it.
(trace_used_macros, write_aclocal): Use it.
(scan_m4_files): Reverse the directory contents, so that
macros from the lexicographically greatest files are preferred.
* tests/aclocal9.test, tests/acloca10.test, tests/acloca11.test:
New files.
* tests/Makefile.am (TESTS): Add them.
For Debian Bug #206299:
* automake.in ($configure_deps_greatest_timestamp,
$output_deps_greatest_timestamp): New variables.
(initialize_per_input): Reset $output_deps_greatest_timestamp.
(scan_autoconf_traces, scan_autoconf_files, read_am_file):
Update $configure_deps_greatest_timestamp and
$output_deps_greatest_timestamp
(generate_makefile): Rewrite the logic to decide whether
to rewrite the output. Move the leading dup_channel_setup
and trailing drop_channel_setup to MAIN, so that
drop_channel_setup is executed for all exit paths.
* tests/aclocal7.test: Update to check for $AUTOMAKE --no-force
* tests/distcom6.test: New file. Report from Scott James Remnant.
* tests/Makefile.am (TESTS): Add distcom6.test.
* aclocal.in (write_aclocal): Take an output file and list of
used macros in arguments and make up the file contents here.
(trace_used_macros): New function.
(add_file): Do not update $output.
($output): Delete.
(MAIN): Call trace_used_macros. Then rewrite aclocal.m4 only
for these traced macros. This should shorten aclocal.m4 by
stripping out unused macros.
* automake.texi (Invoking aclocal): Document ${AUTOM4TE}.
* tests/aclibobj.test: Make sure configure.in exists by the time
aclocal runs.
* tests/aclocal8.test: New file.
* tests/Makefile.am (TESTS): Add aclocal8.test.
Suggested by Bruno Haible and Akim Demaille.
Fix for PR automake/398:
* m4/python.m4: Do not call AC_PATH_PROGS if $PYTHON is already
set. Display `none' instead of `:' and $PYTHON is set to `:'
when no suitable interpreter is found. Honor ACTION-IF-FOUND and
ACTION-IF-NOT-FOUND.
* automake.texi (Python): Document ACTION-IF-FOUND and
ACTION-IF-NOT-FOUND.
* tests/python4.test, tests/python5.test, tests/python6.test,
tests/python7.test, tests/python8.test, tests/python9.test: New
files.
* tests/Makefile.am (TESTS): Add them.
Report from Per Cederqvist.
* lib/Automake/Item.pm, lib/Automake/ItemDef.pm: New files.
* lib/Automake/Rule.pm, lib/Automake/RuleDef.pm: New files.
* lib/Automake/Makefile.am (dist_perllib_DATA): Add them.
* lib/Automake/VarDef.pm: Make this a subclass of Automake::ItemDef.
(new): Adjust to call Automake::ItemDef::new.
(comment, location, owner): Delete. Now inherited from ItemDef.
* lib/Automake/Variable.pm: Make this a subclass of Automake::Item.
(_new): Adjust to call Automake::Item::new.
(name, def, rdef, _set, conditions, not_always_defined_in_cond):
Delete. How inherited from Item, where `_set' is called `set'.
* automake.in (SUFFIX_RULE_PATTERN): Delete. Now in Automake::Rule.
(suffix_rules_default): Delete. Now
Automake::Rule::_suffix_rules_default
(suffixes): Delete. Now Automake::Rule::suffixes.
(TARGET_AUTOMAKE, TARGET_USER): Delete. Now
Automake::RuleDef::RULE_AUTOMAKE and Automake::RuleDef::RULE_USER.
(%targets, %target_source, %target_name, %target_owner): Delete,
replaced by the Rule and RuleDef classes.
(dependencies, depend, actions): Delete. Now in Automake::Rule.
(suffix_rules, register_suffix_rule): Likewise.
(KNOWN_EXTENSIONS_PATTERN, accept_extensions): Likewise.
(known_extensions_list): Delete. Now
Automake::Rule::_known_extensions_list.
(target_conditions): Delete. Now inherited by Automake::Rule
from Automake::Item::conditions.
(rule_define): Delete. Now Automake::Rule::define. Adjust all
callers.
(target_defined): Delete. Now Automake::Rule::rule. Adjust all
callers.
(initialize_per_input): Adjust to call Automake::Rule::reset.
(err_target, err_cond_target, msg_cond_target, msg_target,
reject_target): Delete. Now defined in Automake::Rule as
err_rule, err_cond_rule, msg_cond_rule, msg_rule and reject_target.
Adjust all callers.
(handle_languages): Call suffix_rules_count.
* tests/location.test: Adjust expected diagnostics. We now display
$(EXEEXT) accurately.
Revert the fix for PR automake/291:
* lib/Automake/Variable.pm (define): Do not warn about variables
starting with `_' which are an issue on NEWS-OS 4.2R. According
to Paul Eggert, NEWS-OS 4.2R is ten years old, the latest version
was released on 1996 and is not in wide use. On the other hand,
variables starting with `_' are mandatory in several situations,
so diagnosing them is more annoying than useful.
* tests/canon5.test: Do not use -Wno-portability.
* tests/vars2.test: Delete.
* tests/Makefile.am (TESTS): Remove vars2.test.
Suggested by Jim Meyering.
* lib/Automake/Config.in: New file.
* lib/Automake/Makefile.am (nodist_perllib_DATA, do_subst,
CLEANFILES): New variables.
(Config.pm): New rule.
* Makefile.am (maintainer-check): Adjust expected differences
between automake.in and automake.
* aclocal.in, automake.in: Use Automake::Config.
* lib/Automake/Config.in: New file.
* lib/Automake/Makefile.am (nodist_perllib_DATA, do_subst,
CLEANFILES): New variables.
(Config.pm): New rule.
* Makefile.am (maintainer-check): Adjust expected differences
between automake.in and automake.
* aclocal.in, automake.in: Use Automake::Config.
* automake.in (handle_texinfo_helper): Use the user definition
of TEXINFO_TEX before checking for cygnus or AC_CONFIG_AUX_DIR.
* tests/txinfo22.test: New file.
* tests/Makefile.am (TESTS): Add txinfo22.test.
Report from Tom Tromey.
Raja R Harinath [Sun, 3 Aug 2003 21:17:32 +0000 (21:17 +0000)]
* lib/Automake/Variable.pm (@EXPORT): Remove
traverse_variable_recursively and
require_variables_for_variable.
(require_variables_for_variable, traverse_variable_recursively)
(_traverse_variable_recursively_worker): Convert to
Automake::Variable methods, remove support for being
invoked with variable names, and rename to ...
(requires_variables, traverse_recursively)
(_do_recursive_traversal): ... these.
(_value_as_list_recursive_worker, transform_variable_recursively):
Update to reflect changes.
* automake.in (handle_LIBOBJS, handle_ALLOCA)
(handle_libraries, handle_ltlibraries, am_primary_prefixes):
Likewise.
(define_objects_from_sources): Fix typo in comment.
Raja R Harinath [Sat, 2 Aug 2003 04:27:03 +0000 (04:27 +0000)]
* lib/Automake/Variables.pm (variables): Return a list of
Automake::Variable instances, not a list of strings.
(dump): Remove support for being invoked with a string.
(variables_dump): Adapt to these changes.
* automake.in (check_typos): Likewise.
(am_primary_prefixes): Likewise.
* automake.texi (A Shared Library): Rewrite and split into
subsections. Valuable comments from Norman Gray, Harlan Stenn,
Tim Van Holder, and Guido Draheim.
* tests/ltcond.test, tests/ltcond2.test, tests/ltconv.test: New files.
* tests/Makefile.am (TESTS): Add them.
* automake.in (handle_single_transform_list): Complain about
foo.$(OBJEXT) being created both with libtool and without, not
about foo.lo.
Report from Tim Van Holder.
* lib/Automake/Variable.pm (@EXPORT): Remove variable_dump.
(variable_dump): Replace by ...
(dump): ... this method.
(rdef, _check_ambiguous_condition): Adjust to use ->dump.
(define, variables_dump): Adjust to use Automake::Variable::dump
Complete changes from 2003-07-08.
* automake.in ($cmdline_use_dependencies, $use_dependencies): Remove,
replaced by $options{'no-dependencies'}.
($global_options): Remove.
(%global_options): New variable.
(initialize_per_input): Empty %options.
(process_option_list): Take a location and %options ref argument,
process no-dependencies as other options.
(handle_options): Do not reparse the global options, just initialize
%options from %global_options and fill it with local options.
(handle_languages, handle_single_transform_list)
(handle_configure, check_cygnus): Adjust usage of
$options{'no-dependencies'}.
(make_paragraphs): Adjust usage of $options{'cygnus'}.
(parse_arguments): Set cygnus and no-dependencies in %global_options.
(scan_autoconf_traces) <AM_INIT_AUTOMAKE>: Call process_option_list
to fill %global_options.
Fix missing rebuilds during `make dist' with BSD make.
* automake.in (generate_makefile): Do not push Makefile.in, and
Makefile.am into DIST_COMMON here.
* lib/am/configure.am (DIST_COMMON): Do it here, and use
%MAKEFILE-AM% and %MAKEFILE-IN% so that items in DIST_COMMON
actually match the targets. Prefix `configure' with `$(srcdir)/'
to match the target.
* tests/remake4.test: New file.
* tests/Makefile.am (TESTS): Add remake4.test.
Report from Akim Demaille.
* automake.in (handle_multilib): Register all-multi.
(file_contents_internal): Insert n when concatenating actions
from "factored" rules.
* lib/config-ml.in: New file, from GCC, including a patch
from Ralf Corsepius (see GCC's PR 11526).
* lib/symlink-tree.in: New file, from GCC.
* lib/Makefile.am (dist_script_DATA): Add config-ml.in and
symlink-tree.
* lib/am/clean.am (distclean-generic): Do not delete Makefile here...
(distclean, maintainer-clean): ... do it here.
* lib/am/depend.am (distclean-depend): Likewise, replace by
(distclean, maintainer-clean): ... these.
* lib/am/multilib.am (all-recursive, install-recursive,
mostlyclean-recursive, clean-recursive, distclean-recursive,
maintainer-clean-recursive): Remove these rules.
(mostlyclean-am, clean-am, distclean-am, maintainer-clean-am): Replace
by ...
(mostlyclean, clean, distclean, maintainer-clean): ... these.
(all-am): Remove, done in handle_multilib.
(install-am): Replace by ...
(install-exec-am): ... this.
* tests/Makefile.am (TESTS): Add multlib.test.
* tests/multlib.test: New file, based on a test case by
Ralf Corsepius
* automake.in (scan_autoconf_traces): Handle AC_CONFIG_LINKS.
(handle_configure): Handle adding AC_CONFIG_LINKS arguments to
distclean targets (CONFIG_CLEAN_FILES makefile var).
* NEWS: Note new handling of AC_CONFIG_LINKS.
* automake.texi (Other things Automake recognizes): Ditto.
* tests/Makefile.am (TESTS): Add new tests.
* tests/conflnk.test: New test that links are cleaned on distclean.
* tests/conflnk2.test: New test that source files for links are
distributed.
Raja R Harinath [Thu, 10 Jul 2003 23:39:09 +0000 (23:39 +0000)]
Avoid using refs as hash keys.
* lib/Automake/Variable.pm ($_traversal): New.
(reset): Reset $_traversal.
(_new): New attribute 'scanned'.
(%_vars_scanned): Remove.
(traverse_variable_recursively)
(traverse_variable_recursively_worker):
Use $_traversal instead of %_vars_scanned to detect recursively
defined variables.
* aclocal.in: Use Automake::FileUtils.
(parse_arguments, scan_configure, scan_m4_files): Never call
"die" to print an error message. Use print and exit.
* automake.in: Use Automake::FileUtils.
* lib/Automake/General.pm ($debug, $help, $tmp, $verbose,
$version, &debug, &getopt, &mktmpdir, &verbose): Remove.
(END): Do not massage Perl's exit code. Do not clean any temporary
directory.
(find_file, mtime, update_file, xsystem, contents): Move to ...
* lib/Automake/FileUtils.pm: ... this new file. Adjust to
report errors using Channels.
(handle_exec_errors, xqx): New functions, from Autoconf.
* lib/Automake/Makefile.am (dist_perllib_DATA): Add FileUtils.pm.
* lib/Automake/Variable.pm (_traverse_variable_recursively_worker):
Return the empty list on recursively defined variable. This
supersedes my change of 2003-07-02.
* automake.in ($cygnus_mode): Replace with $options{'cygnus'}.
Adjust all dependencies.
(&depend): Move next to %dependencies.
(&initialize_per_input): Initialize the 'cygnus' field of
'%options' to spare the code from 'exists' or 'defined' when
testing it.
* automake.in (&define_files_variable): New.
(&handle_texinfo_helper): Move the handling of user variables from
here, to...
(&handle_texinfo): here.
This is to balance the size of these functions, and to match the
convention of other _helper functions.
(&handle_texinfo_helper): Use &define_files_variable.
Move some code to use less variables.
Rename $info_cursor as $texi.
(&handle_texinfo): Do not call handle_texinfo_helper if there are
no TEXINFOS.
* lib/am/texinfos.am: Sort the occurrences of dvi, info, pdf, ps
and html.
Remove *-recursive targets from .PHONY, they are part of
$(RECURSIVE_TARGETS) anyway.
(install-info, mostlyclean-aminfo): Are .PHONY.
* automake.in (&define_files_variable): New.
(&handle_texinfo_helper): Move the handling of user variables from
here, to...
(&handle_texinfo): here.
This is to balance the size of these functions, and to match the
convention of other _helper functions.
(&handle_texinfo_helper): Use &define_files_variable.
Move some code to use less variables.
Rename $info_cursor as $texi.
(&handle_texinfo): Do not call handle_texinfo_helper if there are
no TEXINFOS.
* lib/am/texinfos.am: Sort the occurrences of dvi, info, pdf, ps
and html.
Remove *-recursive targets from .PHONY, they are part of
$(RECURSIVE_TARGETS) anyway.
(install-info, mostlyclean-aminfo): Are .PHONY.
* lib/depcomp (icc): Update to grok ICC 7.1's output.
* m4/depend.m4 (_AM_DEPENDENCIES): Check dependency generation
in a subdirectory, and with many dependencies. This
catches more failures of depcomp.
Reports from Ralf Wildenhues and Akim Demaille.