Retain all variable definitions until the whole Makefile.am has
been processed, then output all variables in one step, at the top
of Makefile.in. (Older revisions used to output user variables
before generating Automake targets, and to mix Automake variables
with Automake targets, preventing redefinitions of previously
output variables.)
* automake.in (%var_pretty): New variable.
(VAR_ASIS, VAR_PRETTY): New constants.
(@var_list): Rename as ...
(@var_order): ... this.
(initialize_per_input): Clear %var_pretty.
(handle_variables): New function, extracted from ...
(read_main_am_file): ... here.
(generate_makefile): Call handle_variable after everything else.
(handle_dist): Use define_pretty_variable, not pretty_print.
(pretty_print): Delete.
(macro_define): Augment with $COMMENT and $PRETTY parameters.
Update %var_comment, %var_pretty, and @var_order. Adjust callers.
(variable_pretty_output): Merge with ...
(variable_output): ... this, and choose the prettiness on a
per-condition basis.
(append_comments): Delete. This work is now done by macro_define.
(read_am_file, file_contents_internal): Don't call append_comments
nor update @var_list, adjust calls to macro_define.
(handle_subdirs): Don't explicitly output RECURSIVE_TARGETS,
just mark it as VAR_PRETTY.
* tests/exeext.test: Make sure bin_PROGRAMS is output only once.
Report from Jim Meyering.
* automake.in (handle_installdirs): Rename as ...
(handle_install): ... this. Define maybe_BUILT_SOURCES.
(generate_makefile): Adjust call to handle_install.
* lib/am/install.am (install): Use %maybe_BUILT_SOURCES%.
* automake.texi (Sources, Built sources example): BUILT_SOURCES
is honored by `make install' too.
* tests/check3.test: Make sure that `make install' also depends
upon BUILT_SOURCES.
Report from Alexander Turbov.
* lib/am/libs.am (ARFLAGS): Define.
* automake.in (handle_libraries): Use `$(ARFLAGS)' instead of
hard-coding `cru'.
* automake.texi (A Library): Explain how AR, ARFLAGS and RANLIB
are used, and how they can be overridden.
(Program and Library Variables): Adjust to show `$(ARFLAGS)'
instead of `cru'
* tests/ar.test: Rewrite to test for AR, ARFLAGS, and RANLIB.
* tests/ranlib.test: Delete, obsoleted by ar.test.
* tests/Makefile.am (TESTS): Remove ranlib.test.
Report from Paul Thomas.
* automake.in (check_trailing_slash): New function (variation on
a patch by Peter Muir). Diagnose whitespaces following trailing
backslash.
(read_am_file): Use it.
* tests/backsl4.test: New file.
* tests/Makefile.am (TESTS): Add backsl4.test.
Reported by Peter Muir.
* lib/am/tags.am (TAGS): Use --etags-include instead of --include,
when supported by etags (Exuberant Ctags).
* tests/tagsub.test: Rewrite to _run_ the `tags' rule.
For Debian Bug #185388:
* automake.texi (Extending): Augment the install-exec-hook
discussion with an example how to symlink a versioned binary.
* tests/insthook.test: Rewrite to test the above example.
Report from James R. Van Zandt.
* lib/am/depend2.am (?GENERIC?%EXT%.o, ?GENERIC?%EXT%.obj)
(?GENERIC?%EXT%.lo): Use `mv -f' instead of `mv' in FASTDEP mode.
Suggested by Matthias Andree.
* lib/am/depend2.am (?GENERIC?%EXT%.o, ?GENERIC?%EXT%.obj)
(?GENERIC?%EXT%.lo): Hide the if/then/else machinery for FASTDEP.
Just echo the gcc command.
Suggested by Karl Berry.
* lib/am/depend2.am (?GENERIC?%EXT%.lo): Do not use
`test -f foo || echo $(srcdir)/` to emulate a VPATH search when
outputing suffix rules. This follows 2003-02-25's change.
* lib/am/lex.am (?GENERIC?%EXT%%DERIVED-EXT%): Likewise.
* lib/am/yacc.am (?GENERIC?%EXT%%DERIVED-EXT%): Likewise.
* lib/am/depend2.am (?GENERIC?%EXT%.lo): Do not use
`test -f foo || echo $(srcdir)/` to emulate a VPATH search when
outputing suffix rules. This follows 2003-02-25's change.
* lib/am/lex.am (?GENERIC?%EXT%%DERIVED-EXT%): Likewise.
* lib/am/yacc.am (?GENERIC?%EXT%%DERIVED-EXT%): Likewise.
* automake.texi (Requirements) <AC_CONFIG_FILES>: Files listed
with AC_CONFIG_FILES are cleaned by `make distclean'. Don't
pretend otherwise.
Reported by Rafael Laboissiere.
* automake.texi (Emacs Lisp): Instruct people to use lisp_DATA
instead of lisp_LISP when they don't want byte-compilation.
Don't mention ELCFILES anymore.
* automake.in (handle_data): Allow lisp_DATA.
* tests/lisp5.test: New file.
* tests/Makefile.am (TESTS): Add lisp5.test.
* automake.in (handle_emacs_lisp): Don't build *.elc files
if ELCFILES was set empty.
* tests/lisp4.test: New file.
* tests/Makefile.am (TESTS): Add lisp4.test.
Reported by Simon Josefsson.
* lib/am/depend2.am (?GENERIC?%EXT%.o, ?GENERIC?%EXT%.obj): Do not
use the `test -f foo || echo $(srcdir)/` to emulate a VPATH search
when outputing suffix rules.
* lib/am/texibuild.am (?GENERIC?%SOURCE_SUFFIX%.dvi)
(?GENERIC?%SOURCE_SUFFIX%.pdf): Likewise.
Suggested by Bruno Haible.
* lib/am/texibuild.am: Don't remove the target info files. Instead,
back up and restore them if makeinfo fails.
* tests/txinfo20.test: New file.
* tests/Makefile.am (TESTS): Add txinfo20.test.
* lib/am/texinfos.am (install-info-am, uninstall-info-am): Install
DJGPP-style *.iNN info files.
(maintainer-clean-aminfo): Rewrite using the same pattern
as in uninstall-info-am.
* lib/am/texibuild.am (%SOURCE_SUFFIX%%DEST_SUFFIX%): Erase
DJGPP-style *.iNN info files before running $(MAKEINFO).
* tests/txinfo19.test: New file.
* tests/Makefile.am (TESTS): Add txinfo19.test.
Fix for PR automake/381:
* automake.in (handle_gettext): Do not print diagnostics
about po/ and intl/ missing from SUBDIRS if po/ does not
exist. Warn if `SUBDIRS = intl' is used although libintl
is 'external'.
* tests/gettext.test: Make sure diagnostics are not output
when po/ does not exist.
* tests/gettext2.test: Test for unwanted intl/.
PR from Alexander Turbov, fix suggested by Bruno Haible.
2003-02-10 Richard Dawe <rich@phekda.freeserve.co.uk>
* bootstrap: Don't require support for symlinks - copy instead.
Override $SHELL with DJGPP's bash, if running DJGPP. Substitute
@SHELL@ in automake.in and aclocal.in. This makes the setting
of SHELL work for DJGPP.
For PR automake/385:
* lib/depcomp (makedepend): Strip any libtool call, before
running makedepends.
* tests/depcomp4.test: New file.
* tests/Makefile.am (TESTS): Add it.
Reported by Jeff Squyres.
Related to PR automake/385:
* lib/depcomp (dashmstdout): Do not use `-o /dev/null', or gcc will
write dependencies to /dev/null. `-o /dev/null' was added
on 2002-06-13 just because I tried to replace `-o foo.o' by something
else and didn't thought about removing it entirely.
* tests/depcomp3.test: New file.
* tests/Makefile.am (TESTS): Add it.
* m4/init.m4 (_AC_AM_CONFIG_HEADER_HOOK): Recompute
indexes of header files so we create stamp files with
the right numbers when config.status is run on some headers.
* tests/stamph2.test: Check for this.
Reported by Sander Niemeijer.
* automake.in (vars_scanned): Move near traverse_variable_recursively.
(traverse_variable_recursively,
traverse_variable_recursively_worker): Accept a $COND_FILTER argument
to filter out conditions during recursion. Don't recurse into
undefined variables. Don't pass empty results to &FUN_COLLECT.
(value_to_list): Remove, was used by
variable_value_as_list_recursive_worker only.
(variable_value_as_list_recursive_worker): Rewrite using
traverse_variable_recursively. Remove the $parent argument.
(variable_value_as_list_recursive,
variable_loc_and_value_as_list_recursive): Adjust calls
to variable_value_as_list_recursive_worker. Don't reset
%vars_scanned.
* tests/cond3.test: Don't expect empty helper variables,
we don't output them anymore.
* tests/cond30.test: Use an undefined variable.
* automake.in (handle_programs): Strip $(EXEEXT) before
calling &check_canonical_spelling.
* tests/exeext.test: Make sure we don't use a
maude3__EXEEXT__OBJECTS variable.
* lib/Automake/DisjConditions.pm (_permutations_worker)
(permutations): Remove, so that people aren't tempted to use it.
* lib/Automake/tests/DisjConditions.pl (tests_permutations): Remove.
* automake.in (traverse_variable_recursively,
traverse_variable_recursively_worker): Pass one merged Condition
instead of a stack of conditions to &FUN_STORE and &FUN_COLLECT.
(transform_variable_recursively, define_objects_from_sources)
(handle_lib_objects, variable_conditions_recursive): Adjust usage.
* automake.in (handle_lib_objects): Compute _DEPENDENCIES variables
using transform_variable_recursively instead of
variable_conditions_recursive and variable_value_as_list_recursive
to avoid combinatorial explosion.
(handle_lib_objects_cond): Merge into handle_lib_objects.
* tests/cond11.test: Don't grep internal details in Makefile.in,
run $MAKE to make sure the resulting Makefile runs as expected.
* tests/cond29.test: Also exercise conditional _LDADD.
* tests/cond31.test, tests/cond32.test: New files.
* tests/Makefile.am (TESTS): Add tests/cond31.test and
tests/cond32.test.
Fix for PR automake/352:
* automake.in (transform_variable_recursively): If the destination
and the source variables are the same, delete the source variable
before defining the destination variable.
(handle_programs): Strip any $(EXEEXT) suffix from $one_file,
or this will confuse handle_source_transform.
(append_exeext): Rewrite using transform_variable_recursively.
* tests/cond29.test, tests/cond30.test: New files.
* tests/exeext.test: Run ./configure and make, this uncovered
the above handle_programs issue.
* tests/Makefile.am (TESTS): Add cond29.test and cond20.test.
* automake.in (@substfroms, @substtos): Move near
traverse_variable_recursively.
(traverse_variable_recursively, traverse_variable_recursively_worker):
New functions, extracted from define_objects_from_sources.
(define_objects_from_sources): Rewrite using
traverse_variable_recursively.
(handle_source_transform): Use variables_conditionally_defined
instead of calling variable_conditions_recursive directly.
Adjust the call to define_objects_from_sources; there is no need
to reset @substtos, @substfroms, and %vars_scanned now.
(variable_conditions_recursive): Rewrite using
traverse_variable_recursively.
(variable_conditions_recursive_sub): Remove.
(variable_conditionally_defined): Fix condition comparison (the
consequence was that DIST_SUBDIRS was always output).
* lib/Automake/Condition.pm (merge): Allow merging several
conditions at once.
* automake.texi (Python): Explain that directory variables start
with either ${prefix} or ${exec_prefix}, and point to the
`Installation Directory Variables' section of the Autoconf manual.
* lib/am/distdir.am (top_distdir, distdir): Define these
variables only in top level Makefile. Redefine $(top_distdir)
as $(distdir).
(distdir): Fix passing of $(top_distdir) to sub-makes.
* automake.in (handle_dist): Do not define the DISTDIR and
TOP_DISTDIR transformations. We don't need them anymore.
* automake.texi (Dist): Reorder the dist-hook section, and move
the DIST_SUBDIRS paragraph earlier. Document distdir and
top_distdir.
* tests/subpkg.test: Update to check for $(distdir) and
$(top_distdir).
Rename more files to accomodate 8+3 file systems, and adjust the
vocabulary at the same time: AM_CONDITIONAL defines "conditionals",
and we call "condition" a conjunction of "conditionals".
* lib/am/Conditional.pm: Rename to lib/am/Condition.pm.
* lib/am/tests/Conditional.pl: Rename to lib/am/tests/Condition.pl.
* lib/am/ConditionalSet.pm: Rename to lib/am/DisjConditions.pm.
* lib/am/tests/ConditionalSet.pl: Rename to
lib/am/tests/DisjConditions.pl
* lib/am/Conditional.pm (condition_negate): Rename to ...
* lib/am/Condition.pm (conditional_negate): ... this.
* automake.in: Adjust references to Condition and DisjConditions.
(check_ambiguous_conditional, conditional_ambiguous_p): Rename to ...
(check_ambiguous_condition, condition_ambiguous_p): ... these.
* automake.texi (Conditional Programs): Show a sample Makefile.am.
Remind $(EXEEXT) must be appended to configure substitutions.
Show how Automake conditionals can be used instead.
* tests/exeext.test (check_PROGRAMS): Make sure EXEEXT is also
appended to conditionally defined programs.
Jim Meyering [Fri, 17 Jan 2003 14:50:42 +0000 (14:50 +0000)]
Accept --help and --version, and lots of syntactic clean-up.
Use consistent indentation, two spaces per level.
(scriptversion): New variable.
Change initializations like `variable=""' to `variable='.
(usage): New variable.
Use `test', not `['.
Use `test -z "$var"', not `[ x"$var" = x ]'.
Use `test -n "$var"', not `[ x"$var" != x ]'.
Alphabetize case entries.
Accept --help and --version options.
Remove unnecessary `else :' clauses.
Add a `Local variables' eval block to help emacs users update
the time-stamp variable added above.
Mostly from Karl Berry.
* m4/python.m4 (AM_PATH_PYTHON): Query distutils for `pythondir'
or `pyexecdir', for the sake of 64-bit distributions that usually
use lib64/ instead of lib/. Fall back to the default directory
if it doesn't work.
Suggested by Gwenole Beauchesne.
For PR automake/382:
* automake.texi (Yacc and Lex): Document `AM_YFLAGS = -d'.
Explain BUILT_SOURCES is usually needed in this case.
Reported by William S Fulton.
Rename some files for the sake of 8+3 file systems.
* tests/aclocali.test: Rename to tests/aclocal.test.
* tests/aclocali1.test: Rename to tests/aclocal2.test.
* tests/aclocalii.test: Rename to tests/aclocal3.test.
* tests/acoutput.test: Rename to tests/acoutpt.test.
* tests/acoutput2.test: Rename to tests/acoutpt2.test.
* tests/acouttbs.test: Rename to tests/acoutbs.test.
* tests/acouttbs2.test: Rename to tests/acoutbs2.test.
* tests/autoheader.test: Rename to tests/autohdr.test.
* tests/autoheader2.test: Rename to tests/autohdr2.test.
* tests/condincl.test: Rename to tests/condinc.test.
* tests/condincl2.test: Rename to tests/condinc2.test.
* tests/distcommon.test: Rename to tests/distcom.test.
* tests/distcommon2.test: Rename to tests/distcom2.test.
* tests/distcommon3.test: Rename to tests/distcom3.test.
* tests/installsh.test: Rename to tests/instsh.test.
* tests/installsh2.test: Rename to tests/instsh2.test.
* tests/instdata.test: Rename to tests/instdat.test.
* tests/instdata2.test: Rename to tests/instdat2.test.
* tests/libobj12b.test: Rename to tests/libobj13.test.
* tests/link_f_c.test: Rename to tests/link_fc.test.
* tests/link_f_c_cxx.test: Rename to tests/link_fccxx.test.
* tests/link_f_cxx.test: Rename to tests/link_fcxx.test.
* tests/nodefine.test: Rename to tests/nodef.test.
* tests/nodefine2.test: Rename to tests/nodef2.test.
* tests/required.test: Rename to tests/reqd.test.
* tests/required2.test: Rename to tests/reqd2.test.
* tests/sourcesub.test: Rename to tests/srcsub.test.
* tests/sourcesub2.test: Rename to tests/srcsub2.test.
* tests/specflags.test: Rename to tests/specflg.test.
* tests/specflags2.test: Rename to tests/specflg2.test.
* tests/specflags3.test: Rename to tests/specflg3.test.
* tests/specflags6.test: Rename to tests/specflg6.test.
* tests/specflags7.test: Rename to tests/specflg7.test.
* tests/specflags8.test: Rename to tests/specflg8.test.
* tests/specflags9.test: Rename to tests/specflg9.test.
* tests/subdircond.test: Rename to tests/subcond.test.
* tests/subdircond2.test: Rename to tests/subcond2.test.
* tests/subdircond3.test: Rename to tests/subcond3.test.
* tests/texinfo.test: Rename to tests/txinfo.test.
* tests/texinfo2.test: Rename to tests/txinfo2.test.
* tests/texinfo3.test: Rename to tests/txinfo3.test.
* tests/texinfo4.test: Rename to tests/txinfo4.test.
* tests/texinfo5.test: Rename to tests/txinfo5.test.
* tests/texinfo6.test: Rename to tests/txinfo6.test.
* tests/texinfo7.test: Rename to tests/txinfo7.test.
* tests/texinfo8.test: Rename to tests/txinfo8.test.
* tests/texinfo9.test: Rename to tests/txinfo9.test.
* tests/texinfo10.test: Rename to tests/txinfo10.test.
* tests/texinfo13.test: Rename to tests/txinfo13.test.
* tests/texinfo16.test: Rename to tests/txinfo16.test.
* tests/texinfo17.test: Rename to tests/txinfo17.test.
* tests/texinfo18.test: Rename to tests/txinfo18.test.
* tests/Makefile.am (TESTS): Adjust.
* ChangeLog.1996: Rename to ChangeLog.96.
* ChangeLog.1998: Rename to ChangeLog.98.
* ChangeLog.2000: Rename to ChangeLog.00.
* ChangeLog.2001: Rename to ChangeLog.01.
* Makefile.am (EXTRA_DIST): Adjust.
Reported by Richard Dawe.
* lib/am/distdir.am (distcheck): '=' is not valid in DOS filenames.
Use '_build' and '_inst' instead of '=build' and '=inst'.
* tests/man2.test: Reflect change automake: check for files in
'_build' and '_inst' directories instead of '=build' and '=inst'.
* lib/am/distdir.am (distcheck): '=' is not valid in DOS filenames.
Use '_build' and '_inst' instead of '=build' and '=inst'.
* tests/man2.test: Reflect change automake: check for files in
'_build' and '_inst' directories instead of '=build' and '=inst'.
Use `_dirstamp' when the file-system doesn't support `.dirstamp'.
* m4/lead-dot.m4: New file.
* m4/Makefile.am (dist_m4data_DATA): Add lead-dot.m4
* m4/init.m4 (AM_INIT_AUTOMAKE): Require AM_SET_LEADING_DOT.:
* m4/depend.m4 (AM_SET_DEPDIR): Require AM_SET_LEADING_DOT. Define
DEPDIR using am__leading_dot.
* automake.in (require_build_directory): Define am__dirstamp, a new
variable for the dirstamp basename, based on am__leading_dot.
* tests/subobj6.test: Move all `test -f' into Makefiles, so we can
use $(am__dirstamp).
Reported by Richard Dawe.
* tests/gnits2.test, tests/pr300-prog.test, tests/transform.test:
Move all `test -f' into Makefiles, so we can honor $(EXEEXT) when
testing for programs.
Reported by Richard Dawe.
* Makefile.am (maintainer-check): Suggest using $sleep instead of
sleep 2.
* tests/defs.in (sleep): New variable.
* tests/asm.test, tests/confsub.test, tests/lisp3.test,
tests/texinfo16.test, tests/warnopts.test, tests/yaccvpath.test:
Use $sleep instead of sleep 2, to work around timestamp
inconsistencies in Windows.
Reported by Richard Dawe.
* Makefile.am (maintainer-check): Do not require SHELL=/bin/sh
after $MAKE -e.
* tests/ansi3.test, tests/ansi5.test, tests/cond22.test,
tests/man2.test, tests/subobj3.test, tests/suffix8.test,
tests/suffix11.test: Do not set SHELL=/bin/sh after $MAKE -e.
$SHELL is overridden by tests/defs, so it won't hurt even
if $MAKE -e uses the $SHELL envvar.
* tests/ansi.test, tests/insh2.test, tests/texinfo.test,
tests/texinfo8.test: Use SHELL=$SHELL, not SHELL=/bin/sh.
Reported by Richard Dawe.
Build elisp files all at once instead of one by one.
* automake.in (handle_emacs_lisp): Define am__ELFILES. Add
elc-stamp to all's dependencies.
* lib/am/lisp.am (elc-stamp): New rule, build all *.elc files.
(.el.elc): Rewrite to call elc-stamp if $@ doesn't exist.
(clean-lisp): Clean elc-stamp.
* lib/elisp-comp: Reindent. Erase the temporatry directory
from a trap. Propagate Emacs's exit status.
* tests/lisp3.test: New file.
* tests/Makefile.am (TESTS): Add lisp3.test.
Reported by Ryan T. Sammartino.
* tests/defs.in: Substitute aclocaldir instead of running
the installed aclocal. Otherwise Libtool and Gettext
tests get skipped when aclocal doesn't preexist.
Reported by Imacat.
* tests/listval.test, tests/suffix2.test: Remove pointless -I
argument to aclocal.
* lib/Automake/ChannelDefs.pm: New file.
* lib/Automake/Makefile.am (dist_perllib_DATA): Add ChannelDefs.pm.
* automake.in: Move all "register_channel" calls to ChannelDefs.pm.
(prog_error, error, fatal, verb, switch_warning, parse_WARNINGS,
parse_warnings): Move to ChannelDefs.pm.
(usage): Move the warning list to Automake::ChannelDefs::usage
and call it.
(set_strictness): Move channel setings to
Automake::ChannelDefs::set_strictness and call it.