1 | # -*-perl-*-
|
---|
2 | $description = "Test handling of static pattern rules.";
|
---|
3 |
|
---|
4 | $details = "\
|
---|
5 | The makefile created in this test has three targets. The
|
---|
6 | filter command is used to get those target names ending in
|
---|
7 | .o and statically creates a compile command with the target
|
---|
8 | name and the target name with .c. It also does the same thing
|
---|
9 | for another target filtered with .elc and creates a command
|
---|
10 | to emacs a .el file";
|
---|
11 |
|
---|
12 | &touch('bar.c', 'lose.c');
|
---|
13 |
|
---|
14 | # TEST #0
|
---|
15 | # -------
|
---|
16 |
|
---|
17 | run_make_test('
|
---|
18 | files = foo.elc bar.o lose.o
|
---|
19 |
|
---|
20 | $(filter %.o,$(files)): %.o: %.c ; @echo CC -c $(CFLAGS) $< -o $@
|
---|
21 |
|
---|
22 | $(filter %.elc,$(files)): %.elc: %.el ; @echo emacs $<
|
---|
23 | ',
|
---|
24 | '',
|
---|
25 | 'CC -c bar.c -o bar.o');
|
---|
26 |
|
---|
27 | # TEST #1
|
---|
28 | # -------
|
---|
29 |
|
---|
30 | run_make_test(undef, 'lose.o', 'CC -c lose.c -o lose.o');
|
---|
31 |
|
---|
32 |
|
---|
33 | # TEST #2
|
---|
34 | # -------
|
---|
35 | &touch("foo.el");
|
---|
36 |
|
---|
37 | run_make_test(undef, 'foo.elc', 'emacs foo.el');
|
---|
38 |
|
---|
39 | # Clean up after the first tests.
|
---|
40 | unlink('foo.el', 'bar.c', 'lose.c');
|
---|
41 |
|
---|
42 |
|
---|
43 | # TEST #3 -- PR/1670: don't core dump on invalid static pattern rules
|
---|
44 | # -------
|
---|
45 |
|
---|
46 | run_make_test('
|
---|
47 | .DEFAULT: ; @echo $@
|
---|
48 | foo: foo%: % %.x % % % y.% % ; @echo $@
|
---|
49 | ',
|
---|
50 | '', ".x\ny.\nfoo");
|
---|
51 |
|
---|
52 |
|
---|
53 | # TEST #4 -- bug #12180: core dump on a stat pattern rule with an empty
|
---|
54 | # prerequisite list.
|
---|
55 | run_make_test('
|
---|
56 | foo.x bar.x: %.x : ; @echo $@
|
---|
57 |
|
---|
58 | ',
|
---|
59 | '', 'foo.x');
|
---|
60 |
|
---|
61 |
|
---|
62 | # TEST #5 -- bug #13881: double colon static pattern rule does not
|
---|
63 | # substitute %.
|
---|
64 | run_make_test('
|
---|
65 | foo.bar:: %.bar: %.baz
|
---|
66 | foo.baz: ;@:
|
---|
67 | ',
|
---|
68 | '', '');
|
---|
69 |
|
---|
70 |
|
---|
71 | # TEST #6: make sure the second stem does not overwrite the first
|
---|
72 | # perprerequisite's stem (Savannah bug #16053).
|
---|
73 | #
|
---|
74 | run_make_test('
|
---|
75 | all.foo.bar: %.foo.bar: %.one
|
---|
76 |
|
---|
77 | all.foo.bar: %.bar: %.two
|
---|
78 |
|
---|
79 | all.foo.bar:
|
---|
80 | @echo $*
|
---|
81 | @echo $^
|
---|
82 |
|
---|
83 | .DEFAULT:;@:
|
---|
84 | ',
|
---|
85 | '',
|
---|
86 | 'all.foo
|
---|
87 | all.one all.foo.two');
|
---|
88 |
|
---|
89 |
|
---|
90 | # TEST #7: make sure the second stem does not overwrite the first
|
---|
91 | # perprerequisite's stem when second expansion is enabled
|
---|
92 | # (Savannah bug #16053).
|
---|
93 | #
|
---|
94 | run_make_test('
|
---|
95 | .SECONDEXPANSION:
|
---|
96 |
|
---|
97 | all.foo.bar: %.foo.bar: %.one $$*-one
|
---|
98 |
|
---|
99 | all.foo.bar: %.bar: %.two $$*-two
|
---|
100 |
|
---|
101 | all.foo.bar:
|
---|
102 | @echo $*
|
---|
103 | @echo $^
|
---|
104 |
|
---|
105 | .DEFAULT:;@:
|
---|
106 | ',
|
---|
107 | '',
|
---|
108 | 'all.foo
|
---|
109 | all.one all-one all.foo.two all.foo-two');
|
---|
110 |
|
---|
111 | 1;
|
---|