Add missing load.c file to POTFILES.in
[make.git] / tests / scripts / features / se_implicit
blobe9acb2f55e0172e57c040db6d8da3038a7f008dd
1 #                                                                    -*-perl-*-
2 $description = "Test second expansion in ordinary rules.";
4 $details = "";
6 use Cwd;
8 $dir = cwd;
9 $dir =~ s,.*/([^/]+)$,../$1,;
12 # Test #1: automatic variables.
14 run_make_test(q!
15 .SECONDEXPANSION:
16 .DEFAULT: ; @echo '$@'
18 foo.a: bar baz
20 foo.a: biz | buz
22 foo.%: 1.$$@ \
23        2.$$< \
24        $$(addprefix 3.,$$^) \
25        $$(addprefix 4.,$$+) \
26        5.$$| \
27        6.$$*
28         @:
30 1.foo.a \
31 2.bar \
32 3.bar \
33 3.baz \
34 3.biz \
35 4.bar \
36 4.baz \
37 4.biz \
38 5.buz \
39 6.a:
40         @echo '$@'
43 '',
44 '1.foo.a
45 2.bar
46 3.bar
47 3.baz
48 3.biz
49 4.bar
50 4.baz
51 4.biz
52 5.buz
53 6.a
54 bar
55 baz
56 biz
57 buz
58 ');
61 # Test #2: target/pattern -specific variables.
63 run_make_test(q!
64 .SECONDEXPANSION:
65 foo.x:
67 foo.%: $$(%_a) $$(%_b) bar
68         @:
70 foo.x: x_a := bar
72 %.x: x_b := baz
74 bar baz: ; @echo '$@'
76               '', "bar\nbaz\n");
79 # Test #3: order of prerequisites.
81 run_make_test(q!
82 .SECONDEXPANSION:
83 .DEFAULT: ; @echo '$@'
85 all: foo bar baz
88 # Subtest #1
90 %oo: %oo.1; @:
92 foo: foo.2
94 foo: foo.3
96 foo.1: ; @echo '$@'
99 # Subtest #2
101 bar: bar.2
103 %ar: %ar.1; @:
105 bar: bar.3
107 bar.1: ; @echo '$@'
110 # Subtest #3
112 baz: baz.1
114 baz: baz.2
116 %az: ; @:
118               '',
119 'foo.1
120 foo.2
121 foo.3
122 bar.1
123 bar.2
124 bar.3
125 baz.1
126 baz.2
130 # Test #4: stem splitting logic.
132 run_make_test(q!
133 .SECONDEXPANSION:
134 $(dir)/tmp/bar.o:
136 $(dir)/tmp/foo/bar.c: ; @echo '$@'
137 $(dir)/tmp/bar/bar.c: ; @echo '$@'
138 foo.h: ; @echo '$@'
140 %.o: $$(addsuffix /%.c,foo bar) foo.h
141         @echo '$@: {$<} $^'
143               "dir=$dir", "$dir/tmp/foo/bar.c
144 $dir/tmp/bar/bar.c
145 foo.h
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.
152 run_make_test(q!
153 .SECONDEXPANSION:
154 $(dir)/tmp/foo.o: $(dir)/tmp/foo.c
155 $(dir)/tmp/foo.c: ; @echo '$@'
156 bar.h: ; @echo '$@'
158 %.o: %.c|bar.h
159         @echo '$@: {$<} {$|} $^'
162               "dir=$dir", "$dir/tmp/foo.c
163 bar.h
164 $dir/tmp/foo.o: {$dir/tmp/foo.c} {bar.h} $dir/tmp/foo.c
168 # Test #6: lack of implicit prerequisites.
170 run_make_test(q!
171 .SECONDEXPANSION:
172 foo.o: foo.c
173 foo.c: ; @echo '$@'
175 %.o:
176         @echo '$@: {$<} $^'
178               '', "foo.c\nfoo.o: {foo.c} foo.c\n");
181 # Test #7: Test stem from the middle of the name.
183 run_make_test(q!
184 .SECONDEXPANSION:
185 foobarbaz:
187 foo%baz: % $$*.1
188         @echo '$*'
190 bar bar.1:
191         @echo '$@'
193               '', "bar\nbar.1\nbar\n");
196 # Test #8: Make sure stem triple-expansion does not happen.
198 run_make_test(q!
199 .SECONDEXPANSION:
200 foo$$bar:
202 f%r: % $$*.1
203         @echo '$*'
205 oo$$ba oo$$ba.1:
206         @echo '$@'
208               '', 'oo$ba
209 oo$ba.1
210 oo$ba
213 # Test #9: Check the value of $^
214 run_make_test(q!
215 .SECONDEXPANSION:
217 %.so: | $$(extra) ; @echo $^
219 foo.so: extra := foo.o
220 foo.so:
221 foo.o:
223               '', "\n");
225 # This tells the test driver that the perl test script executed properly.