123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- # -*-perl-*-
- $description = "Test handling of static pattern rules.";
- $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";
- open(MAKEFILE,"> $makefile");
- print MAKEFILE <<'EOF';
- files = foo.elc bar.o lose.o
- $(filter %.o,$(files)): %.o: %.c ; @echo CC -c $(CFLAGS) $< -o $@
- $(filter %.elc,$(files)): %.elc: %.el ; @echo emacs $<
- EOF
- close(MAKEFILE);
- &touch('bar.c', 'lose.c');
- # TEST #1
- # -------
- &run_make_with_options($makefile, '', &get_logfile);
- $answer = "CC -c bar.c -o bar.o\n";
- &compare_output($answer, &get_logfile(1));
- # TEST #2
- # -------
- &run_make_with_options($makefile, 'lose.o', &get_logfile);
- $answer = "CC -c lose.c -o lose.o\n";
- &compare_output($answer, &get_logfile(1));
- # TEST #3
- # -------
- &touch("foo.el");
- &run_make_with_options($makefile, 'foo.elc', &get_logfile);
- $answer = "emacs foo.el\n";
- &compare_output($answer, &get_logfile(1));
- unlink('foo.el', 'bar.c', 'lose.c');
- # 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);
- &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));
- 1;
|