From 62b81e4524d0ce4a34d4265515c2d011f9411d46 Mon Sep 17 00:00:00 2001
From: Mark Mitchell <mmitchel@gcc.gnu.org>
Date: Mon, 6 Oct 2003 07:56:16 +0000
Subject: [PATCH] re PR bootstrap/12512 (Pattern rule for %.dvi breaks make dvi
 in objc)

	PR bootstrap/12512
	* Makefile.in (info): Use double-colon rules.
	(dvi): Likewise.
	(generated-manpages): Likewise.
	* configure.in: Do not create lang.info, lang.dvi, or
	lang.generated-manpages hooks.
	* configure: Regenerated.
	* objc/Make-lang.in (objc.info): Remove.
	(objc.dvi): Remove.
	(objc.generated-manpages): Remove.
	* doc/sourcebuild.texi: Update description of info, dvi, and
	generated-manpages hooks.

	* Make-lang.in (ada.info): Replace with ...
	(info): ... this.
	(ada.dvi): Replace with ...
	(dvi): ... this.

	* Make-lang.in (c++.info): Remove.
	(c++.dvi): Remove.
	(c++.generated-manpages): Replace with ...
	(generated-manpages): ... this.

	* Make-lang.in (f77.info): Replace with ...
	(info): ... this.
	(f77.dvi): Replace with ...
	(dvi): ... this.
	(f77.generated-manpages): Replace with ...
	(generated-manpages): ... this.

	* Make-lang.in (java.info): Replace with ...
	(info): ... this.
	(java.dvi): Replace with ...
	(dvi): ... this.
	(java.generated-manpages): Replace with ...

	* Make-lang.in (treelang.info): Replace with ...
	(info): ... this.
	* Make-lang.in (treelang.dvi): Replace with ...
	(dvi): ... this.

From-SVN: r72135
---
 gcc/ChangeLog             | 16 ++++++++++++++++
 gcc/Makefile.in           | 18 +++++++++---------
 gcc/ada/ChangeLog         |  7 +++++++
 gcc/ada/Make-lang.in      |  6 ++----
 gcc/configure             |  7 +++----
 gcc/configure.in          |  5 ++---
 gcc/cp/ChangeLog          |  7 +++++++
 gcc/cp/Make-lang.in       |  5 +----
 gcc/doc/sourcebuild.texi  | 10 ++++++++--
 gcc/f/ChangeLog           |  9 +++++++++
 gcc/f/Make-lang.in        |  7 +++----
 gcc/java/ChangeLog        |  8 ++++++++
 gcc/java/Make-lang.in     |  7 +++----
 gcc/objc/Make-lang.in     |  5 -----
 gcc/treelang/ChangeLog    |  7 +++++++
 gcc/treelang/Make-lang.in |  7 ++-----
 16 files changed, 87 insertions(+), 44 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9594eb68c1f9..bd0f0053388a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,18 @@
+2003-10-06  Mark Mitchell  <mark@codesourcery.com>
+
+	PR bootstrap/12512
+	* Makefile.in (info): Use double-colon rules.
+	(dvi): Likewise.
+	(generated-manpages): Likewise.
+	* configure.in: Do not create lang.info, lang.dvi, or
+	lang.generated-manpages hooks.
+	* configure: Regenerated.
+	* objc/Make-lang.in (objc.info): Remove.
+	(objc.dvi): Remove.
+	(objc.generated-manpages): Remove.
+	* doc/sourcebuild.texi: Update description of info, dvi, and
+	generated-manpages hooks.
+
 2003-10-06  Richard Sandiford  <rsandifo@redhat.com>
 
 	* config/mips/mips.md: Merge mips16 lw/srl pattern with its splitter.
@@ -57,6 +72,7 @@
 	* config/mn10300/mn10300.md: Likewise.
 	* config/sh/sh.h: Likewise.
 
