mirror of
https://git.savannah.gnu.org/git/make.git
synced 2025-01-04 03:13:48 +00:00
189 lines
2 KiB
Text
189 lines
2 KiB
Text
|
# -*-perl-*-
|
||
|
$description = "Test second expansion in ordinary rules.";
|
||
|
|
||
|
$details = "";
|
||
|
|
||
|
use Cwd;
|
||
|
|
||
|
$dir = cwd;
|
||
|
$dir =~ s,.*/([^/]+)$,../$1,;
|
||
|
|
||
|
|
||
|
# Test #1: automatic variables.
|
||
|
#
|
||
|
run_make_test('
|
||
|
.DEFAULT: ; @echo $@
|
||
|
|
||
|
foo.a: bar baz
|
||
|
|
||
|
foo.a: biz | buz
|
||
|
|
||
|
foo.%: 1.$$@ \
|
||
|
2.$$< \
|
||
|
$$(addprefix 3.,$$^) \
|
||
|
$$(addprefix 4.,$$+) \
|
||
|
5.$$| \
|
||
|
6.$$*
|
||
|
@:
|
||
|
|
||
|
1.foo.a \
|
||
|
2.bar \
|
||
|
3.bar \
|
||
|
3.baz \
|
||
|
3.biz \
|
||
|
4.bar \
|
||
|
4.baz \
|
||
|
4.biz \
|
||
|
5.buz \
|
||
|
6.a:
|
||
|
@echo $@
|
||
|
|
||
|
',
|
||
|
'',
|
||
|
'1.foo.a
|
||
|
2.bar
|
||
|
3.bar
|
||
|
3.baz
|
||
|
3.biz
|
||
|
4.bar
|
||
|
4.baz
|
||
|
4.biz
|
||
|
5.buz
|
||
|
6.a
|
||
|
bar
|
||
|
baz
|
||
|
biz
|
||
|
buz
|
||
|
');
|
||
|
|
||
|
|
||
|
# Test #2: target/pattern -specific variables.
|
||
|
#
|
||
|
run_make_test('
|
||
|
foo.x:
|
||
|
|
||
|
foo.%: $$(%_a) $$(%_b) bar
|
||
|
@:
|
||
|
|
||
|
foo.x: x_a := bar
|
||
|
|
||
|
%.x: x_b := baz
|
||
|
|
||
|
bar baz: ; @echo $@
|
||
|
|
||
|
',
|
||
|
'',
|
||
|
'bar
|
||
|
baz
|
||
|
');
|
||
|
|
||
|
|
||
|
# Test #3: order of prerequisites.
|
||
|
#
|
||
|
run_make_test('
|
||
|
.DEFAULT: ; @echo $@
|
||
|
|
||
|
all: foo bar baz
|
||
|
|
||
|
|
||
|
# Subtest #1
|
||
|
#
|
||
|
%oo: %oo.1; @:
|
||
|
|
||
|
foo: foo.2
|
||
|
|
||
|
foo: foo.3
|
||
|
|
||
|
foo.1: ; @echo $@
|
||
|
|
||
|
|
||
|
# Subtest #2
|
||
|
#
|
||
|
bar: bar.2
|
||
|
|
||
|
%ar: %ar.1; @:
|
||
|
|
||
|
bar: bar.3
|
||
|
|
||
|
bar.1: ; @echo $@
|
||
|
|
||
|
|
||
|
# Subtest #3
|
||
|
#
|
||
|
baz: baz.1
|
||
|
|
||
|
baz: baz.2
|
||
|
|
||
|
%az: ; @:
|
||
|
|
||
|
',
|
||
|
'',
|
||
|
'foo.1
|
||
|
foo.2
|
||
|
foo.3
|
||
|
bar.1
|
||
|
bar.2
|
||
|
bar.3
|
||
|
baz.1
|
||
|
baz.2
|
||
|
');
|
||
|
|
||
|
|
||
|
# Test #4: stem splitting logic.
|
||
|
#
|
||
|
run_make_test('
|
||
|
$(dir)/tmp/bar.o:
|
||
|
|
||
|
$(dir)/tmp/foo/bar.c: ; @echo $@
|
||
|
$(dir)/tmp/bar/bar.c: ; @echo $@
|
||
|
foo.h: ; @echo $@
|
||
|
|
||
|
%.o: $$(addsuffix /%.c,foo bar) foo.h
|
||
|
@echo $@: {$<} $^
|
||
|
|
||
|
',
|
||
|
"dir=$dir",
|
||
|
"$dir/tmp/foo/bar.c
|
||
|
$dir/tmp/bar/bar.c
|
||
|
foo.h
|
||
|
$dir/tmp/bar.o: {$dir/tmp/foo/bar.c} $dir/tmp/foo/bar.c $dir/tmp/bar/bar.c foo.h
|
||
|
");
|
||
|
|
||
|
|
||
|
# Test #5: stem splitting logic and order-only prerequisites.
|
||
|
#
|
||
|
run_make_test('
|
||
|
$(dir)/tmp/foo.o: $(dir)/tmp/foo.c
|
||
|
$(dir)/tmp/foo.c: ; @echo $@
|
||
|
bar.h: ; @echo $@
|
||
|
|
||
|
%.o: %.c|bar.h
|
||
|
@echo $@: {$<} {$|} $^
|
||
|
|
||
|
',
|
||
|
"dir=$dir",
|
||
|
"$dir/tmp/foo.c
|
||
|
bar.h
|
||
|
$dir/tmp/foo.o: {$dir/tmp/foo.c} {bar.h} $dir/tmp/foo.c
|
||
|
");
|
||
|
|
||
|
|
||
|
# Test #6: lack of implicit prerequisites.
|
||
|
#
|
||
|
run_make_test('
|
||
|
foo.o: foo.c
|
||
|
foo.c: ; @echo $@
|
||
|
|
||
|
%.o:
|
||
|
@echo $@: {$<} $^
|
||
|
|
||
|
',
|
||
|
'',
|
||
|
'foo.c
|
||
|
foo.o: {foo.c} foo.c
|
||
|
');
|
||
|
|
||
|
|
||
|
# This tells the test driver that the perl test script executed properly.
|
||
|
1;
|