1*69606e3fSchristos# -*-perl-*- 2*69606e3fSchristos$description = "Test second expansion in static pattern rules."; 3*69606e3fSchristos 4*69606e3fSchristos$details = ""; 5*69606e3fSchristos 6*69606e3fSchristos# Test #1: automatic variables. 7*69606e3fSchristos# 8*69606e3fSchristosrun_make_test(' 9*69606e3fSchristos.SECONDEXPANSION: 10*69606e3fSchristos.DEFAULT: ; @echo $@ 11*69606e3fSchristos 12*69606e3fSchristosfoo.a foo.b: foo.%: bar.% baz.% 13*69606e3fSchristos 14*69606e3fSchristosfoo.a foo.b: foo.%: biz.% | buz.% 15*69606e3fSchristos 16*69606e3fSchristosfoo.a foo.b: foo.%: $$@.1 \ 17*69606e3fSchristos $$<.2 \ 18*69606e3fSchristos $$(addsuffix .3,$$^) \ 19*69606e3fSchristos $$(addsuffix .4,$$+) \ 20*69606e3fSchristos $$|.5 \ 21*69606e3fSchristos $$*.6 22*69606e3fSchristos 23*69606e3fSchristos', 24*69606e3fSchristos'', 25*69606e3fSchristos'bar.a 26*69606e3fSchristosbaz.a 27*69606e3fSchristosbiz.a 28*69606e3fSchristosbuz.a 29*69606e3fSchristosfoo.a.1 30*69606e3fSchristosbar.a.2 31*69606e3fSchristosbar.a.3 32*69606e3fSchristosbaz.a.3 33*69606e3fSchristosbiz.a.3 34*69606e3fSchristosbar.a.4 35*69606e3fSchristosbaz.a.4 36*69606e3fSchristosbiz.a.4 37*69606e3fSchristosbuz.a.5 38*69606e3fSchristosa.6 39*69606e3fSchristos'); 40*69606e3fSchristos 41*69606e3fSchristos 42*69606e3fSchristos# Test #2: target/pattern -specific variables. 43*69606e3fSchristos# 44*69606e3fSchristosrun_make_test(' 45*69606e3fSchristos.SECONDEXPANSION: 46*69606e3fSchristos.DEFAULT: ; @echo $@ 47*69606e3fSchristos 48*69606e3fSchristosfoo.x foo.y: foo.%: $$(%_a) $$($$*_b) 49*69606e3fSchristos 50*69606e3fSchristosfoo.x: x_a := bar 51*69606e3fSchristos 52*69606e3fSchristos%.x: x_b := baz 53*69606e3fSchristos 54*69606e3fSchristos 55*69606e3fSchristos', 56*69606e3fSchristos'', 57*69606e3fSchristos'bar 58*69606e3fSchristosbaz 59*69606e3fSchristos'); 60*69606e3fSchristos 61*69606e3fSchristos 62*69606e3fSchristos# Test #3: order of prerequisites. 63*69606e3fSchristos# 64*69606e3fSchristosrun_make_test(' 65*69606e3fSchristos.SECONDEXPANSION: 66*69606e3fSchristos.DEFAULT: ; @echo $@ 67*69606e3fSchristos 68*69606e3fSchristosall: foo.a bar.a baz.a 69*69606e3fSchristos 70*69606e3fSchristos# Subtest #1 71*69606e3fSchristos# 72*69606e3fSchristosfoo.a foo.b: foo.%: foo.%.1; @: 73*69606e3fSchristos 74*69606e3fSchristosfoo.a foo.b: foo.%: foo.%.2 75*69606e3fSchristos 76*69606e3fSchristosfoo.a foo.b: foo.%: foo.%.3 77*69606e3fSchristos 78*69606e3fSchristos 79*69606e3fSchristos# Subtest #2 80*69606e3fSchristos# 81*69606e3fSchristosbar.a bar.b: bar.%: bar.%.2 82*69606e3fSchristos 83*69606e3fSchristosbar.a bar.b: bar.%: bar.%.1; @: 84*69606e3fSchristos 85*69606e3fSchristosbar.a bar.b: bar.%: bar.%.3 86*69606e3fSchristos 87*69606e3fSchristos 88*69606e3fSchristos# Subtest #3 89*69606e3fSchristos# 90*69606e3fSchristosbaz.a baz.b: baz.%: baz.%.1 91*69606e3fSchristos 92*69606e3fSchristosbaz.a baz.b: baz.%: baz.%.2 93*69606e3fSchristos 94*69606e3fSchristosbaz.a baz.b: ; @: 95*69606e3fSchristos 96*69606e3fSchristos', 97*69606e3fSchristos'', 98*69606e3fSchristos'foo.a.1 99*69606e3fSchristosfoo.a.2 100*69606e3fSchristosfoo.a.3 101*69606e3fSchristosbar.a.1 102*69606e3fSchristosbar.a.2 103*69606e3fSchristosbar.a.3 104*69606e3fSchristosbaz.a.1 105*69606e3fSchristosbaz.a.2 106*69606e3fSchristos'); 107*69606e3fSchristos 108*69606e3fSchristos 109*69606e3fSchristos# Test #4: Make sure stem triple-expansion does not happen. 110*69606e3fSchristos# 111*69606e3fSchristosrun_make_test(' 112*69606e3fSchristos.SECONDEXPANSION: 113*69606e3fSchristosfoo$$bar: f%r: % $$*.1 114*69606e3fSchristos @echo \'$*\' 115*69606e3fSchristos 116*69606e3fSchristosoo$$ba oo$$ba.1: 117*69606e3fSchristos @echo \'$@\' 118*69606e3fSchristos 119*69606e3fSchristos', 120*69606e3fSchristos'', 121*69606e3fSchristos'oo$ba 122*69606e3fSchristosoo$ba.1 123*69606e3fSchristosoo$ba 124*69606e3fSchristos'); 125*69606e3fSchristos 126*69606e3fSchristos 127*69606e3fSchristos# This tells the test driver that the perl test script executed properly. 128*69606e3fSchristos1; 129