+>>>>>>> 2.1294
 2003-10-05  Richard Henderson  <rth@redhat.com>
 
 	* tree-inline.c (remap_type): New.
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 3f1e0c946044..bdd8dd6b9d7a 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -912,15 +912,15 @@ LIB2_DIVMOD_FUNCS = _divdi3 _moddi3 _udivdi3 _umoddi3 _udiv_w_sdiv _udivmoddi4
 # The following targets define the interface between us and the languages.
 #
 # all.cross, start.encap, rest.encap,
-# info, dvi,
 # install-normal, install-common, install-info, install-man,
 # uninstall,
 # mostlyclean, clean, distclean, extraclean, maintainer-clean,
 # stage1, stage2, stage3, stage4
 #
-# Each language is linked in with a series of hooks (since we can't use `::'
-# targets).  The name of each hooked is "lang.${target_name}" (eg: lang.info).
-# Configure computes and adds these here.
+# Each language is linked in with a series of hooks.  The name of each
+# hooked is "lang.${target_name}" (eg: lang.info).  Configure computes
+# and adds these here.  We use double-colon rules for some of the hooks;
+# double-colon rules should be preferred for any new hooks.
 
 # language hooks, generated by configure
 @language_hooks@
@@ -2593,7 +2593,7 @@ stmp-docobjdir:
 	$(STAMP) stmp-docobjdir
 
 doc: $(BUILD_INFO) $(GENERATED_MANPAGES) gccbug
-info: $(docobjdir)/cpp.info $(docobjdir)/gcc.info $(docobjdir)/gccint.info $(docobjdir)/gccinstall.info lang.info $(docobjdir)/cppinternals.info
+info:: $(docobjdir)/cpp.info $(docobjdir)/gcc.info $(docobjdir)/gccint.info $(docobjdir)/gccinstall.info $(docobjdir)/cppinternals.info
 
 TEXI_CPP_FILES = $(docdir)/cpp.texi $(docdir)/include/fdl.texi \
   $(docdir)/cppenv.texi $(docdir)/cppopts.texi
@@ -2637,7 +2637,7 @@ $(docobjdir)/%.info: $(docdir)/%.texi stmp-docobjdir
 	$(MAKEINFO) $(MAKEINFOFLAGS) -I $(docdir) -I $(docdir)/include \
 	  -o $@ $<
 
-dvi: gcc.dvi gccint.dvi gccinstall.dvi cpp.dvi lang.dvi cppinternals.dvi
+dvi:: gcc.dvi gccint.dvi gccinstall.dvi cpp.dvi cppinternals.dvi
 
 %.dvi: $(docdir)/%.texi
 	$(TEXI2DVI) -I $(docdir) -I $(docdir)/include $<
@@ -2646,9 +2646,9 @@ gccinstall.dvi:
 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
 	$(TEXI2DVI) -I $$s/doc -I $$s/doc/include -o $@ $$s/doc/install.texi
 
-generated-manpages: $(docobjdir)/gcov.1 $(docobjdir)/cpp.1 $(docobjdir)/gcc.1 \
-	$(docobjdir)/gfdl.7 $(docobjdir)/gpl.7 $(docobjdir)/fsf-funding.7 \
-	lang.generated-manpages
+generated-manpages:: $(docobjdir)/gcov.1 $(docobjdir)/cpp.1 \
+	$(docobjdir)/gcc.1 $(docobjdir)/gfdl.7 $(docobjdir)/gpl.7 \
+	$(docobjdir)/fsf-funding.7
 
 $(docobjdir)/gcov.1: $(docdir)/gcov.texi
 $(docobjdir)/cpp.1: $(docdir)/cpp.texi $(docdir)/cppenv.texi \
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index f1854785315d..746ab8acceba 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,10 @@
+2003-10-06  Mark Mitchell  <mark@codesourcery.com>
+
+	* Make-lang.in (ada.info): Replace with ...
+	(info): ... this.
+	(ada.dvi): Replace with ...
+	(dvi): ... this.
+
 2003-09-29  Zack Weinberg  <zack@codesourcery.com>
 
 	* trans.c (gigi): Use REAL_ARITHMETIC, not REAL_VALUE_ATOF, to
