mirror of
https://github.com/mirror/make.git
synced 2024-12-26 21:00:30 +08:00
Fix a crash I introduced last-minute.
Try to avoid extraneous rebuilds of template files.
This commit is contained in:
parent
11095a90f1
commit
82103b1a49
@ -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
|
||||
|
38
implicit.c
38
implicit.c
@ -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)
|
||||
{
|
||||
|
@ -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
12
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);
|
||||
}
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user