mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-06-25 13:58:32 +00:00
add make-4.3.tar.gz
This commit is contained in:
parent
0a0997a872
commit
19f70a154e
458 changed files with 239669 additions and 0 deletions
266
third_party/make/tests/scripts/features/se_implicit
vendored
Normal file
266
third_party/make/tests/scripts/features/se_implicit
vendored
Normal file
|
@ -0,0 +1,266 @@
|
|||
# -*-perl-*-
|
||||
$description = "Test second expansion in implicit rules.";
|
||||
|
||||
$details = "";
|
||||
|
||||
use Cwd;
|
||||
|
||||
$dir = cwd;
|
||||
$dir =~ s,.*/([^/]+)$,../$1,;
|
||||
|
||||
|
||||
# Test #1: automatic variables.
|
||||
#
|
||||
run_make_test(q!
|
||||
.SECONDEXPANSION:
|
||||
.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(q!
|
||||
.SECONDEXPANSION:
|
||||
foo.x:
|
||||
|
||||
foo.%: $$(%_a) $$(%_b) bar ; @:
|
||||
|
||||
foo.x: x_a := bar
|
||||
|
||||
%.x: x_b := baz
|
||||
|
||||
bar baz: ; @echo '$@'
|
||||
!,
|
||||
'', "bar\nbaz\n");
|
||||
|
||||
|
||||
# Test #3: order of prerequisites.
|
||||
#
|
||||
run_make_test(q!
|
||||
.SECONDEXPANSION:
|
||||
.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(q!
|
||||
.SECONDEXPANSION:
|
||||
$(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(q!
|
||||
.SECONDEXPANSION:
|
||||
$(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(q!
|
||||
.SECONDEXPANSION:
|
||||
foo.o: foo.c
|
||||
foo.c: ; @echo '$@'
|
||||
|
||||
%.o: ; @echo '$@: {$<} $^'
|
||||
!,
|
||||
'', "foo.c\nfoo.o: {foo.c} foo.c\n");
|
||||
|
||||
|
||||
# Test #7: Test stem from the middle of the name.
|
||||
#
|
||||
run_make_test(q!
|
||||
.SECONDEXPANSION:
|
||||
foobarbaz:
|
||||
|
||||
foo%baz: % $$*.1 ; @echo '$*'
|
||||
|
||||
bar bar.1: ; @echo '$@'
|
||||
!,
|
||||
'', "bar\nbar.1\nbar\n");
|
||||
|
||||
|
||||
# Test #8: 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
|
||||
');
|
||||
|
||||
# Test #9: Check the value of $^
|
||||
run_make_test(q!
|
||||
.SECONDEXPANSION:
|
||||
|
||||
%.so: | $$(extra) ; @echo $^
|
||||
|
||||
foo.so: extra := foo.o
|
||||
foo.so:
|
||||
foo.o:
|
||||
!,
|
||||
'', "\n");
|
||||
|
||||
# Test #10: Test second expansion with second expansion prerequisites
|
||||
# Ensures pattern_search() recurses with SE prereqs.
|
||||
touch('a');
|
||||
run_make_test(q!
|
||||
.SECONDEXPANSION:
|
||||
sim_base_rgg := just_a_name
|
||||
sim_base_src := a
|
||||
sim_base_f := a a a
|
||||
sim_%.f: $${sim_$$*_f} ; echo $@
|
||||
sim_%.src: $${sim_$$*_src} ; echo $@
|
||||
sim_%: \
|
||||
$$(if $$(sim_$$*_src),sim_%.src) \
|
||||
$$(if $$(sim_$$*_f),sim_%.f) \
|
||||
$$(if $$(sim_$$*_rgg),$$(sim_$$*_rgg).s) ; echo $@
|
||||
!,
|
||||
'-s sim_base', "#MAKE#: *** No rule to make target 'sim_base'. Stop.", 512);
|
||||
|
||||
unlink('a');
|
||||
|
||||
# Ensure that order-only tokens embedded in second expansions are parsed
|
||||
run_make_test(q!
|
||||
.SECONDEXPANSION:
|
||||
PREREQS=p1|p2
|
||||
P2=p2
|
||||
all : foo bar
|
||||
f%o: $$(PREREQS) ; @echo '$@' from '$^' and '$|'
|
||||
b%r: p1|$$(P2) ; @echo '$@' from '$^' and '$|'
|
||||
p% : ; : $@
|
||||
!,
|
||||
"", ": p1\n: p2\nfoo from p1 and p2\nbar from p1 and p2\n");
|
||||
|
||||
# SV 28456 : Don't reset $$< for default recipes
|
||||
run_make_test(q!
|
||||
.SECONDEXPANSION:
|
||||
|
||||
.PHONY: foo bar
|
||||
foo: bar
|
||||
foo: $$(info $$<)
|
||||
%oo: ;
|
||||
!,
|
||||
'', "bar\n#MAKE#: Nothing to be done for 'foo'.\n");
|
||||
|
||||
# SV 54161: Expand $$* properly when it contains a path
|
||||
|
||||
run_make_test(q!
|
||||
.SECONDEXPANSION:
|
||||
%x: $$(info $$*); @echo '$*'
|
||||
!,
|
||||
'q/ux', "q/u\nq/u\n");
|
||||
|
||||
# This tells the test driver that the perl test script executed properly.
|
||||
1;
|
Loading…
Add table
Add a link
Reference in a new issue