diff --git a/gcc/ada/Make-lang.in b/gcc/ada/Make-lang.in
index 9dec92ad48eb..955eda6c0f8c 100644
--- a/gcc/ada/Make-lang.in
+++ b/gcc/ada/Make-lang.in
@@ -23,7 +23,6 @@
 # Each language makefile fragment must provide the following targets:
 #
 # foo.all.cross, foo.start.encap, foo.rest.encap,
-# foo.info, foo.dvi,
 # foo.install-normal, foo.install-common, foo.install-info, foo.install-man,
 # foo.uninstall, foo.mostlyclean, foo.clean, foo.distclean, foo.extraclean,
 # foo.maintainer-clean, foo.stage1, foo.stage2, foo.stage3, foo.stage4
@@ -394,7 +393,7 @@ $(srcdir)/ada/gnat-style.info : $(srcdir)/ada/gnat-style.texi \
 	$(srcdir)/doc/include/fdl.texi
 	cd $(srcdir) && $(MAKEINFO) -I doc/include -I ada -o ada/gnat-style.info ada/gnat-style.texi
 
-ada.info: $(srcdir)/ada/gnat_ug_vms.info $(srcdir)/ada/gnat_ug_wnt.info \
+info:: $(srcdir)/ada/gnat_ug_vms.info $(srcdir)/ada/gnat_ug_wnt.info \
 	$(srcdir)/ada/gnat_ug_unx.info $(srcdir)/ada/gnat_ug_vxw.info \
 	$(srcdir)/ada/gnat_rm.info $(srcdir)/ada/gnat-style.info
 
@@ -455,11 +454,10 @@ ada/gnat-style.dvi : $(srcdir)/ada/gnat-style.texi \
 	s=`cd $(srcdir); ${PWD_COMMAND}`; \
 	cd ada && $(TEXI2DVI) -c -I $$s/doc/include -o gnat-style.dvi $$s/ada/gnat-style.texi
 
-ada.dvi: ada/gnat_ug_vms.dvi ada/gnat_ug_wnt.dvi \
+dvi:: ada/gnat_ug_vms.dvi ada/gnat_ug_wnt.dvi \
 	ada/gnat_ug_unx.dvi ada/gnat_ug_vxw.dvi \
 	ada/gnat_rm.dvi ada/gnat-style.dvi
 
-ada.generated-manpages:
 
 # Install hooks:
 # gnat1 is installed elsewhere as part of $(COMPILERS).
diff --git a/gcc/configure b/gcc/configure
index 1adcb5dde595..7277cbcde05a 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -2375,7 +2375,7 @@ fi
 
 
 # Find some useful tools
-for ac_prog in mawk gawk nawk awk
+for ac_prog in gawk mawk nawk awk
 do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
@@ -7730,13 +7730,12 @@ do
 		check_languages="$check_languages check-$language"
 done
 
-# Since we can't use `::' targets, we link each language in
-# with a set of hooks, reached indirectly via lang.${target}.
+# We link each language in with a set of hooks, reached indirectly via
+# lang.${target}.
 
 rm -f Make-hooks
 touch Make-hooks
 target_list="all.build all.cross start.encap rest.encap tags \
-	info dvi generated-manpages \
 	install-normal install-common install-info install-man \
 	uninstall \
 	mostlyclean clean distclean extraclean maintainer-clean \
diff --git a/gcc/configure.in b/gcc/configure.in
index 855cd0bc9435..6b72a05340f5 100644
--- a/gcc/configure.in
+++ b/gcc/configure.in
@@ -2820,13 +2820,12 @@ do
 		check_languages="$check_languages check-$language"
 done
 
