2 $description = "Test second expansion in ordinary rules.";
9 $dir =~ s,.*/([^/]+)$,../$1,;
12 # Test #1: automatic variables.
16 .DEFAULT: ; @echo '$@'
24 $$(addprefix 3.,$$^) \
25 $$(addprefix 4.,$$+) \
61 # Test #2: target/pattern -specific variables.
67 foo.%: $$(%_a) $$(%_b) bar
79 # Test #3: order of prerequisites.
83 .DEFAULT: ; @echo '$@'
130 # Test #4: stem splitting logic.
136 $(dir)/tmp/foo/bar.c: ; @echo '$@'
137 $(dir)/tmp/bar/bar.c: ; @echo '$@'
140 %.o: $$(addsuffix /%.c,foo bar) foo.h
143 "dir=$dir", "$dir/tmp/foo/bar.c
146 $dir/tmp/bar.o: {$dir/tmp/foo/bar.c} $dir/tmp/foo/bar.c $dir/tmp/bar/bar.c foo.h
150 # Test #5: stem splitting logic and order-only prerequisites.
154 $(dir)/tmp/foo.o: $(dir)/tmp/foo.c
155 $(dir)/tmp/foo.c: ; @echo '$@'
159 @echo '$@: {$<} {$|} $^'
162 "dir=$dir", "$dir/tmp/foo.c
164 $dir/tmp/foo.o: {$dir/tmp/foo.c} {bar.h} $dir/tmp/foo.c
168 # Test #6: lack of implicit prerequisites.
178 '', "foo.c\nfoo.o: {foo.c} foo.c\n");
181 # Test #7: Test stem from the middle of the name.
193 '', "bar\nbar.1\nbar\n");
196 # Test #8: Make sure stem triple-expansion does not happen.
213 # Test #9: Check the value of $^
217 %.so: | $$(extra) ; @echo $^
219 foo.so: extra := foo.o
225 # Test #10: Test second expansion with second expansion prerequisites
226 # Ensures pattern_search() recurses with SE prereqs.
230 sim_base_rgg := just_a_name
233 sim_%.f: $${sim_$$*_f}
235 sim_%.src: $${sim_$$*_src}
238 $$(if $$(sim_$$*_src),sim_%.src) \
239 $$(if $$(sim_$$*_f),sim_%.f) \
240 $$(if $$(sim_$$*_rgg),$$(sim_$$*_rgg).s)
243 '-s sim_base', "#MAKE#: *** No rule to make target 'sim_base'. Stop.", 512);
247 # Ensure that order-only tokens embedded in second expansions are parsed
253 f%o: $$(PREREQS) ; @echo '$@' from '$^' and '$|'
254 b%r: p1|$$(P2) ; @echo '$@' from '$^' and '$|'
257 "", ": p1\n: p2\nfoo from p1 and p2\nbar from p1 and p2\n");
259 # This tells the test driver that the perl test script executed properly.