During second expansion of pattern rules only the first pattern in
each "group" was being substituted. E.g. in this makefile:
.SECONDEXPANSION:
all: hello.x
%.x: $$(wordlist 1, 99, %.1 %.%.2) ; $(info $@ from $^)
hello.1 hello.\%.2 \%.1 \%.\%.2: ;
the output would build "hello.1" and "%.%.2" because each function
is considered a single "word" and only the first pattern is replaced.
Fix the expansion so each whitespace-separated string is considered a
word and the first pattern is replaced, giving "hello.1" and
"hello.%.2".
* src/rule.c (snap_implicit_rules): Keep enough space to replace %
with $(*F) if necessary.
* src/implicit.c (pattern_search): During second expansion break each
get_next_word result into individual words and replace the first % in
each with $* or $(*F) as needed.
* tests/scripts/features/patternrules: Add tests for variations.