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
|
|
|
open(MAKEFILE,"> $makefile");
|
|
|
|
print MAKEFILE <<'EOF';
|
|
|
|
files = foo.elc bar.o lose.o
|
1999-09-14 02:03:19 +00:00
|
|
|
|
2000-03-27 20:53:50 +00:00
|
|
|
$(filter %.o,$(files)): %.o: %.c ; @echo CC -c $(CFLAGS) $< -o $@
|
1999-09-14 02:03:19 +00:00
|
|
|
|
2000-03-27 20:53:50 +00:00
|
|
|
$(filter %.elc,$(files)): %.elc: %.el ; @echo emacs $<
|
|
|
|
EOF
|
1999-09-14 02:03:19 +00:00
|
|
|
close(MAKEFILE);
|
|
|
|
|
2000-03-27 20:53:50 +00:00
|
|
|
|
|
|
|
&touch('bar.c', 'lose.c');
|
1999-09-14 02:03:19 +00:00
|
|
|
|
|
|
|
# TEST #1
|
|
|
|
# -------
|
|
|
|
|
2000-03-27 20:53:50 +00:00
|
|
|
&run_make_with_options($makefile, '', &get_logfile);
|
1999-09-14 02:03:19 +00:00
|
|
|
$answer = "CC -c bar.c -o bar.o\n";
|
2000-03-27 20:53:50 +00:00
|
|
|
&compare_output($answer, &get_logfile(1));
|
1999-09-14 02:03:19 +00:00
|
|
|
|
|
|
|
|
|
|
|
# TEST #2
|
|
|
|
# -------
|
|
|
|
|
2000-03-27 20:53:50 +00:00
|
|
|
&run_make_with_options($makefile, 'lose.o', &get_logfile);
|
1999-09-14 02:03:19 +00:00
|
|
|
$answer = "CC -c lose.c -o lose.o\n";
|
2000-03-27 20:53:50 +00:00
|
|
|
&compare_output($answer, &get_logfile(1));
|
1999-09-14 02:03:19 +00:00
|
|
|
|
|
|
|
|
|
|
|
# TEST #3
|
|
|
|
# -------
|
|
|
|
&touch("foo.el");
|
|
|
|
|
2000-03-27 20:53:50 +00:00
|
|
|
&run_make_with_options($makefile, 'foo.elc', &get_logfile);
|
1999-09-14 02:03:19 +00:00
|
|
|
$answer = "emacs foo.el\n";
|
2000-03-27 20:53:50 +00:00
|
|
|
&compare_output($answer, &get_logfile(1));
|
|
|
|
|
|
|
|
|
|
|
|
unlink('foo.el', 'bar.c', 'lose.c');
|
1999-09-14 02:03:19 +00:00
|
|
|
|
|
|
|
|
2000-03-27 20:53:50 +00:00
|
|
|
# TEST #4 -- PR/1670: don't core dump on invalid static pattern rules
|
|
|
|
# -------
|
|
|
|
|
|
|
|
$makefile2 = &get_tmpfile;
|
|
|
|
open(MAKEFILE, "> $makefile2");
|
|
|
|
print MAKEFILE "foo: foo%: % ; \@echo $@\n";
|
|
|
|
close(MAKEFILE);
|
1999-09-14 02:03:19 +00:00
|
|
|
|
2000-03-27 20:53:50 +00:00
|
|
|
&run_make_with_options($makefile2, '', &get_logfile, 512);
|
|
|
|
$answer = "$makefile2:1: *** target `foo' leaves prerequisite pattern empty. Stop.\n";
|
|
|
|
&compare_output($answer, &get_logfile(1));
|
1999-09-14 02:03:19 +00:00
|
|
|
|
|
|
|
|
|
|
|
1;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|