This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[ada] Redo Make-lang.in rules to not always regenerate gnat_ug_*.texi


Since this hunk was unrelated to the bug that is present in rest of PR/12744, I am now submitting it broken out for a seperate approval.

On my first attempt to fix PR/12744, Joseph Myers pointed out (http://gcc.gnu.org/ml/gcc-patches/2003-11/msg00258.html) that both the fortran77 and the ada directories have generated .texi files which are required to still be in the CVS directory so a script can easily generate current webpage documentation without requiring a complete bootstrap.

However, it soon became obvious to me that the current gnat_ug_*.texi rules cause them to be always be (identically) regenerated on any build, since they each depend on the ada/doctools/xgnatug which does not exist in the source tree, so that file will always be built and will of course be newer than the .texi file.

Additionally, that executable was also missing a $(buildexe), so the dependency likely wouldn't quite work under mingw32 or any other environments which use extensions.

This is a perfect job for order-only dependencies, but unfortunately that nifty feature didn't yet exist in gnu make 3.79.

So this patch fixes those bugs in the same way the fortran folks did by punting and introducing a stamp file which contains the real dependency of the .texi files. As a bonus ada/doctools/xgnatug($buildexe) will not be built unless those dependency were touch thereby reducing bootstrap times by a few seconds.

Bootstrapped numerous times on i686-pc-cygwin as part of testing larger patch.

OK, assuming regtest with just this hunk passes?

Kelley Cook
contrib/
2003-12-04  Kelley Cook  <kcook@gcc.gnu.org>

	* gcc_update (files_generated): Add in gcc/ada/stamp-xgnatug and update
	gcc/ada/gnat_ug_* to use it.

gcc/ada/
2003-12-04  Kelley Cook  <kcook@gcc.gnu.org>

	* stamp-xgnatug: New stamp file.
	* Make-lang.in (stamp-xgnatug):  New stamp file and comment.
	(ada/doctools/xgnatug): Add $(build_exeext).
	(ada/gnat_ug_unx.texi, ada/gnat_ug_vwx.texi, ada/gnat_ug_vms.texi
	ada/gnat_ug_wnt.texi): Update to depend on stamp-xgnatug.

diff -Nrdup gcc-orig/contrib/gcc_update gcc-snapshot/contrib/gcc_update
--- gcc-orig/contrib/gcc_update	2003-12-12 14:42:05.607308000 -0500
+++ gcc-snapshot/contrib/gcc_update	2003-12-10 14:43:32.591760500 -0500
@@ -79,10 +79,11 @@ gcc/fixinc/fixincl.x: gcc/fixinc/fixincl
 gcc/f/intdoc.texi: gcc/f/intdoc.in gcc/f/intdoc.c gcc/f/intrin.h gcc/f/intrin.def
 gcc/cp/cfns.h: gcc/cp/cfns.gperf
 gcc/java/keyword.h: gcc/java/keyword.gperf
-gcc/ada/gnat_ug_unx.texi: gcc/ada/gnat_ug.texi gcc/ada/xgnatug.adb gcc/ada/ug_words
-gcc/ada/gnat_ug_vms.texi: gcc/ada/gnat_ug.texi gcc/ada/xgnatug.adb gcc/ada/ug_words
-gcc/ada/gnat_ug_vxw.texi: gcc/ada/gnat_ug.texi gcc/ada/xgnatug.adb gcc/ada/ug_words
-gcc/ada/gnat_ug_wnt.texi: gcc/ada/gnat_ug.texi gcc/ada/xgnatug.adb gcc/ada/ug_words
+gcc/ada/stamp-xgnatug: gcc/ada/gnat_ug.texi gcc/ada/xgnatug.adb gcc/ada/ug_words
+gcc/ada/gnat_ug_unx.texi: gcc/ada/stamp-xgnatug
+gcc/ada/gnat_ug_vms.texi: gcc/ada/stamp-xgnatug
+gcc/ada/gnat_ug_vxw.texi: gcc/ada/stamp-xgnatug
+gcc/ada/gnat_ug_wnt.texi: gcc/ada/stamp-xgnatug
 # testsuite
 # Without this, _Pragma3.c can have a false negative.
 gcc/testsuite/gcc.dg/cpp/_Pragma3.c: gcc/testsuite/gcc.dg/cpp/mi1c.h
diff -Nrdup gcc-orig/gcc/ada/Make-lang.in gcc-snapshot/gcc/ada/Make-lang.in
--- gcc-orig/gcc/ada/Make-lang.in	2003-12-12 14:30:26.124526500 -0500
+++ gcc-snapshot/gcc/ada/Make-lang.in	2003-12-12 14:36:16.481809000 -0500
@@ -441,28 +441,48 @@ ada.generated-manpages:
 # Generate documentation.
 #
 # The generated Texinfo files for the User Guide are stored in
-# $(srcdir), like the Info files.
+# $(srcdir).  However, if the documentation files depended on
+# executables in the build tree, there'd be no way to ship a source
+# tree with the documentation already generated such that `make'
+# wouldn't attempt to rebuild it.  So, we punt and arrange for the
+# documentation files to depend on a stamp file which has the
+# combined dependencies of the texi files and the generatator file.
+# This stamp file calls a submake to build the executable.
+# 
+# If gnu make 3.80 is ever made a requirement to build, then
+# this dance could be avoided using an order-only dependency:
+#
+# $(srcdir)/ada/gnat_ug_unx.texi: \
+#     ada/gnat_ug.texi ada/ug_words | ada/doctools/xgnatug$(build_exeext)
 
-ada/doctools/xgnatug : ada/xgnatug.adb
+$(srcdir)/ada/stamp-xgnatug: ada/xgnatug.adb ada/gnat_ug.texi ada/ug_words
+	$(MAKE) ada/doctools/xgnatug$(build_exeext) 
+	$(STAMP) $(srcdir)/ada/stamp-xgnatug
+
+ada/doctools/xgnatug$(build_exeext): ada/xgnatug.adb
 	-$(MKDIR) ada/doctools
 	cp $^ ada/doctools
 	cd ada/doctools && gnatmake -q xgnatug
 
-$(srcdir)/ada/gnat_ug_unx.texi : ada/doctools/xgnatug \
-	$(srcdir)/ada/gnat_ug.texi $(srcdir)/ada/ug_words
-	ada/doctools/xgnatug unx $(srcdir)/ada/gnat_ug.texi $(srcdir)/ada/ug_words $(srcdir)/ada/gnat_ug_unx.texi
+$(srcdir)/ada/gnat_ug_unx.texi: $(srcdir)/ada/stamp-xgnatug
+	ada/doctools/xgnatug unx $(srcdir)/ada/gnat_ug.texi \
+	  $(srcdir)/ada/ug_words \
+	  $(srcdir)/ada/gnat_ug_unx.texi
 
-$(srcdir)/ada/gnat_ug_vms.texi : ada/doctools/xgnatug \
-	$(srcdir)/ada/gnat_ug.texi $(srcdir)/ada/ug_words
-	ada/doctools/xgnatug vms $(srcdir)/ada/gnat_ug.texi $(srcdir)/ada/ug_words $(srcdir)/ada/gnat_ug_vms.texi
+$(srcdir)/ada/gnat_ug_vms.texi: $(srcdir)/ada/stamp-xgnatug
+	ada/doctools/xgnatug vms $(srcdir)/ada/gnat_ug.texi \
+ 	  $(srcdir)/ada/ug_words \
+	  $(srcdir)/ada/gnat_ug_vms.texi
 
-$(srcdir)/ada/gnat_ug_vxw.texi : ada/doctools/xgnatug \
-	$(srcdir)/ada/gnat_ug.texi $(srcdir)/ada/ug_words
-	ada/doctools/xgnatug vxworks $(srcdir)/ada/gnat_ug.texi $(srcdir)/ada/ug_words $(srcdir)/ada/gnat_ug_vxw.texi
+$(srcdir)/ada/gnat_ug_vxw.texi: $(srcdir)/ada/stamp-xgnatug
+	ada/doctools/xgnatug vxworks $(srcdir)/ada/gnat_ug.texi \
+ 	  $(srcdir)/ada/ug_words \
+	  $(srcdir)/ada/gnat_ug_vxw.texi
 
-$(srcdir)/ada/gnat_ug_wnt.texi : ada/doctools/xgnatug \
-	$(srcdir)/ada/gnat_ug.texi $(srcdir)/ada/ug_words
-	ada/doctools/xgnatug wnt $(srcdir)/ada/gnat_ug.texi $(srcdir)/ada/ug_words $(srcdir)/ada/gnat_ug_wnt.texi
+$(srcdir)/ada/gnat_ug_wnt.texi: $(srcdir)/ada/stamp-xgnatug
+	ada/doctools/xgnatug wnt $(srcdir)/ada/gnat_ug.texi \
+	  $(srcdir)/ada/ug_words \
+	  $(srcdir)/ada/gnat_ug_wnt.texi
 
 $(docobjdir)/gnat_ug_unx.info : $(srcdir)/ada/gnat_ug_unx.texi \
 	$(srcdir)/doc/include/fdl.texi $(srcdir)/doc/include/gcc-common.texi \
diff -Nrdup gcc-orig/gcc/ada/stamp-xgnatug gcc-snapshot/gcc/ada/stamp-xgnatug
--- gcc-orig/gcc/ada/stamp-xgnatug	2003-12-12 14:45:18.536650000 -0500
+++ gcc-snapshot/gcc/ada/stamp-xgnatug	2003-12-10 14:42:14.849197000 -0500
@@ -0,0 +1 @@
+timestamp

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]