-# Since we can't use `::' targets, we link each language in
-# with a set of hooks, reached indirectly via lang.${target}.
+# We link each language in with a set of hooks, reached indirectly via
+# lang.${target}.
 
 rm -f Make-hooks
 touch Make-hooks
 target_list="all.build all.cross start.encap rest.encap tags \
-	info dvi generated-manpages \
 	install-normal install-common install-info install-man \
 	uninstall \
 	mostlyclean clean distclean extraclean maintainer-clean \
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 3cc736991c4c..2895c0e64343 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,10 @@
+2003-10-06  Mark Mitchell  <mark@codesourcery.com>
+
+	* Make-lang.in (c++.info): Remove.
+	(c++.dvi): Remove.
+	(c++.generated-manpages): Replace with ...
+	(generated-manpages): ... this.
+
 2003-10-03  Gabriel Dos Reis  <gdr@integrable-solutions.net>
 
 	* decl.c (struct cp_binding_level): Move to name-lookup.h
diff --git a/gcc/cp/Make-lang.in b/gcc/cp/Make-lang.in
index 1f78e81f5872..a975273a4dce 100644
--- a/gcc/cp/Make-lang.in
+++ b/gcc/cp/Make-lang.in
@@ -23,7 +23,6 @@
 # Each language makefile fragment must provide the following targets:
 #
 # foo.all.build, foo.all.cross, foo.start.encap, foo.rest.encap,
-# foo.info, foo.dvi,
 # foo.install-normal, foo.install-common, foo.install-info, foo.install-man,
 # foo.uninstall,
 # foo.mostlyclean, foo.clean, foo.distclean, foo.extraclean,
@@ -117,9 +116,7 @@ c++.rest.encap:
 c++.tags: force
 	cd $(srcdir)/cp; etags *.c *.h
 
-c++.info: 
-c++.dvi:
-c++.generated-manpages: cp/g++.1
+generated-manpages:: cp/g++.1
 
 #
 # Install hooks:
diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
index 73ad706bc740..e4a1bae2ad14 100644
--- a/gcc/doc/sourcebuild.texi
+++ b/gcc/doc/sourcebuild.texi
@@ -548,7 +548,10 @@ setting of @code{language} in @file{config-lang.in}) for the following
 values of @code{@var{hook}}, and any other Makefile rules required to
 build those targets (which may if necessary use other Makefiles
 specified in @code{outputs} in @file{config-lang.in}, although this is
-deprecated).
+deprecated).  Some hooks are defined by using a double-colon rule for
+@code{@var{hook}}, rather than by using a target of form
+@code{@var{lang}.@var{hook}}.  These hooks are called ``double-colon
+hooks'' below.
 
 @table @code
 @item all.build
@@ -563,17 +566,20 @@ in the source tree.
 Build info documentation for the front end, in the source directory.
 This target is only called by @samp{make bootstrap} if a suitable
 version of @command{makeinfo} is available, so does not need to check
-for this, and should fail if an error occurs.
+for this, and should fail if an error occurs.  This hook is a
+double-colon hook.
 @item dvi
 Build DVI documentation for the front end, in the build directory.
 This should be done using @code{$(TEXI2DVI)}, with appropriate
 @option{-I} arguments pointing to directories of included files.
+This hook is a double-colon hook.
 @item generated-manpages
 Build generated man pages for the front end from Texinfo manuals
 (@pxref{Man Page Generation}), in the source directory.  This target
 is only called if the necessary tools are available, but should ignore
 errors so as not to stop the build if errors occur; man pages are
 optional and the tools involved may be installed in a broken way.
+This hook is a double-colon hook.
 @item install-normal
 FIXME: what is this target for?
 @item install-common
