mirror of
https://git.savannah.gnu.org/git/make.git
synced 2024-12-28 15:57:48 +00:00
0afbbf8595
it might be needed: for most situations we parse prereqs immediately as we used to. Reduces memory usage. - Fixes Savannah bug #18622.
107 lines
1.6 KiB
Perl
107 lines
1.6 KiB
Perl
# -*-perl-*-
|
|
$description = "Test second expansion in static pattern rules.";
|
|
|
|
$details = "";
|
|
|
|
# Test #1: automatic variables.
|
|
#
|
|
run_make_test(q!
|
|
.SECONDEXPANSION:
|
|
.DEFAULT: ; @echo '$@'
|
|
|
|
foo.a foo.b: foo.%: bar.% baz.%
|
|
foo.a foo.b: foo.%: biz.% | buz.%
|
|
|
|
foo.a foo.b: foo.%: $$@.1 \
|
|
$$<.2 \
|
|
$$(addsuffix .3,$$^) \
|
|
$$(addsuffix .4,$$+) \
|
|
$$|.5 \
|
|
$$*.6
|
|
!,
|
|
'', 'bar.a
|
|
baz.a
|
|
biz.a
|
|
buz.a
|
|
foo.a.1
|
|
bar.a.2
|
|
bar.a.3
|
|
baz.a.3
|
|
biz.a.3
|
|
bar.a.4
|
|
baz.a.4
|
|
biz.a.4
|
|
buz.a.5
|
|
a.6
|
|
');
|
|
|
|
|
|
# Test #2: target/pattern -specific variables.
|
|
#
|
|
run_make_test(q!
|
|
.SECONDEXPANSION:
|
|
.DEFAULT: ; @echo '$@'
|
|
|
|
foo.x foo.y: foo.%: $$(%_a) $$($$*_b)
|
|
|
|
foo.x: x_a := bar
|
|
|
|
%.x: x_b := baz
|
|
!,
|
|
'', "bar\nbaz\n");
|
|
|
|
|
|
# Test #3: order of prerequisites.
|
|
#
|
|
run_make_test(q!
|
|
.SECONDEXPANSION:
|
|
.DEFAULT: ; @echo '$@'
|
|
|
|
all: foo.a bar.a baz.a
|
|
|
|
# Subtest #1
|
|
foo.a foo.b: foo.%: foo.%.1; @:
|
|
foo.a foo.b: foo.%: foo.%.2
|
|
foo.a foo.b: foo.%: foo.%.3
|
|
|
|
|
|
# Subtest #2
|
|
bar.a bar.b: bar.%: bar.%.2
|
|
bar.a bar.b: bar.%: bar.%.1; @:
|
|
bar.a bar.b: bar.%: bar.%.3
|
|
|
|
|
|
# Subtest #3
|
|
baz.a baz.b: baz.%: baz.%.1
|
|
baz.a baz.b: baz.%: baz.%.2
|
|
baz.a baz.b: ; @:
|
|
!,
|
|
'', 'foo.a.1
|
|
foo.a.2
|
|
foo.a.3
|
|
bar.a.1
|
|
bar.a.2
|
|
bar.a.3
|
|
baz.a.1
|
|
baz.a.2
|
|
');
|
|
|
|
|
|
# Test #4: Make sure stem triple-expansion does not happen.
|
|
#
|
|
run_make_test(q!
|
|
.SECONDEXPANSION:
|
|
foo$$bar: f%r: % $$*.1
|
|
@echo '$*'
|
|
|
|
oo$$ba oo$$ba.1:
|
|
@echo '$@'
|
|
!,
|
|
'', 'oo$ba
|
|
oo$ba.1
|
|
oo$ba
|
|
');
|
|
|
|
|
|
# This tells the test driver that the perl test script executed properly.
|
|
1;
|