Fix a crash I introduced last-minute.

Try to avoid extraneous rebuilds of template files.
This commit is contained in:
Paul Smith 2005-10-26 16:06:30 +00:00
parent 11095a90f1
commit 82103b1a49
5 changed files with 36 additions and 28 deletions

View file

@ -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

View 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)
{

View 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.
#

12
read.c
View 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);
}

View 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;