2000-03-27 20:53:50 +00:00
|
|
|
# -*-perl-*-
|
|
|
|
$description = "Test handling of static pattern rules.";
|
1999-09-14 02:03:19 +00:00
|
|
|
|
2000-03-27 20:53:50 +00:00
|
|
|
$details = "\
|
|
|
|
The makefile created in this test has three targets. The
|
|
|
|
filter command is used to get those target names ending in
|
|
|
|
.o and statically creates a compile command with the target
|
|
|
|
name and the target name with .c. It also does the same thing
|
|
|
|
for another target filtered with .elc and creates a command
|
|
|
|
to emacs a .el file";
|
1999-09-14 02:03:19 +00:00
|
|
|
|
2000-03-27 20:53:50 +00:00
|
|
|
&touch('bar.c', 'lose.c');
|
1999-09-14 02:03:19 +00:00
|
|
|
|
2005-10-24 13:01:39 +00:00
|
|
|
# TEST #0
|
1999-09-14 02:03:19 +00:00
|
|
|
# -------
|
|
|
|
|
2005-10-24 13:01:39 +00:00
|
|
|
run_make_test('
|
|
|
|
files = foo.elc bar.o lose.o
|
|
|
|
|
|
|
|
$(filter %.o,$(files)): %.o: %.c ; @echo CC -c $(CFLAGS) $< -o $@
|
1999-09-14 02:03:19 +00:00
|
|
|
|
2005-10-24 13:01:39 +00:00
|
|
|
$(filter %.elc,$(files)): %.elc: %.el ; @echo emacs $<
|
|
|
|
',
|
|
|
|
'',
|
|
|
|
'CC -c bar.c -o bar.o');
|
1999-09-14 02:03:19 +00:00
|
|
|
|
2005-10-24 13:01:39 +00:00
|
|
|
# TEST #1
|
1999-09-14 02:03:19 +00:00
|
|
|
# -------
|
|
|
|
|
2005-10-24 13:01:39 +00:00
|
|
|
run_make_test(undef, 'lose.o', 'CC -c lose.c -o lose.o');
|
1999-09-14 02:03:19 +00:00
|
|
|
|
|
|
|
|
2005-10-24 13:01:39 +00:00
|
|
|
# TEST #2
|
1999-09-14 02:03:19 +00:00
|
|
|
# -------
|
|
|
|
&touch("foo.el");
|
|
|
|
|
2005-10-24 13:01:39 +00:00
|
|
|
run_make_test(undef, 'foo.elc', 'emacs foo.el');
|
2000-03-27 20:53:50 +00:00
|
|
|
|
2005-10-24 13:01:39 +00:00
|
|
|
# Clean up after the first tests.
|
2000-03-27 20:53:50 +00:00
|
|
|
unlink('foo.el', 'bar.c', 'lose.c');
|
1999-09-14 02:03:19 +00:00
|
|
|
|
|
|
|
|
2005-10-24 13:01:39 +00:00
|
|
|
# TEST #3 -- PR/1670: don't core dump on invalid static pattern rules
|
2000-03-27 20:53:50 +00:00
|
|
|
# -------
|
|
|
|
|
2005-10-24 13:01:39 +00:00
|
|
|
run_make_test('
|
|
|
|
.DEFAULT: ; @echo $@
|
|
|
|
foo: foo%: % %.x % % % y.% % ; @echo $@
|
|
|
|
',
|
|
|
|
'', ".x\ny.\nfoo");
|
1999-09-14 02:03:19 +00:00
|
|
|
|
|
|
|
|
2005-10-24 13:01:39 +00:00
|
|
|
# TEST #4 -- bug #12180: core dump on a stat pattern rule with an empty
|
2005-03-01 08:01:05 +00:00
|
|
|
# prerequisite list.
|
|
|
|
run_make_test('
|
|
|
|
foo.x bar.x: %.x : ; @echo $@
|
1999-09-14 02:03:19 +00:00
|
|
|
|
2005-03-01 08:01:05 +00:00
|
|
|
',
|
2005-10-24 13:01:39 +00:00
|
|
|
'', 'foo.x');
|
1999-09-14 02:03:19 +00:00
|
|
|
|
2005-08-10 10:21:13 +00:00
|
|
|
|
2005-10-24 13:01:39 +00:00
|
|
|
# TEST #5 -- bug #13881: double colon static pattern rule does not
|
2005-08-10 10:21:13 +00:00
|
|
|
# substitute %.
|
|
|
|
run_make_test('
|
|
|
|
foo.bar:: %.bar: %.baz
|
|
|
|
foo.baz: ;@:
|
|
|
|
',
|
2005-10-24 13:01:39 +00:00
|
|
|
'', '');
|
2005-08-10 10:21:13 +00:00
|
|
|
|
2006-03-17 14:24:20 +00:00
|
|
|
|
|
|
|
# TEST #6: make sure the second stem does not overwrite the first
|
|
|
|
# perprerequisite's stem (Savannah bug #16053).
|
|
|
|
#
|
|
|
|
run_make_test('
|
|
|
|
all.foo.bar: %.foo.bar: %.one
|
|
|
|
|
|
|
|
all.foo.bar: %.bar: %.two
|
|
|
|
|
|
|
|
all.foo.bar:
|
|
|
|
@echo $*
|
|
|
|
@echo $^
|
|
|
|
|
|
|
|
.DEFAULT:;@:
|
|
|
|
',
|
|
|
|
'',
|
|
|
|
'all.foo
|
|
|
|
all.one all.foo.two');
|
|
|
|
|
|
|
|
|
|
|
|
# TEST #7: make sure the second stem does not overwrite the first
|
|
|
|
# perprerequisite's stem when second expansion is enabled
|
|
|
|
# (Savannah bug #16053).
|
|
|
|
#
|
|
|
|
run_make_test('
|
|
|
|
.SECONDEXPANSION:
|
|
|
|
|
|
|
|
all.foo.bar: %.foo.bar: %.one $$*-one
|
|
|
|
|
|
|
|
all.foo.bar: %.bar: %.two $$*-two
|
|
|
|
|
|
|
|
all.foo.bar:
|
|
|
|
@echo $*
|
|
|
|
@echo $^
|
|
|
|
|
|
|
|
.DEFAULT:;@:
|
|
|
|
',
|
|
|
|
'',
|
|
|
|
'all.foo
|
|
|
|
all.one all-one all.foo.two all.foo-two');
|
|
|
|
|
2005-03-01 08:01:05 +00:00
|
|
|
1;
|