mirror of
https://github.com/mirror/make.git
synced 2026-08-12 22:16:11 +00:00
Extend .SECONDEXPANSION to implicit rules. Final fix for bug #13781.
This commit is contained in:
@@ -1,3 +1,9 @@
|
||||
2005-12-11 Paul D. Smith <psmith@gnu.org>
|
||||
|
||||
* scripts/misc/general4: Test implicit rules with '$' in the
|
||||
prereq list & prereq patterns.
|
||||
* scripts/features/se_implicit: Add in .SECONDEXPANSION settings.
|
||||
|
||||
2005-12-09 Boris Kolpackov <boris@kolpackov.net>
|
||||
|
||||
* scripts/features/patternrules: Add a test for bug #13022.
|
||||
|
||||
@@ -12,6 +12,7 @@ $dir =~ s,.*/([^/]+)$,../$1,;
|
||||
# Test #1: automatic variables.
|
||||
#
|
||||
run_make_test('
|
||||
.SECONDEXPANSION:
|
||||
.DEFAULT: ; @echo $@
|
||||
|
||||
foo.a: bar baz
|
||||
@@ -60,6 +61,7 @@ buz
|
||||
# Test #2: target/pattern -specific variables.
|
||||
#
|
||||
run_make_test('
|
||||
.SECONDEXPANSION:
|
||||
foo.x:
|
||||
|
||||
foo.%: $$(%_a) $$(%_b) bar
|
||||
@@ -81,6 +83,7 @@ baz
|
||||
# Test #3: order of prerequisites.
|
||||
#
|
||||
run_make_test('
|
||||
.SECONDEXPANSION:
|
||||
.DEFAULT: ; @echo $@
|
||||
|
||||
all: foo bar baz
|
||||
@@ -132,6 +135,7 @@ baz.2
|
||||
# Test #4: stem splitting logic.
|
||||
#
|
||||
run_make_test('
|
||||
.SECONDEXPANSION:
|
||||
$(dir)/tmp/bar.o:
|
||||
|
||||
$(dir)/tmp/foo/bar.c: ; @echo $@
|
||||
@@ -153,6 +157,7 @@ $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('
|
||||
.SECONDEXPANSION:
|
||||
$(dir)/tmp/foo.o: $(dir)/tmp/foo.c
|
||||
$(dir)/tmp/foo.c: ; @echo $@
|
||||
bar.h: ; @echo $@
|
||||
@@ -171,6 +176,7 @@ $dir/tmp/foo.o: {$dir/tmp/foo.c} {bar.h} $dir/tmp/foo.c
|
||||
# Test #6: lack of implicit prerequisites.
|
||||
#
|
||||
run_make_test('
|
||||
.SECONDEXPANSION:
|
||||
foo.o: foo.c
|
||||
foo.c: ; @echo $@
|
||||
|
||||
@@ -186,6 +192,7 @@ foo.o: {foo.c} foo.c
|
||||
# Test #7: Test stem from the middle of the name.
|
||||
#
|
||||
run_make_test('
|
||||
.SECONDEXPANSION:
|
||||
foobarbaz:
|
||||
|
||||
foo%baz: % $$*.1
|
||||
@@ -204,6 +211,7 @@ bar
|
||||
# Test #8: Make sure stem triple-expansion does not happen.
|
||||
#
|
||||
run_make_test('
|
||||
.SECONDEXPANSION:
|
||||
foo$$bar:
|
||||
|
||||
f%r: % $$*.1
|
||||
|
||||
@@ -53,4 +53,31 @@ baz$$bar bar$$baz: ; @echo '$@'
|
||||
'',
|
||||
"baz\$bar\ndone baz\$bar");
|
||||
|
||||
|
||||
# Test implicit rules with '$' in the name (see se_implicit)
|
||||
# Use the '$' in the pattern.
|
||||
|
||||
run_make_test(q!
|
||||
%.foo : %$$bar ; @echo 'done $<'
|
||||
test.foo:
|
||||
test$$bar: ; @echo '$@'
|
||||
!,
|
||||
'',
|
||||
"test\$bar\ndone test\$bar");
|
||||
|
||||
# Make sure that subdirectories built as prerequisites are actually handled
|
||||
# properly... this time with '$'
|
||||
|
||||
run_make_test(q!
|
||||
|
||||
all: dir/subdir/file.$$a
|
||||
|
||||
dir/subdir: ; @echo mkdir -p '$@'
|
||||
|
||||
dir/subdir/file.$$b: dir/subdir ; @echo touch '$@'
|
||||
|
||||
dir/subdir/%.$$a: dir/subdir/%.$$b ; @echo 'cp $< $@'
|
||||
!,
|
||||
'', "mkdir -p dir/subdir\ntouch dir/subdir/file.\$b\ncp dir/subdir/file.\$b dir/subdir/file.\$a\n");
|
||||
|
||||
1;
|
||||
|
||||
Reference in New Issue
Block a user