| $description = "The following test creates a makefile to test static \n" | |
| ."pattern rules. Static pattern rules are rules which \n" | |
| ."specify multiple targets and construct the dependency \n" | |
| ."names for each target based on the target name. "; | |
| $details = "The makefile created in this test has three targets. The \n" | |
| ."filter command is used to get those target names ending in \n" | |
| .".o and statically creates a compile command with the target\n" | |
| ."name and the target name with .c. It also does the same thing\n" | |
| ."for another target filtered with .elc and creates a command\n" | |
| ."to emacs a .el file"; | |
| open(MAKEFILE,"> $makefile"); | |
| # The Contents of the MAKEFILE ... | |
| print MAKEFILE "files = foo.elc bar.o lose.o \n\n" | |
| ."\$(filter %.o,\$(files)): %.o: %.c\n" | |
| ."\t\@echo CC -c \$(CFLAGS) \$< -o \$@ \n" | |
| ."\$(filter %.elc,\$(files)): %.elc: %.el \n" | |
| ."\t\@echo emacs \$< \n"; | |
| # END of Contents of MAKEFILE | |
| close(MAKEFILE); | |
| &touch("bar.c","lose.c"); | |
| # TEST #1 | |
| # ------- | |
| &run_make_with_options($makefile, | |
| "", | |
| &get_logfile, | |
| 0); | |
| # Create the answer to what should be produced by this Makefile | |
| $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"); | |
| 1; | |