|
Last change
on this file since 501 was 501, checked in by bird, 18 years ago |
|
Load make-3.81/ into vendor/gnumake/current.
|
-
Property svn:eol-style
set to
native
-
Property svn:keywords
set to
Author Date Id Revision
|
|
File size:
2.0 KB
|
| Line | |
|---|
| 1 | # -*-perl-*-
|
|---|
| 2 |
|
|---|
| 3 | $description = "Test pattern rules.";
|
|---|
| 4 |
|
|---|
| 5 | $details = "";
|
|---|
| 6 |
|
|---|
| 7 | use Cwd;
|
|---|
| 8 |
|
|---|
| 9 | $dir = cwd;
|
|---|
| 10 | $dir =~ s,.*/([^/]+)$,../$1,;
|
|---|
| 11 |
|
|---|
| 12 |
|
|---|
| 13 | # TEST #1: Make sure that multiple patterns where the same target
|
|---|
| 14 | # can be built are searched even if the first one fails
|
|---|
| 15 | # to match properly.
|
|---|
| 16 | #
|
|---|
| 17 |
|
|---|
| 18 | run_make_test('
|
|---|
| 19 | .PHONY: all
|
|---|
| 20 |
|
|---|
| 21 | all: case.1 case.2 case.3
|
|---|
| 22 | a: void
|
|---|
| 23 |
|
|---|
| 24 | # 1 - existing file
|
|---|
| 25 | %.1: void
|
|---|
| 26 | @exit 1
|
|---|
| 27 | %.1: #MAKEFILE#
|
|---|
| 28 | @exit 0
|
|---|
| 29 |
|
|---|
| 30 | # 2 - phony
|
|---|
| 31 | %.2: void
|
|---|
| 32 | @exit 1
|
|---|
| 33 | %.2: 2.phony
|
|---|
| 34 | @exit 0
|
|---|
| 35 | .PHONY: 2.phony
|
|---|
| 36 |
|
|---|
| 37 | # 3 - implicit-phony
|
|---|
| 38 | %.3: void
|
|---|
| 39 | @exit 1
|
|---|
| 40 | %.3: 3.implicit-phony
|
|---|
| 41 | @exit 0
|
|---|
| 42 |
|
|---|
| 43 | 3.implicit-phony:
|
|---|
| 44 | ',
|
|---|
| 45 | '',
|
|---|
| 46 | '');
|
|---|
| 47 |
|
|---|
| 48 | # TEST #2: make sure files that are built via implicit rules are marked
|
|---|
| 49 | # as targets (Savannah bug #12202).
|
|---|
| 50 | #
|
|---|
| 51 | run_make_test('
|
|---|
| 52 | TARGETS := foo foo.out
|
|---|
| 53 |
|
|---|
| 54 | .PHONY: all foo.in
|
|---|
| 55 |
|
|---|
| 56 | all: $(TARGETS)
|
|---|
| 57 |
|
|---|
| 58 | %: %.in
|
|---|
| 59 | @echo $@
|
|---|
| 60 |
|
|---|
| 61 | %.out: %
|
|---|
| 62 | @echo $@
|
|---|
| 63 |
|
|---|
| 64 | foo.in: ; @:
|
|---|
| 65 |
|
|---|
| 66 | ',
|
|---|
| 67 | '',
|
|---|
| 68 | 'foo
|
|---|
| 69 | foo.out');
|
|---|
| 70 |
|
|---|
| 71 |
|
|---|
| 72 | # TEST #3: make sure intermidite files that also happened to be
|
|---|
| 73 | # prerequisites are not removed (Savannah bug #12267).
|
|---|
| 74 | #
|
|---|
| 75 | run_make_test('
|
|---|
| 76 | $(dir)/foo.o:
|
|---|
| 77 |
|
|---|
| 78 | $(dir)/foo.y:
|
|---|
| 79 | @echo $@
|
|---|
| 80 |
|
|---|
| 81 | %.c: %.y
|
|---|
| 82 | touch $@
|
|---|
| 83 |
|
|---|
| 84 | %.o: %.c
|
|---|
| 85 | @echo $@
|
|---|
| 86 |
|
|---|
| 87 | .PHONY: install
|
|---|
| 88 | install: $(dir)/foo.c
|
|---|
| 89 |
|
|---|
| 90 | ',
|
|---|
| 91 | "dir=$dir",
|
|---|
| 92 | "$dir/foo.y
|
|---|
| 93 | touch $dir/foo.c
|
|---|
| 94 | $dir/foo.o");
|
|---|
| 95 |
|
|---|
| 96 | unlink("$dir/foo.c");
|
|---|
| 97 |
|
|---|
| 98 |
|
|---|
| 99 | # TEST #4: make sure precious flag is set properly for targets
|
|---|
| 100 | # that are built via implicit rules (Savannah bug #13218).
|
|---|
| 101 | #
|
|---|
| 102 | run_make_test('
|
|---|
| 103 | .DELETE_ON_ERROR:
|
|---|
| 104 |
|
|---|
| 105 | .PRECIOUS: %.bar
|
|---|
| 106 |
|
|---|
| 107 | %.bar:; @touch $@ && exit 1
|
|---|
| 108 |
|
|---|
| 109 | $(dir)/foo.bar:
|
|---|
| 110 |
|
|---|
| 111 | ',
|
|---|
| 112 | "dir=$dir",
|
|---|
| 113 | "#MAKE#: *** [$dir/foo.bar] Error 1",
|
|---|
| 114 | 512);
|
|---|
| 115 |
|
|---|
| 116 | unlink("$dir/foo.bar");
|
|---|
| 117 |
|
|---|
| 118 |
|
|---|
| 119 | # TEST #5: make sure targets of a macthed implicit pattern rule never
|
|---|
| 120 | # never considered intermediate (Savannah bug #13022).
|
|---|
| 121 | #
|
|---|
| 122 | run_make_test('
|
|---|
| 123 | .PHONY: all
|
|---|
| 124 | all: foo.c foo.o
|
|---|
| 125 |
|
|---|
| 126 | %.h %.c: %.in
|
|---|
| 127 | touch $*.h
|
|---|
| 128 | touch $*.c
|
|---|
| 129 |
|
|---|
| 130 | %.o: %.c %.h
|
|---|
| 131 | echo $+ >$@
|
|---|
| 132 |
|
|---|
| 133 | %.o: %.c
|
|---|
| 134 | @echo wrong rule
|
|---|
| 135 |
|
|---|
| 136 | foo.in:
|
|---|
| 137 | touch $@
|
|---|
| 138 |
|
|---|
| 139 | ',
|
|---|
| 140 | '',
|
|---|
| 141 | 'touch foo.in
|
|---|
| 142 | touch foo.h
|
|---|
| 143 | touch foo.c
|
|---|
| 144 | echo foo.c foo.h >foo.o');
|
|---|
| 145 |
|
|---|
| 146 | unlink('foo.in', 'foo.h', 'foo.c', 'foo.o');
|
|---|
| 147 |
|
|---|
| 148 | # This tells the test driver that the perl test script executed properly.
|
|---|
| 149 | 1;
|
|---|
Note:
See
TracBrowser
for help on using the repository browser.