diff --git a/gcc/f/ChangeLog b/gcc/f/ChangeLog
index 720bfa0db919..281e997dd040 100644
--- a/gcc/f/ChangeLog
+++ b/gcc/f/ChangeLog
@@ -1,3 +1,12 @@
+2003-10-06  Mark Mitchell  <mark@codesourcery.com>
+
+	* Make-lang.in (f77.info): Replace with ...
+	(info): ... this.
+	(f77.dvi): Replace with ...
+	(dvi): ... this.
+	(f77.generated-manpages): Replace with ...
+	(generated-manpages): ... this.
+
 2003-09-29  Zack Weinberg  <zack@codesourcery.com>
 
 	* target.c (FFETARGET_ATOF_): Delete.
diff --git a/gcc/f/Make-lang.in b/gcc/f/Make-lang.in
index 30932345456a..f6e7d0269bfb 100644
--- a/gcc/f/Make-lang.in
+++ b/gcc/f/Make-lang.in
@@ -22,7 +22,6 @@
 # Each language makefile fragment must provide the following targets:
 #
 # foo.all.build, foo.all.cross, foo.start.encap, foo.rest.encap,
-# foo.info, foo.dvi,
 # foo.install-normal, foo.install-common, foo.install-info, foo.install-man,
 # foo.uninstall,
 # foo.mostlyclean, foo.clean, foo.distclean, foo.extraclean,
@@ -149,9 +148,9 @@ f77.rest.encap:
 f77.tags: force
 	cd $(srcdir)/f; etags *.c *.h
 
-f77.info: $(srcdir)/f/g77.info
-f77.dvi: f/g77.dvi
-f77.generated-manpages: $(srcdir)/f/g77.1
+info:: $(srcdir)/f/g77.info
+dvi:: f/g77.dvi
+generated-manpages:: $(srcdir)/f/g77.1
 
 # g77 documentation.
 $(srcdir)/f/g77.info: $(srcdir)/f/g77.texi $(srcdir)/f/bugs.texi \
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index de65c5a106e8..25e70c2578b8 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,11 @@
+2003-10-06  Mark Mitchell  <mark@codesourcery.com>
+
+	* Make-lang.in (java.info): Replace with ...
+	(info): ... this.
+	(java.dvi): Replace with ...
+	(dvi): ... this.
+	(java.generated-manpages): Replace with ...
+
 2003-10-03  Kelley Cook  <kelleycook@wideopenwest.com>
 
 	* builtins.c, jcf.h, jvspec.c: Remove PARAMS macros.
diff --git a/gcc/java/Make-lang.in b/gcc/java/Make-lang.in
index cc53c90d9af6..aa785521155a 100644
--- a/gcc/java/Make-lang.in
+++ b/gcc/java/Make-lang.in
@@ -27,7 +27,6 @@
 # Each language makefile fragment must provide the following targets:
 #
 # foo.all.build, foo.all.cross, foo.start.encap, foo.rest.encap,
-# foo.info, foo.dvi,
 # foo.install-normal, foo.install-common, foo.install-info, foo.install-man,
 # foo.uninstall,
 # foo.mostlyclean, foo.clean, foo.distclean, foo.extraclean,
@@ -161,9 +160,9 @@ java.rest.encap:
 java.tags: force
 	cd $(srcdir)/java; etags *.y *.c *.h --language=none --regex='/DEFTREECODE [(]\([A-Z_]+\)/\1/' java-tree.def
 
-java.info: $(srcdir)/java/gcj.info
-java.dvi: java/gcj.dvi
-java.generated-manpages: $(srcdir)/java/gcj.1 $(srcdir)/java/gcjh.1 \
+info:: $(srcdir)/java/gcj.info
+dvi:: java/gcj.dvi
+generated-manpages:: $(srcdir)/java/gcj.1 $(srcdir)/java/gcjh.1 \
 	$(srcdir)/java/jv-scan.1 $(srcdir)/java/jcf-dump.1 \
 	$(srcdir)/java/gij.1 $(srcdir)/java/jv-convert.1 \
 	$(srcdir)/java/rmic.1 $(srcdir)/java/rmiregistry.1
