| # -*-perl-*- |
| $description = "Test second expansion in static pattern rules."; |
| |
| $details = ""; |
| |
| # Test #1: automatic variables. |
| # |
| run_make_test(q! |
| .SECONDEXPANSION: |
| .DEFAULT: ; @echo '$@' |
| |
| foo.a foo.b: foo.%: bar.% baz.% |
| foo.a foo.b: foo.%: biz.% | buz.% |
| |
| foo.a foo.b: foo.%: $$@.1 \ |
| $$<.2 \ |
| $$(addsuffix .3,$$^) \ |
| $$(addsuffix .4,$$+) \ |
| $$|.5 \ |
| $$*.6 |
| !, |
| '', 'bar.a |
| baz.a |
| biz.a |
| buz.a |
| foo.a.1 |
| bar.a.2 |
| bar.a.3 |
| baz.a.3 |
| biz.a.3 |
| bar.a.4 |
| baz.a.4 |
| biz.a.4 |
| buz.a.5 |
| a.6 |
| '); |
| |
| |
| # Test #2: target/pattern -specific variables. |
| # |
| run_make_test(q! |
| .SECONDEXPANSION: |
| .DEFAULT: ; @echo '$@' |
| |
| foo.x foo.y: foo.%: $$(%_a) $$($$*_b) |
| |
| foo.x: x_a := bar |
| |
| %.x: x_b := baz |
| !, |
| '', "bar\nbaz\n"); |
| |
| |
| # Test #3: order of prerequisites. |
| # |
| run_make_test(q! |
| .SECONDEXPANSION: |
| .DEFAULT: ; @echo '$@' |
| |
| all: foo.a bar.a baz.a |
| |
| # Subtest #1 |
| foo.a foo.b: foo.%: foo.%.1; @: |
| foo.a foo.b: foo.%: foo.%.2 |
| foo.a foo.b: foo.%: foo.%.3 |
| |
| |
| # Subtest #2 |
| bar.a bar.b: bar.%: bar.%.2 |
| bar.a bar.b: bar.%: bar.%.1; @: |
| bar.a bar.b: bar.%: bar.%.3 |
| |
| |
| # Subtest #3 |
| baz.a baz.b: baz.%: baz.%.1 |
| baz.a baz.b: baz.%: baz.%.2 |
| baz.a baz.b: ; @: |
| !, |
| '', 'foo.a.1 |
| foo.a.2 |
| foo.a.3 |
| bar.a.1 |
| bar.a.2 |
| bar.a.3 |
| baz.a.1 |
| baz.a.2 |
| '); |
| |
| |
| # Test #4: Make sure stem triple-expansion does not happen. |
| # |
| run_make_test(q! |
| .SECONDEXPANSION: |
| foo$$bar: f%r: % $$*.1 |
| @echo '$*' |
| |
| oo$$ba oo$$ba.1: |
| @echo '$@' |
| !, |
| '', 'oo$ba |
| oo$ba.1 |
| oo$ba |
| '); |
| |
| |
| # This tells the test driver that the perl test script executed properly. |
| 1; |