| $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; |
| |
| |
| |
| |
| |
| |