summaryrefslogtreecommitdiffstats
path: root/make/make-3.81/tests/scripts/features/patternrules
diff options
context:
space:
mode:
authorLukc <lukc@upyum.com>2010-12-11 19:15:23 +0100
committerLukc <lukc@upyum.com>2010-12-11 19:15:35 +0100
commit6d908a38e05b9d4135c65d23114a5874215b5bb8 (patch)
treeb5e6da6d95b9a1235d82032b509b80483a886ff5 /make/make-3.81/tests/scripts/features/patternrules
downloadbase-6d908a38e05b9d4135c65d23114a5874215b5bb8.tar.gz
base-6d908a38e05b9d4135c65d23114a5874215b5bb8.tar.bz2
base-6d908a38e05b9d4135c65d23114a5874215b5bb8.tar.xz
base-6d908a38e05b9d4135c65d23114a5874215b5bb8.zip
Engagement initial.
Diffstat (limited to 'make/make-3.81/tests/scripts/features/patternrules')
-rw-r--r--make/make-3.81/tests/scripts/features/patternrules149
1 files changed, 149 insertions, 0 deletions
diff --git a/make/make-3.81/tests/scripts/features/patternrules b/make/make-3.81/tests/scripts/features/patternrules
new file mode 100644
index 0000000..90525ae
--- /dev/null
+++ b/make/make-3.81/tests/scripts/features/patternrules
@@ -0,0 +1,149 @@
+# -*-perl-*-
+
+$description = "Test pattern rules.";
+
+$details = "";
+
+use Cwd;
+
+$dir = cwd;
+$dir =~ s,.*/([^/]+)$,../$1,;
+
+
+# TEST #1: Make sure that multiple patterns where the same target
+# can be built are searched even if the first one fails
+# to match properly.
+#
+
+run_make_test('
+.PHONY: all
+
+all: case.1 case.2 case.3
+a: void
+
+# 1 - existing file
+%.1: void
+ @exit 1
+%.1: #MAKEFILE#
+ @exit 0
+
+# 2 - phony
+%.2: void
+ @exit 1
+%.2: 2.phony
+ @exit 0
+.PHONY: 2.phony
+
+# 3 - implicit-phony
+%.3: void
+ @exit 1
+%.3: 3.implicit-phony
+ @exit 0
+
+3.implicit-phony:
+',
+'',
+'');
+
+# TEST #2: make sure files that are built via implicit rules are marked
+# as targets (Savannah bug #12202).
+#
+run_make_test('
+TARGETS := foo foo.out
+
+.PHONY: all foo.in
+
+all: $(TARGETS)
+
+%: %.in
+ @echo $@
+
+%.out: %
+ @echo $@
+
+foo.in: ; @:
+
+',
+'',
+'foo
+foo.out');
+
+
+# TEST #3: make sure intermidite files that also happened to be
+# prerequisites are not removed (Savannah bug #12267).
+#
+run_make_test('
+$(dir)/foo.o:
+
+$(dir)/foo.y:
+ @echo $@
+
+%.c: %.y
+ touch $@
+
+%.o: %.c
+ @echo $@
+
+.PHONY: install
+install: $(dir)/foo.c
+
+',
+"dir=$dir",
+"$dir/foo.y
+touch $dir/foo.c
+$dir/foo.o");
+
+unlink("$dir/foo.c");
+
+
+# TEST #4: make sure precious flag is set properly for targets
+# that are built via implicit rules (Savannah bug #13218).
+#
+run_make_test('
+.DELETE_ON_ERROR:
+
+.PRECIOUS: %.bar
+
+%.bar:; @touch $@ && exit 1
+
+$(dir)/foo.bar:
+
+',
+"dir=$dir",
+"#MAKE#: *** [$dir/foo.bar] Error 1",
+512);
+
+unlink("$dir/foo.bar");
+
+
+# TEST #5: make sure targets of a macthed implicit pattern rule never
+# never considered intermediate (Savannah bug #13022).
+#
+run_make_test('
+.PHONY: all
+all: foo.c foo.o
+
+%.h %.c: %.in
+ touch $*.h
+ touch $*.c
+
+%.o: %.c %.h
+ echo $+ >$@
+
+%.o: %.c
+ @echo wrong rule
+
+foo.in:
+ touch $@
+
+',
+'',
+'touch foo.in
+touch foo.h
+touch foo.c
+echo foo.c foo.h >foo.o');
+
+unlink('foo.in', 'foo.h', 'foo.c', 'foo.o');
+
+# This tells the test driver that the perl test script executed properly.
+1;