From 4d4773c9d6484eb2a522cffd44d92e96950ed7b9 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Mon, 10 Jun 1996 05:28:21 +0000 Subject: [PATCH] Bug fixes --- ChangeLog | 29 ++++++++++++++++++++++++ TODO | 14 ++++++------ automake.in | 51 ++++++++++++++++++++++++++++++++----------- automake.texi | 16 ++++++++++++-- compile-kr.am | 8 +++---- compile-vars.am | 3 +-- compile.am | 2 +- lib/am/compile.am | 2 +- lib/am/texinfos.am | 9 ++++---- remake.am | 2 +- tests/ChangeLog | 12 ++++++++++ tests/Makefile.am | 3 ++- tests/Makefile.in | 5 +++-- tests/mkinstall2.test | 22 +++++++++++++++++++ tests/texinfo2.test | 20 +++++++++++++++++ tests/yacc.test | 15 +++++++++++++ texinfos.am | 9 ++++---- version.texi | 2 +- 18 files changed, 181 insertions(+), 43 deletions(-) create mode 100755 tests/mkinstall2.test create mode 100755 tests/texinfo2.test create mode 100755 tests/yacc.test diff --git a/ChangeLog b/ChangeLog index 819724d9..6876cd6b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,25 @@ +Sun Jun 9 17:45:48 1996 Tom Tromey + + * texinfos.am (install-info): Don't install ~ files. Bug report + from Greg McGary. + * automake.in (handle_texinfo): Don't push '.info*' onto + @infos_list. + + * automake.in (handle_gettext): Ensure po and intl in SUBDIRS when + using gettext. + (handle_dist): Pass --with-included-gettext to configure if using + gettext. + + * compile-kr.am (._c._o): Pass -c to $(COMPILE). + (.c._o): Ditto. + * compile.am (.c.o): Pass -c to $(COMPILE). + * compile-vars.am (COMPILE): Don't include -c. + + * remake.am ($(srcdir)/Makefile.in): Pass --strictness to + automake. + * automake.in (handle_configure): Supply --strictness arg to + automake. + Fri Jun 7 12:31:31 1996 Tom Tromey * automake.in (handle_tests): Fix quoting on `pwd`. @@ -5,6 +27,13 @@ Fri Jun 7 12:31:31 1996 Tom Tromey (handle_man_pages): Don't put man directory on @installdirs if no-installman is specified. (handle_texinfo): Handle no-installinfo option. + (handle_options): Compare version against $num_version, not + $VERSION. + (handle_source_transform): Generate rules for output of lex, + yacc. Bug report from Thomas Morgan. Test yacc.test. + (handle_dist): "distcheck" now runs "make dvi". + (handle_tests): Support $(TESTS_ENVIRONMENT). Idea from Ulrich + Drepper. * dejagnu.am (check-DEJAGNU): Depend on site.exp. diff --git a/TODO b/TODO index 39a7bcfc..9e60ca7a 100644 --- a/TODO +++ b/TODO @@ -1,8 +1,9 @@ Priorities for release: [ none ] -** Write test case to check that no-installman suppresses dirs on - "make installdirs" +** Consider using implicit .y.c and .l.c rules instead of current + lex/yacc trickery + consider supporting "var+= stuff" syntax. rewrite to just var=... on output. This is sometimes convenient when you want to write a @@ -42,9 +43,6 @@ Consider: "cvs" option adds some cvs-specific rules? Consider adding an option that statically rewrites @MAINT@ to "#M#". (this would be useful at Cygnus) -Automake and Cygnus: info target separate from all. Always make -install-info target. install-info separate from install. - Automake: should EXTRA_DIST files be statically findable? Automake: devo/inet/Makefile.am has "all-local". "install" depends on @@ -147,6 +145,8 @@ Lex, yacc support: for yacc and lex source * if AC_PROG_LEX used, ensure LEXLIB is in foo_LDADD * require AC_DECL_YYTEXT for lex +* Actually use $seen_prog_yacc +* Require AC_PROG_LEX or equivalent require AC_PROG_CXX if any C++ source files found? Better support for C++ all around @@ -226,6 +226,8 @@ These can both be handled via dist-hook: . Consider allowing eg "foo/bar" to appear in EXTRA_DIST, and generating code to make directory foo at dist time +consider having no-gzip option that turns off gzip/GNU tar. + ================================================================ Document: @@ -278,8 +280,6 @@ document new variables introduced when AC_CANONICAL_* used document _LISP handling -document no-installinfo option - ================================================================ Libraries: diff --git a/automake.in b/automake.in index 1eda9f32..50123a93 100755 --- a/automake.in +++ b/automake.in @@ -448,7 +448,7 @@ sub handle_options # Got a version number. Is the syntax too strict? local ($num_version); ($num_version = $VERSION) =~ tr/0-9//d; - if ($VERSION < $_) + if ($num_version < $_) { &am_line_error ('AUTOMAKE_OPTIONS', "require version $_, only have $VERSION"); @@ -583,11 +583,31 @@ sub handle_source_transform # Skip things that look like configure substitutions. next if /^\@.*\@$/; + # Include .c file for lex or yacc source in distribution. if (/^(.*)\.[yl]$/) { - # Automatically include generated .c file in - # distribution. + # Yacc source. &push_dist_common ($1 . '.c'); + if (! defined $targets{$1 . '.c'}) + { + # Generate a target. + $output_rules .= ($1 . '.c: ' . $_ . "\n" + . "\t" + . 'cd $(srcdir) && $(YACC) $< && mv y.tab.c ' + . $1 . '.c' . "\n"); + } + } + elsif (/^(.*)\.l$/) + { + # Lex source. + &push_dist_common ($1 . '.c'); + if (! defined $targets{$1 . '.c'}) + { + $output_rules .= ($1 . '.c: ' . $_ . "\n" + . "\t" + . 'cd $(srcdir) && $(LEX) $< && mv lex.yy.c ' + . $1 . '.c' . "\n"); + } } # Transform source files into .o files. @@ -924,7 +944,8 @@ sub handle_texinfo $output_rules .= ("\n" . $infobase . ".info: " . join (' ', @texi_deps) . "\n\n"); - push (@infos_list, $infobase . '.info*'); + push (@infos_list, $infobase . '.info', '.info-[0-9]', + '.info-[0-9][0-9]'); push (@info_deps_list, $infobase . '.info'); push (@dvis_list, $infobase . '.dvi'); @@ -1258,7 +1279,7 @@ sub handle_dist if ($relative_dir eq '.') { # Rule to check whether a distribution is viable. - $output_rules .= '# This target untars the dist file and tries a VPATH configuration. Then + $output_rules .= ('# This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist @@ -1268,8 +1289,12 @@ distcheck: dist mkdir $(distdir)/=inst dc_install_base=`cd $(distdir)/=inst && pwd`; \\ cd $(distdir)/=build \\ - && ../configure --srcdir=.. --prefix=$$dc_install_base \\ + && ../configure ' + + . ($seen_gettext ? '--with-included-gettext ' : '') + . '--srcdir=.. --prefix=$$dc_install_base \\ && $(MAKE) \\ + && $(MAKE) dvi \\ && $(MAKE) check \\ && $(MAKE) install \\ && $(MAKE) installcheck \\ @@ -1278,7 +1303,7 @@ distcheck: dist @echo "========================"; \\ echo "$(distdir).tar.gz is ready for distribution"; \\ echo "========================" -'; +'); $output_rules .= 'dist: distdir' . "\n\t"; $output_rules .= 'chmod -R a+r $(distdir)' . "\n\t"; @@ -1417,7 +1442,10 @@ sub handle_configure $output_vars .= "ACLOCAL = aclocal.m4\n"; &push_dist_common ('aclocal.m4'); } - $output_rules .= &file_contents ('remake'); + $output_rules .= &file_contents_with_transform ('s/\@STRICTNESS\@/' + . $strictness_name + . '/g', + 'remake'); &am_error ("\`install.sh' is an anachronism; use \`install-sh' instead") @@ -1533,10 +1561,7 @@ sub handle_gettext { return if ! $seen_gettext || $relative_dir ne '.'; - # As of 0.10.6, gettext still wants @INTLSUB@ and @POSUB@ in - # SUBDIRS. This is going to change in a future version. So for - # now we simply do no checking. - if (0 && &variable_defined ('SUBDIRS')) + if (&variable_defined ('SUBDIRS')) { &am_line_error ('SUBDIRS', @@ -1973,7 +1998,7 @@ sub handle_tests all=`expr $$all + 1`; \\ if test -f $$tst; then dir=.; \\ else dir="$(srcdir)"; fi; \\ - if $$dir/$$tst; then \\ + if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \\ echo "PASS: $$tst"; \\ else \\ failed=`expr $$failed + 1`; \\ diff --git a/automake.texi b/automake.texi index 66f588a9..10a04d6e 100644 --- a/automake.texi +++ b/automake.texi @@ -933,7 +933,8 @@ also contain the file @file{texinfo.tex}. This file is supplied with Automake. Automake generates an @code{install-info} target; some people apparently -use this. +use this. By default, info pages are installed by @samp{make install}. +This can be prevented via the @code{no-installinfo} option. @node Man pages @@ -1076,7 +1077,11 @@ If the variable @code{TESTS} is defined, its value is taken to be a list of programs to run in order to do the testing. The programs can either be derived objects or source objects; the generated rule will look both in @var{srcdir} and @file{.}. The number of failures will be printed at -the end of the run. +the end of the run. The variable @code{TESTS_ENVIRONMENT} can be used +to set environment variables for the test run; the environment variable +@code{srcdir} is set in the rule. +@vindex TESTS +@vindex TESTS_ENVIRONMENT If @samp{dejagnu} appears in @code{AUTOMAKE_OPTIONS}, then the a @code{dejagnu}-based test suite is assumed. The value of the variable @@ -1116,6 +1121,13 @@ installed by default. However, an @code{install-man} target will still be available for optional installation. @trindex install-man +@item @code{no-installinfo} +The generated @file{Makefile.in} will not cause info pages to be built +or installed by default. However, @code{info} and @code{install-info} +targets will still be available. +@trindex info +@trindex install-info + @item @code{ansi2knr} Turn on automatic de-ANSI-fication. diff --git a/compile-kr.am b/compile-kr.am index ec71200d..c1c08148 100644 --- a/compile-kr.am +++ b/compile-kr.am @@ -19,15 +19,15 @@ $(ANSI2KNR) $< > $*.tmp && mv $*.tmp $@ ._c._o: - @echo $(COMPILE) $< + @echo $(COMPILE) -c $< @rm -f _$*.c - @ln $< _$*.c && $(COMPILE) _$*.c && mv _$*.o $@ && rm _$*.c + @ln $< _$*.c && $(COMPILE) -c _$*.c && mv _$*.o $@ && rm _$*.c .c._o: $(ANSI2KNR) $< > $*.tmp && mv $*.tmp $*._c - @echo $(COMPILE) $*._c + @echo $(COMPILE) -c $*._c @rm -f _$*.c - @ln $*._c _$*.c && $(COMPILE) _$*.c && mv _$*.o $@ && rm _$*.c + @ln $*._c _$*.c && $(COMPILE) -c _$*.c && mv _$*.o $@ && rm _$*.c ansi2knr: ansi2knr.o $(LINK) ansi2knr.o $(LIBS) diff --git a/compile-vars.am b/compile-vars.am index b46e510d..2815629f 100644 --- a/compile-vars.am +++ b/compile-vars.am @@ -19,12 +19,11 @@ CC = @CC@ LEX = @LEX@ YACC = @YACC@ -## FIXME? DEFS = @DEFS@ -I. -I$(srcdir) @CONFIG_INCLUDE_SPEC@ CPPFLAGS = @CPPFLAGS@ CFLAGS = @CFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ -COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) LINK = $(CC) $(LDFLAGS) -o $@ diff --git a/compile.am b/compile.am index 6ae415c1..a8ac4a0a 100644 --- a/compile.am +++ b/compile.am @@ -16,7 +16,7 @@ ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ## 02111-1307, USA. .c.o: - $(COMPILE) $< + $(COMPILE) -c $< mostlyclean-compile: ## Don't remove 'core.*' because some distributions have eg "core.c". diff --git a/lib/am/compile.am b/lib/am/compile.am index 6ae415c1..a8ac4a0a 100644 --- a/lib/am/compile.am +++ b/lib/am/compile.am @@ -16,7 +16,7 @@ ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ## 02111-1307, USA. .c.o: - $(COMPILE) $< + $(COMPILE) -c $< mostlyclean-compile: ## Don't remove 'core.*' because some distributions have eg "core.c". diff --git a/lib/am/texinfos.am b/lib/am/texinfos.am index 7b22be90..bcf2791c 100644 --- a/lib/am/texinfos.am +++ b/lib/am/texinfos.am @@ -27,12 +27,13 @@ ## break a possible install-sh reference. install-info: $(INFO_DEPS) $(mkinstalldirs) $(infodir) - for file in $(INFO_DEPS); do \ + for file in $(INFO_DEPS); do \ ## We use these strange circumlocutions because we want the "ifile" to ## be relative, for the install. - for ifile in `cd $(srcdir) && echo $$file*`; do \ - $(INSTALL_DATA) $(srcdir)/$$ifile $(infodir)/$$ifile; \ - done; \ + for ifile in `cd $(srcdir) && echo $$file $$file-[0-9] $$file-[0-9][0-9]`; do \ + test -f $(srcdir)/$$ifile \ + && $(INSTALL_DATA) $(srcdir)/$$ifile $(infodir)/$$ifile; \ + done; \ ## We need the 'else' because in some broken versions of sh 'if' will ## return false if the test fails. We use ':' because the GNU ## standards prohibit us from using 'true'. diff --git a/remake.am b/remake.am index 46cd7412..b1874763 100644 --- a/remake.am +++ b/remake.am @@ -16,7 +16,7 @@ ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ## 02111-1307, USA. $(srcdir)/Makefile.in: @MAINT@Makefile.am configure.in - cd $(srcdir) && automake Makefile + cd $(srcdir) && automake --strictness=@STRICTNESS@ Makefile # For an explanation of the following Makefile rules, see node # `Automatic Remaking' in GNU Autoconf documentation. diff --git a/tests/ChangeLog b/tests/ChangeLog index 912a411f..1c061dd8 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,15 @@ +Sun Jun 9 23:20:03 1996 Tom Tromey + + * texinfo2.test: New file. + +Sat Jun 8 10:00:42 1996 Tom Tromey + + * mkinstall2.test: New file. + +Fri Jun 7 18:17:11 1996 Tom Tromey + + * yacc.test: New file. + Sun Jun 2 09:04:52 1996 Tom Tromey * dejagnu.test: New file. diff --git a/tests/Makefile.am b/tests/Makefile.am index 549d4b5b..428215ee 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -8,6 +8,7 @@ confincl.test spelling.test prefix.test badprog.test depend.test exdir.test \ canon.test installsh.test empty.test rulepat.test insh.test canon2.test \ target.test extra.test noinst.test instman.test mkinstall.test auxdir.test \ canon3.test mdate2.test subdir.test backsl.test package.test number.test \ -insh2.test outdir.test fpinstall.test fpinst2.test texinfo.test dejagnu.test +insh2.test outdir.test fpinstall.test fpinst2.test texinfo.test dejagnu.test \ +yacc.test mkinstall2.test texinfo2.test EXTRA_DIST = defs $(TESTS) diff --git a/tests/Makefile.in b/tests/Makefile.in index 5afe4ff8..289ec762 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -1,4 +1,4 @@ -# Makefile.in generated automatically by automake 1.0 from Makefile.am +# Makefile.in generated automatically by automake 1.1a from Makefile.am # Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation @@ -46,7 +46,8 @@ confincl.test spelling.test prefix.test badprog.test depend.test exdir.test \ canon.test installsh.test empty.test rulepat.test insh.test canon2.test \ target.test extra.test noinst.test instman.test mkinstall.test auxdir.test \ canon3.test mdate2.test subdir.test backsl.test package.test number.test \ -insh2.test outdir.test fpinstall.test fpinst2.test texinfo.test dejagnu.test +insh2.test outdir.test fpinstall.test fpinst2.test texinfo.test dejagnu.test \ +yacc.test mkinstall2.test texinfo2.test EXTRA_DIST = defs $(TESTS) mkinstalldirs = $(top_srcdir)/mkinstalldirs diff --git a/tests/mkinstall2.test b/tests/mkinstall2.test new file mode 100755 index 00000000..4d64b2e8 --- /dev/null +++ b/tests/mkinstall2.test @@ -0,0 +1,22 @@ +#! /bin/sh + +# Test to make sure no-installman suppresses man dir creation. + +. $srcdir/defs || exit 1 + +cat > Makefile.am << 'END' +AUTOMAKE_OPTIONS = no-installman +man_MANS = foo.1 +END + +: > foo.1 + +cat > mkinstalldirs << 'END' +echo "$@" +END + +chmod +x mkinstalldirs + +$AUTOMAKE || exit 1 + +make -s -f Makefile.in installdirs | grep -v man diff --git a/tests/texinfo2.test b/tests/texinfo2.test new file mode 100755 index 00000000..d5ad9870 --- /dev/null +++ b/tests/texinfo2.test @@ -0,0 +1,20 @@ +#! /bin/sh + +# Test to ensure that a ".info~" file doesn't end up in the +# distribution. Bug report from Greg McGary. + +. $srcdir/defs || exit 1 + +cat > Makefile.am << 'END' +info_TEXINFOS = textutils.texi +magic: + @echo $(DISTFILES) +END + +: > texinfo.tex +: > textutils.texi +: > textutils.info~ + +$AUTOMAKE || exit 1 + +test -z `make -s -f Makefile.in magic | grep '~'` diff --git a/tests/yacc.test b/tests/yacc.test new file mode 100755 index 00000000..40d08884 --- /dev/null +++ b/tests/yacc.test @@ -0,0 +1,15 @@ +#! /bin/sh + +# Test to make sure intermediate .c file is built from yacc source. +# Bug from Thomas Morgan. + +. $srcdir/defs || exit 1 + +cat > Makefile.am <<'END' +bin_PROGRAMS = zardoz +zardoz_SOURCES = zardoz.y +END + +$AUTOMAKE || exit 1 + +grep '^zardoz.c:' Makefile.in diff --git a/texinfos.am b/texinfos.am index 7b22be90..bcf2791c 100644 --- a/texinfos.am +++ b/texinfos.am @@ -27,12 +27,13 @@ ## break a possible install-sh reference. install-info: $(INFO_DEPS) $(mkinstalldirs) $(infodir) - for file in $(INFO_DEPS); do \ + for file in $(INFO_DEPS); do \ ## We use these strange circumlocutions because we want the "ifile" to ## be relative, for the install. - for ifile in `cd $(srcdir) && echo $$file*`; do \ - $(INSTALL_DATA) $(srcdir)/$$ifile $(infodir)/$$ifile; \ - done; \ + for ifile in `cd $(srcdir) && echo $$file $$file-[0-9] $$file-[0-9][0-9]`; do \ + test -f $(srcdir)/$$ifile \ + && $(INSTALL_DATA) $(srcdir)/$$ifile $(infodir)/$$ifile; \ + done; \ ## We need the 'else' because in some broken versions of sh 'if' will ## return false if the test fails. We use ':' because the GNU ## standards prohibit us from using 'true'. diff --git a/version.texi b/version.texi index 87c7f95e..98dd01c7 100644 --- a/version.texi +++ b/version.texi @@ -1,3 +1,3 @@ -@set UPDATED 25 May 1996 +@set UPDATED 8 June 1996 @set EDITION 1.1a @set VERSION 1.1a -- 2.43.5