2 $description = "Test pattern-specific variable settings.";
5 Create a makefile containing various flavors of pattern-specific variable
6 settings, override and non-override, and using various variable expansion
7 rules, semicolon interference, etc.";
9 open(MAKEFILE,"> $makefile");
11 print MAKEFILE <<'EOF';
12 all: one.x two.x three.x
16 one.x: override FOO = one
19 thr% : override BAZ = three
20 one.x two.x three.x: ; @echo $@: $(FOO) $(BAR) $(BAZ)
21 four.x: baz ; @echo $@: $(FOO) $(BAR) $(BAZ)
22 baz: ; @echo $@: $(FOO) $(BAR) $(BAZ)
24 # test matching multiple patterns
31 ab: ; @echo $(AAA); echo $(BBB)
39 &run_make_with_options($makefile, "", &get_logfile);
40 $answer = "one.x: one two baz\ntwo.x: foo four baz\nthree.x: foo four three\n";
41 &compare_output($answer,&get_logfile(1));
44 # TEST #2 -- try the override feature
46 &run_make_with_options($makefile, "BAZ=five", &get_logfile);
47 $answer = "one.x: one two five\ntwo.x: foo four five\nthree.x: foo four three\n";
48 &compare_output($answer,&get_logfile(1));
51 # TEST #3 -- make sure patterns are inherited properly
53 &run_make_with_options($makefile, "four.x", &get_logfile);
54 $answer = "baz: foo two baz\nfour.x: foo two baz\n";
55 &compare_output($answer,&get_logfile(1));
58 # TEST #4 -- test multiple patterns matching the same target
60 &run_make_with_options($makefile, "ab", &get_logfile);
61 $answer = "aaa bbb\nccc ddd\n";
62 &compare_output($answer,&get_logfile(1));
64 # TEST #5 -- test pattern-specific exported variables
70 @test "$(foo)" = "$$foo"
74 # TEST #6 -- test expansion of pattern-specific simple variables
79 all: inherit := good $$t
82 b%: pattern := good $$t
90 bar: a = global: $(global) pattern: $(pattern) inherit: $(inherit)
92 bar: a := global: $(global) pattern: $(pattern) inherit: $(inherit)
95 bar: ; @echo \'normal: $a;\'
101 %z: a = global: $(global) pattern: $(pattern) inherit: $(inherit)
103 %z: a := global: $(global) pattern: $(pattern) inherit: $(inherit)
106 %z: ; @echo \'pattrn: $a;\'
112 'normal: global: orginal $t pattern: inherit: ;
113 pattrn: global: orginal $t pattern: inherit: ;');
116 # TEST #7 -- test expansion of pattern-specific recursive variables
118 run_make_test(undef, # reuse previous makefile
120 'normal: global: new $t pattern: good $t inherit: good $t;
121 pattrn: global: new $t pattern: good $t inherit: good $t;');