make/tests/scripts/features/suffixrules
Paul Smith 67e6d81256 [SV 40657] Don't create pattern rules for suffix rules with deps.
* NEWS: Update with a backward-compatibility warning.
* src/rule.c (convert_to_pattern): If a suffix rule has dependencies,
do not create a pattern rule for it.  According to the manual suffix
rules with prerequisites are treated as normal targets.
* tests/scrips/features/suffixrules: Create some regression tests for
.SUFFIXES and suffix rules.
2018-09-15 15:08:29 -04:00

79 lines
1.3 KiB
Perl

# -*-perl-*-
$description = "Test suffix rules.";
$details = "";
# TEST #0: Clear all suffixes
touch('foo.c');
run_make_test(q!
.SUFFIXES:
all: foo.o ; @echo $@ $<
!,
'', "#MAKE#: *** No rule to make target 'foo.o', needed by 'all'. Stop.\n", 512);
unlink('foo.c');
# Test #1: Add a simple suffix rule
touch('foo.baz');
run_make_test(q!
.SUFFIXES: .biz .baz
.baz.biz: ; @echo make $@
!,
'foo.biz', "make foo.biz\n");
unlink('foo.baz');
# Test #2: Make sure the defaults still work
touch('foo.c');
run_make_test(undef, 'foo.o COMPILE.c=@echo OUTPUT_OPTION=', "foo.c\n");
unlink('foo.c');
# Test #3: Replacing all suffixes
touch('foo.baz');
run_make_test(q!
.SUFFIXES:
.SUFFIXES: .biz .baz
.baz.biz: ; @echo make $@
!,
'foo.biz', "make foo.biz\n");
unlink('foo.baz');
# Test #4: Suffix rules with deps are not suffix rules
touch('foo.bar');
run_make_test(q!
.SUFFIXES:
.SUFFIXES: .biz .baz
.baz.biz: foo.bar ; @echo make $@ from $<
!,
'.baz.biz', "make .baz.biz from foo.bar\n");
unlink('foo.bar');
# Test #5: Should not create pattern rules for it either
touch('foo.baz');
run_make_test(undef,
'foo.biz', "#MAKE#: *** No rule to make target 'foo.biz'. Stop.\n", 512);
unlink('foo.baz');
# Complete
1;