Create empty.h (used to force rebuilds of version.o by the automake
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Wed, 14 Sep 2011 15:54:26 +0000 (15:54 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Wed, 14 Sep 2011 15:54:26 +0000 (15:54 +0000)
makefile) as a side effect of running mkfiles.pl.

The automake docs observe that the BUILT_SOURCES list is only
automatically built by plain 'make' or 'make all' or a couple of other
targets, so the sequence './configure && make plink' from a freshly
unpacked tar file would previously fail for lack of empty.h.

If empty.h had important _content_ that needed to be built at compile
time, of course, I wouldn't be able to fix it like this; but since the
only important thing is the timestamp, I can just make sure it already
exists at the time of first build.

git-svn-id: svn://svn.tartarus.org/sgt/putty@9288 cda61777-01e9-0310-a592-d414129be87e

Recipe
mkfiles.pl

diff --git a/Recipe b/Recipe
index 77f3be0..677d42e 100644 (file)
--- a/Recipe
+++ b/Recipe
@@ -179,9 +179,12 @@ version.o: FORCE
 BUILT_SOURCES = empty.h
 CLEANFILES = empty.h
 empty.h: $(allsources)
-       echo '/* nothing to see here */' >$@
+       echo '/* Empty file touched by automake makefile to force rebuild of version.o */' >$@
 
 !end
+!begin >empty.h
+/* Empty file touched by automake makefile to force rebuild of version.o */
+!end
 
 # Add VER to Windows resource targets, and force them to be rebuilt every
 # time, on the assumption that they will contain version information.
index 830de49..b38a218 100755 (executable)
@@ -88,7 +88,9 @@ while (<IN>) {
   }
   if ($_[0] eq "!forceobj") { $forceobj{$_[1]} = 1; next; }
   if ($_[0] eq "!begin") {
-      if (&mfval($_[1])) {
+      if ($_[1] =~ /^>(.*)/) {
+         $divert = \$auxfiles{$1};
+      } elsif (&mfval($_[1])) {
           $sect = $_[2] ? $_[2] : "end";
          $divert = \($makefile_extra{$_[1]}->{$sect});
       } else {
@@ -145,6 +147,12 @@ while (<IN>) {
 
 close IN;
 
+foreach $aux (sort keys %auxfiles) {
+    open AUX, ">$aux";
+    print AUX $auxfiles{$aux};
+    close AUX;
+}
+
 # Now retrieve the complete list of objects and resource files, and
 # construct dependency data for them. While we're here, expand the
 # object list for each program, and complain if its type isn't set.