mirror of
https://github.com/mirror/make.git
synced 2025-01-09 03:40:26 +08:00
1a5beef51f
- Fix some uncleanliness about the implementation of patterns-specific vars. - Some enhancements to the OS/2 port.
65 lines
1.6 KiB
Perl
65 lines
1.6 KiB
Perl
# -*-perl-*-
|
|
$description = "Test pattern-specific variable settings.";
|
|
|
|
$details = "\
|
|
Create a makefile containing various flavors of pattern-specific variable
|
|
settings, override and non-override, and using various variable expansion
|
|
rules, semicolon interference, etc.";
|
|
|
|
open(MAKEFILE,"> $makefile");
|
|
|
|
print MAKEFILE <<'EOF';
|
|
all: one.x two.x three.x
|
|
FOO = foo
|
|
BAR = bar
|
|
BAZ = baz
|
|
one.x: override FOO = one
|
|
%.x: BAR = two
|
|
t%.x: BAR = four
|
|
thr% : override BAZ = three
|
|
one.x two.x three.x: ; @echo $@: $(FOO) $(BAR) $(BAZ)
|
|
four.x: baz ; @echo $@: $(FOO) $(BAR) $(BAZ)
|
|
baz: ; @echo $@: $(FOO) $(BAR) $(BAZ)
|
|
|
|
# test matching multiple patterns
|
|
a%: AAA = aaa
|
|
%b: BBB = ccc
|
|
a%: BBB += ddd
|
|
%b: AAA ?= xxx
|
|
%b: AAA += bbb
|
|
.PHONY: ab
|
|
ab: ; @echo $(AAA); echo $(BBB)
|
|
EOF
|
|
|
|
close(MAKEFILE);
|
|
|
|
|
|
# TEST #1 -- basics
|
|
|
|
&run_make_with_options($makefile, "", &get_logfile);
|
|
$answer = "one.x: one two baz\ntwo.x: foo four baz\nthree.x: foo four three\n";
|
|
&compare_output($answer,&get_logfile(1));
|
|
|
|
|
|
# TEST #2 -- try the override feature
|
|
|
|
&run_make_with_options($makefile, "BAZ=five", &get_logfile);
|
|
$answer = "one.x: one two five\ntwo.x: foo four five\nthree.x: foo four three\n";
|
|
&compare_output($answer,&get_logfile(1));
|
|
|
|
|
|
# TEST #3 -- make sure patterns are inherited properly
|
|
|
|
&run_make_with_options($makefile, "four.x", &get_logfile);
|
|
$answer = "baz: foo two baz\nfour.x: foo two baz\n";
|
|
&compare_output($answer,&get_logfile(1));
|
|
|
|
|
|
# TEST #4 -- test multiple patterns matching the same target
|
|
|
|
&run_make_with_options($makefile, "ab", &get_logfile);
|
|
$answer = "aaa bbb\nccc ddd\n";
|
|
&compare_output($answer,&get_logfile(1));
|
|
|
|
1;
|