1 | # -*-perl-*-
|
---|
2 | $description = "Test second expansion in ordinary rules.";
|
---|
3 |
|
---|
4 | $details = "";
|
---|
5 |
|
---|
6 | use Cwd;
|
---|
7 |
|
---|
8 | $dir = cwd;
|
---|
9 | $dir =~ s,.*/([^/]+)$,../$1,;
|
---|
10 |
|
---|
11 |
|
---|
12 | # Test #1: automatic variables.
|
---|
13 | #
|
---|
14 | run_make_test('
|
---|
15 | .DEFAULT: ; @echo $@
|
---|
16 |
|
---|
17 | foo.a: bar baz
|
---|
18 |
|
---|
19 | foo.a: biz | buz
|
---|
20 |
|
---|
21 | foo.%: 1.$$@ \
|
---|
22 | 2.$$< \
|
---|
23 | $$(addprefix 3.,$$^) \
|
---|
24 | $$(addprefix 4.,$$+) \
|
---|
25 | 5.$$| \
|
---|
26 | 6.$$*
|
---|
27 | @:
|
---|
28 |
|
---|
29 | 1.foo.a \
|
---|
30 | 2.bar \
|
---|
31 | 3.bar \
|
---|
32 | 3.baz \
|
---|
33 | 3.biz \
|
---|
34 | 4.bar \
|
---|
35 | 4.baz \
|
---|
36 | 4.biz \
|
---|
37 | 5.buz \
|
---|
38 | 6.a:
|
---|
39 | @echo $@
|
---|
40 |
|
---|
41 | ',
|
---|
42 | '',
|
---|
43 | '1.foo.a
|
---|
44 | 2.bar
|
---|
45 | 3.bar
|
---|
46 | 3.baz
|
---|
47 | 3.biz
|
---|
48 | 4.bar
|
---|
49 | 4.baz
|
---|
50 | 4.biz
|
---|
51 | 5.buz
|
---|
52 | 6.a
|
---|
53 | bar
|
---|
54 | baz
|
---|
55 | biz
|
---|
56 | buz
|
---|
57 | ');
|
---|
58 |
|
---|
59 |
|
---|
60 | # Test #2: target/pattern -specific variables.
|
---|
61 | #
|
---|
62 | run_make_test('
|
---|
63 | foo.x:
|
---|
64 |
|
---|
65 | foo.%: $$(%_a) $$(%_b) bar
|
---|
66 | @:
|
---|
67 |
|
---|
68 | foo.x: x_a := bar
|
---|
69 |
|
---|
70 | %.x: x_b := baz
|
---|
71 |
|
---|
72 | bar baz: ; @echo $@
|
---|
73 |
|
---|
74 | ',
|
---|
75 | '',
|
---|
76 | 'bar
|
---|
77 | baz
|
---|
78 | ');
|
---|
79 |
|
---|
80 |
|
---|
81 | # Test #3: order of prerequisites.
|
---|
82 | #
|
---|
83 | run_make_test('
|
---|
84 | .DEFAULT: ; @echo $@
|
---|
85 |
|
---|
86 | all: foo bar baz
|
---|
87 |
|
---|
88 |
|
---|
89 | # Subtest #1
|
---|
90 | #
|
---|
91 | %oo: %oo.1; @:
|
---|
92 |
|
---|
93 | foo: foo.2
|
---|
94 |
|
---|
95 | foo: foo.3
|
---|
96 |
|
---|
97 | foo.1: ; @echo $@
|
---|
98 |
|
---|
99 |
|
---|
100 | # Subtest #2
|
---|
101 | #
|
---|
102 | bar: bar.2
|
---|
103 |
|
---|
104 | %ar: %ar.1; @:
|
---|
105 |
|
---|
106 | bar: bar.3
|
---|
107 |
|
---|
108 | bar.1: ; @echo $@
|
---|
109 |
|
---|
110 |
|
---|
111 | # Subtest #3
|
---|
112 | #
|
---|
113 | baz: baz.1
|
---|
114 |
|
---|
115 | baz: baz.2
|
---|
116 |
|
---|
117 | %az: ; @:
|
---|
118 |
|
---|
119 | ',
|
---|
120 | '',
|
---|
121 | 'foo.1
|
---|
122 | foo.2
|
---|
123 | foo.3
|
---|
124 | bar.1
|
---|
125 | bar.2
|
---|
126 | bar.3
|
---|
127 | baz.1
|
---|
128 | baz.2
|
---|
129 | ');
|
---|
130 |
|
---|
131 |
|
---|
132 | # Test #4: stem splitting logic.
|
---|
133 | #
|
---|
134 | run_make_test('
|
---|
135 | $(dir)/tmp/bar.o:
|
---|
136 |
|
---|
137 | $(dir)/tmp/foo/bar.c: ; @echo $@
|
---|
138 | $(dir)/tmp/bar/bar.c: ; @echo $@
|
---|
139 | foo.h: ; @echo $@
|
---|
140 |
|
---|
141 | %.o: $$(addsuffix /%.c,foo bar) foo.h
|
---|
142 | @echo $@: {$<} $^
|
---|
143 |
|
---|
144 | ',
|
---|
145 | "dir=$dir",
|
---|
146 | "$dir/tmp/foo/bar.c
|
---|
147 | $dir/tmp/bar/bar.c
|
---|
148 | foo.h
|
---|
149 | $dir/tmp/bar.o: {$dir/tmp/foo/bar.c} $dir/tmp/foo/bar.c $dir/tmp/bar/bar.c foo.h
|
---|
150 | ");
|
---|
151 |
|
---|
152 |
|
---|
153 | # Test #5: stem splitting logic and order-only prerequisites.
|
---|
154 | #
|
---|
155 | run_make_test('
|
---|
156 | $(dir)/tmp/foo.o: $(dir)/tmp/foo.c
|
---|
157 | $(dir)/tmp/foo.c: ; @echo $@
|
---|
158 | bar.h: ; @echo $@
|
---|
159 |
|
---|
160 | %.o: %.c|bar.h
|
---|
161 | @echo $@: {$<} {$|} $^
|
---|
162 |
|
---|
163 | ',
|
---|
164 | "dir=$dir",
|
---|
165 | "$dir/tmp/foo.c
|
---|
166 | bar.h
|
---|
167 | $dir/tmp/foo.o: {$dir/tmp/foo.c} {bar.h} $dir/tmp/foo.c
|
---|
168 | ");
|
---|
169 |
|
---|
170 |
|
---|
171 | # Test #6: lack of implicit prerequisites.
|
---|
172 | #
|
---|
173 | run_make_test('
|
---|
174 | foo.o: foo.c
|
---|
175 | foo.c: ; @echo $@
|
---|
176 |
|
---|
177 | %.o:
|
---|
178 | @echo $@: {$<} $^
|
---|
179 |
|
---|
180 | ',
|
---|
181 | '',
|
---|
182 | 'foo.c
|
---|
183 | foo.o: {foo.c} foo.c
|
---|
184 | ');
|
---|
185 |
|
---|
186 | # Test #7: Test stem from the middle of the name.
|
---|
187 | #
|
---|
188 | run_make_test('
|
---|
189 | foobarbaz:
|
---|
190 |
|
---|
191 | foo%baz: % $$*.1
|
---|
192 | @echo $*
|
---|
193 |
|
---|
194 | bar bar.1:
|
---|
195 | @echo $@
|
---|
196 |
|
---|
197 | ',
|
---|
198 | '',
|
---|
199 | 'bar
|
---|
200 | bar.1
|
---|
201 | bar
|
---|
202 | ');
|
---|
203 |
|
---|
204 | # Test #8: Make sure stem triple-expansion does not happen.
|
---|
205 | #
|
---|
206 | run_make_test('
|
---|
207 | foo$$bar:
|
---|
208 |
|
---|
209 | f%r: % $$*.1
|
---|
210 | @echo \'$*\'
|
---|
211 |
|
---|
212 | oo$$ba oo$$ba.1:
|
---|
213 | @echo \'$@\'
|
---|
214 |
|
---|
215 | ',
|
---|
216 | '',
|
---|
217 | 'oo$ba
|
---|
218 | oo$ba.1
|
---|
219 | oo$ba
|
---|
220 | ');
|
---|
221 |
|
---|
222 |
|
---|
223 | # This tells the test driver that the perl test script executed properly.
|
---|
224 | 1;
|
---|