| # -*-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; |