| # -*-perl-*- |
| |
| $description = "Test the filter and filter-out functions."; |
| |
| $details = "The makefile created in this test has two variables. The |
| filter-out function is first used to discard names ending in |
| .o with a single simple pattern. The second filter-out function |
| augments the simple pattern with three literal names, which are |
| also added to the text argument. This tests an internal hash table |
| which is only used if there are multiple literals present in both |
| the pattern and text arguments. The result of both filter-out |
| functions is the same single .elc name.\n"; |
| |
| # Basic test -- filter |
| run_make_test(q! |
| files1 := $(filter %.o, foo.elc bar.o lose.o) |
| files2 := $(filter %.o foo.i, foo.i bar.i lose.i foo.elc bar.o lose.o) |
| all: ; @echo '$(files1) $(files2)' |
| !, |
| '', "bar.o lose.o foo.i bar.o lose.o\n"); |
| |
| # Basic test -- filter-out |
| run_make_test(q! |
| files1 := $(filter-out %.o, foo.elc bar.o lose.o) |
| files2 := $(filter-out foo.i bar.i lose.i %.o, foo.i bar.i lose.i foo.elc bar.o lose.o) |
| all: ; @echo '$(files1) $(files2)' |
| !, |
| '', "foo.elc foo.elc\n"); |
| |
| # Escaped patterns |
| run_make_test(q!all:;@echo '$(filter foo\%bar,foo%bar fooXbar)'!, |
| '', "foo%bar\n"); |
| |
| run_make_test(q!all:;@echo '$(filter foo\%\%\\\\\%\%bar,foo%%\\%%bar fooX\\Ybar)'!, |
| '', "foo%%\\%%bar\n"); |
| |
| run_make_test(q! |
| X = $(filter foo\\\\\%bar,foo\%bar foo\Xbar) |
| all:;@echo '$(X)'!, |
| '', "foo\\%bar\n"); |
| |
| 1; |