| # -*-perl-*- | |
| $description = "Test pattern-specific variable settings."; | |
| $details = "\ | |
| Create a makefile containing various flavors of pattern-specific variable | |
| settings, override and non-override, and using various variable expansion | |
| rules, semicolon interference, etc."; | |
| open(MAKEFILE,"> $makefile"); | |
| print MAKEFILE <<'EOF'; | |
| all: one.x two.x three.x | |
| FOO = foo | |
| BAR = bar | |
| BAZ = baz | |
| thr% : override BAZ = three | |
| t%.x: BAR = four | |
| %.x: BAR = two | |
| %.x: override BAZ = three | |
| one.x: override FOO = one | |
| one.x two.x three.x: ; @echo $(FOO) $(BAR) $(BAZ) | |
| four.x: baz ; @echo $(FOO) $(BAR) $(BAZ) | |
| baz: ; @echo $(FOO) $(BAR) $(BAZ) | |
| EOF | |
| close(MAKEFILE); | |
| # TEST #1 -- basics | |
| &run_make_with_options($makefile, "", &get_logfile); | |
| $answer = "one two three\nfoo four baz\nfoo bar three\n"; | |
| &compare_output($answer,&get_logfile(1)); | |
| # TEST #2 -- try the override feature | |
| &run_make_with_options($makefile, "BAZ=five", &get_logfile); | |
| $answer = "one two three\nfoo four five\nfoo bar three\n"; | |
| &compare_output($answer,&get_logfile(1)); | |
| # TEST #3 -- make sure patterns are inherited properly | |
| &run_make_with_options($makefile, "four.x", &get_logfile); | |
| $answer = "foo two three\nfoo two three\n"; | |
| &compare_output($answer,&get_logfile(1)); | |
| 1; |