- Rework secondary expansion so we only defer it if there's a possibility
[make.git] / tests / scripts / features / se_statpat
blobb1e59e1ffc4b006d8bcd993b1c2cbf7d4dc4fae9
1 #                                                                    -*-perl-*-
2 $description = "Test second expansion in static pattern rules.";
4 $details = "";
6 # Test #1: automatic variables.
8 run_make_test(q!
9 .SECONDEXPANSION:
10 .DEFAULT: ; @echo '$@'
12 foo.a foo.b: foo.%: bar.% baz.%
13 foo.a foo.b: foo.%: biz.% | buz.%
15 foo.a foo.b: foo.%: $$@.1 \
16                     $$<.2 \
17                     $$(addsuffix .3,$$^) \
18                     $$(addsuffix .4,$$+) \
19                     $$|.5 \
20                     $$*.6
22               '', 'bar.a
23 baz.a
24 biz.a
25 buz.a
26 foo.a.1
27 bar.a.2
28 bar.a.3
29 baz.a.3
30 biz.a.3
31 bar.a.4
32 baz.a.4
33 biz.a.4
34 buz.a.5
35 a.6
36 ');
39 # Test #2: target/pattern -specific variables.
41 run_make_test(q!
42 .SECONDEXPANSION:
43 .DEFAULT: ; @echo '$@'
45 foo.x foo.y: foo.%: $$(%_a) $$($$*_b)
47 foo.x: x_a := bar
49 %.x: x_b := baz
51               '', "bar\nbaz\n");
54 # Test #3: order of prerequisites.
56 run_make_test(q!
57 .SECONDEXPANSION:
58 .DEFAULT: ; @echo '$@'
60 all: foo.a bar.a baz.a
62 # Subtest #1
63 foo.a foo.b: foo.%: foo.%.1; @:
64 foo.a foo.b: foo.%: foo.%.2
65 foo.a foo.b: foo.%: foo.%.3
68 # Subtest #2
69 bar.a bar.b: bar.%: bar.%.2
70 bar.a bar.b: bar.%: bar.%.1; @:
71 bar.a bar.b: bar.%: bar.%.3
74 # Subtest #3
75 baz.a baz.b: baz.%: baz.%.1
76 baz.a baz.b: baz.%: baz.%.2
77 baz.a baz.b: ; @:
79              '', 'foo.a.1
80 foo.a.2
81 foo.a.3
82 bar.a.1
83 bar.a.2
84 bar.a.3
85 baz.a.1
86 baz.a.2
87 ');
90 # Test #4: Make sure stem triple-expansion does not happen.
92 run_make_test(q!
93 .SECONDEXPANSION:
94 foo$$bar: f%r: % $$*.1
95         @echo '$*'
97 oo$$ba oo$$ba.1:
98         @echo '$@'
100               '', 'oo$ba
101 oo$ba.1
102 oo$ba
106 # This tells the test driver that the perl test script executed properly.