Fix a crash I introduced last-minute.
authorPaul Smith <psmith@gnu.org>
Wed, 26 Oct 2005 16:06:30 +0000 (16:06 +0000)
committerPaul Smith <psmith@gnu.org>
Wed, 26 Oct 2005 16:06:30 +0000 (16:06 +0000)
Try to avoid extraneous rebuilds of template files.

ChangeLog
implicit.c
maintMakefile
read.c
tests/scripts/misc/general4

index 1aadcd6..7565fb0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2005-10-26  Paul Smith  <psmith@gnu.org>
+
+       * read.c (record_files): Don't set deps flags if there are no deps.
+       * maintMakefile: We only need to build the templates when we are
+       creating a distribution, so don't do it for "all".
+
 2005-10-24  Paul D. Smith  <psmith@gnu.org>
 
        Make secondary expansion optional: its enabled by declaring the
index 57510d7..ad873f1 100644 (file)
@@ -484,13 +484,13 @@ pattern_search (struct file *file, int archive,
               unsigned int order_only = 0; /* Set if '|' was seen. */
 
               /* In an ideal world we would take the dependency line,
-                 substitute the stem, re-expand the whole line and
-                 chop it into individual prerequisites. Unfortunately
-                 this won't work because of the "check_lastslash" twist.
-                 Instead, we will have to go word by word, taking $()'s
-                 into account, for each word we will substitute the stem,
-                 re-expand, chop it up, and, if check_lastslash != 0,
-                 add the directory part to each resulting prerequisite.  */
+                 substitute the stem, re-expand the whole line and chop it
+                 into individual prerequisites. Unfortunately this won't work
+                 because of the "check_lastslash" twist.  Instead, we will
+                 have to go word by word, taking $()'s into account, for each
+                 word we will substitute the stem, re-expand, chop it up, and,
+                 if check_lastslash != 0, add the directory part to each
+                 resulting prerequisite.  */
 
               p = get_next_word (dep->name, &len);
 
@@ -555,8 +555,8 @@ pattern_search (struct file *file, int archive,
                                           1), sizeof (struct idep));
 
                       /* @@ It would be nice to teach parse_file_seq or
-                         multi_glob to add prefix. This would save us
-                         some reallocations. */
+                         multi_glob to add prefix. This would save us some
+                         reallocations. */
 
                       if (order_only || add_dir || had_stem)
                         {
@@ -612,10 +612,9 @@ pattern_search (struct file *file, int archive,
 
               if (file_impossible_p (name))
                 {
-                  /* If this dependency has already been ruled
-                     "impossible", then the rule fails and don't
-                     bother trying it on the second pass either
-                     since we know that will fail too.  */
+                  /* If this dependency has already been ruled "impossible",
+                     then the rule fails and don't bother trying it on the
+                     second pass either since we know that will fail too.  */
                   DBS (DB_IMPLICIT,
                        (d->had_stem
                         ? _("Rejecting impossible implicit prerequisite `%s'.\n")
@@ -632,10 +631,9 @@ pattern_search (struct file *file, int archive,
                     ? _("Trying implicit prerequisite `%s'.\n")
                     : _("Trying rule prerequisite `%s'.\n"), name));
 
-              /* If this prerequisite also happened to be explicitly
-                 mentioned for FILE skip all the test below since it
-                 it has to be built anyway, no matter which implicit
-                 rule we choose. */
+              /* If this prerequisite also happened to be explicitly mentioned
+                 for FILE skip all the test below since it it has to be built
+                 anyway, no matter which implicit rule we choose. */
 
               for (expl_d = file->deps; expl_d != 0; expl_d = expl_d->next)
                 if (strcmp (dep_name (expl_d), name) == 0) break;
@@ -675,9 +673,9 @@ pattern_search (struct file *file, int archive,
                 }
 
 
-              /* We could not find the file in any place we should look.
-                 Try to make this dependency as an intermediate file,
-                 but only on the second pass.  */
+              /* We could not find the file in any place we should look.  Try
+                 to make this dependency as an intermediate file, but only on
+                 the second pass.  */
 
               if (intermed_ok)
                 {
index b679eb4..708e718 100644 (file)
@@ -13,7 +13,8 @@ TEMPLATES = README README.DOS README.W32 README.OS2 \
            config.ami configh.dos config.h.W32 config.h-vms
 MTEMPLATES = Makefile.DOS SMakefile
 
-all-am: $(TEMPLATES) $(MTEMPLATES) build.sh.in
+# These are built as a side-effect of the dist rule
+#all-am: $(TEMPLATES) $(MTEMPLATES) build.sh.in
 
 # General rule for turning a .template into a regular file.
 #
diff --git a/read.c b/read.c
index bad07eb..9fbfd35 100644 (file)
--- a/read.c
+++ b/read.c
@@ -1969,7 +1969,8 @@ record_files (struct nameseq *filenames, char *pattern, char *pattern_percent,
              the last one.  It is not safe for the same deps to go in more
              than one place in the database.  */
           this = nextf != 0 ? copy_dep_chain (deps) : deps;
-          this->need_2nd_expansion = second_expansion;
+          this->need_2nd_expansion = (second_expansion
+                                     && strchr (this->name, '$'));
         }
 
       if (!two_colon)
@@ -2129,9 +2130,12 @@ record_files (struct nameseq *filenames, char *pattern, char *pattern_percent,
     {
       targets[target_idx] = 0;
       target_percents[target_idx] = 0;
-      deps->need_2nd_expansion = second_expansion;
-      /* We set this to indicate we've not yet parsed the prereq string.  */
-      deps->staticpattern = 1;
+      if (deps)
+       {
+         deps->need_2nd_expansion = second_expansion;
+         /* We set this to indicate the prereq string hasn't been parsed.  */
+         deps->staticpattern = 1;
+       }
       create_pattern_rule (targets, target_percents, two_colon, deps, cmds, 1);
       free ((char *) target_percents);
     }
index 0b5c94a..bce4a30 100644 (file)
@@ -48,10 +48,9 @@ run_make_test(q!
 %.foo : baz$$bar ; @echo 'done $<'
 %.foo : bar$$baz ; @echo 'done $<'
 test.foo:
-fox: baz
-.DEFAULT baz$$bar bar$$baz: ; @echo '$@'
+baz$$bar bar$$baz: ; @echo '$@'
 !,
               '',
-              'done bar');
+              "baz\$bar\ndone baz\$bar");
 
 1;