diff --git a/gcc/objc/Make-lang.in b/gcc/objc/Make-lang.in
index f889a60e5c79..46df231d2403 100644
--- a/gcc/objc/Make-lang.in
+++ b/gcc/objc/Make-lang.in
@@ -23,7 +23,6 @@
 # Each language makefile fragment must provide the following targets:
 #
 # foo.all.build, foo.all.cross, foo.start.encap, foo.rest.encap,
-# foo.info, foo.dvi,
 # foo.install-normal, foo.install-common, foo.install-info, foo.install-man,
 # foo.uninstall,
 # foo.mostlyclean, foo.clean, foo.distclean, foo.extraclean,
@@ -105,10 +104,6 @@ objc.rest.encap:
 objc.tags: force
 	cd $(srcdir)/objc; etags *.y *.c *.h
 
-objc.info:
-objc.dvi:
-objc.generated-manpages:
-
 #
 # Install hooks:
 # cc1obj is installed elsewhere as part of $(COMPILERS).
diff --git a/gcc/treelang/ChangeLog b/gcc/treelang/ChangeLog
index 3221ba8002a3..371336deaed2 100644
--- a/gcc/treelang/ChangeLog
+++ b/gcc/treelang/ChangeLog
@@ -1,3 +1,10 @@
+2003-10-06  Mark Mitchell  <mark@codesourcery.com>
+
+	* Make-lang.in (treelang.info): Replace with ...
+	(info): ... this.
+	* Make-lang.in (treelang.dvi): Replace with ...
+	(dvi): ... this.
+
 2003-09-21  Richard Henderson  <rth@redhat.com>
 
 	* treetree.c: Revert.
diff --git a/gcc/treelang/Make-lang.in b/gcc/treelang/Make-lang.in
index 641f686dcf4b..8974dddf9b5c 100644
--- a/gcc/treelang/Make-lang.in
+++ b/gcc/treelang/Make-lang.in
@@ -24,7 +24,6 @@
 # Each language makefile fragment must provide the following targets:
 #
 # foo.all.build, foo.all.cross, foo.start.encap, foo.rest.encap,
-# foo.info, foo.dvi,
 # foo.install-normal, foo.install-common, foo.install-info, foo.install-man,
 # foo.uninstall, foo.distdir,
 # foo.mostlyclean, foo.clean, foo.distclean, foo.extraclean,
@@ -145,7 +144,7 @@ treelang.tags: force
 	cd $(srcdir)/treelang; etags *.y *.l *.c *.h
 
 .phony:treelang.info
-treelang.info: $(srcdir)/treelang/treelang.info
+info:: $(srcdir)/treelang/treelang.info
 
 $(srcdir)/treelang/treelang.info: $(srcdir)/treelang/treelang.texi \
 	 $(srcdir)/doc/include/gcc-common.texi \
@@ -155,7 +154,7 @@ $(srcdir)/treelang/treelang.info: $(srcdir)/treelang/treelang.texi \
 	cd $(srcdir) && $(MAKEINFO) $(MAKEINFOFLAGS) -Idoc/include \
 	-o treelang/treelang.info treelang/treelang.texi
 
-treelang.dvi: $(srcdir)/treelang/treelang.texi \
+dvi:: $(srcdir)/treelang/treelang.texi \
 	 $(srcdir)/doc/include/gcc-common.texi \
 	 $(srcdir)/doc/include/gpl.texi \
 	 $(srcdir)/doc/include/fdl.texi \
@@ -163,8 +162,6 @@ treelang.dvi: $(srcdir)/treelang/treelang.texi \
 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
 	cd treelang && $(TEXI2DVI) -I $$s/doc/include $$s/treelang/treelang.texi
 
-treelang.generated-manpages:
-
 #
 # Install hooks: