diff options
author | Paul Smith <psmith@gnu.org> | 2005-10-26 16:06:30 +0000 |
---|---|---|
committer | Paul Smith <psmith@gnu.org> | 2005-10-26 16:06:30 +0000 |
commit | 82103b1a49394a7063f8cddfc89f759ddf847de9 (patch) | |
tree | 09c74c9e3caf9d6ed43e60053fb878010258d137 | |
parent | 11095a90f120545c915c92b8ebf48f04723d1837 (diff) | |
download | gunmake-82103b1a49394a7063f8cddfc89f759ddf847de9.tar.gz |
Fix a crash I introduced last-minute.
Try to avoid extraneous rebuilds of template files.
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | implicit.c | 38 | ||||
-rw-r--r-- | maintMakefile | 3 | ||||
-rw-r--r-- | read.c | 12 | ||||
-rw-r--r-- | tests/scripts/misc/general4 | 5 |
5 files changed, 36 insertions, 28 deletions
@@ -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 @@ -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) { diff --git a/maintMakefile b/maintMakefile index b679eb4..708e718 100644 --- a/maintMakefile +++ b/maintMakefile @@ -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. # @@ -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); } diff --git a/tests/scripts/misc/general4 b/tests/scripts/misc/general4 index 0b5c94a..bce4a30 100644 --- a/tests/scripts/misc/general4 +++ b/tests/scripts/misc/general4 @@ -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; |