# -*-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;