mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-06-12 15:42:29 +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
95
third_party/make/tests/scripts/functions/foreach
vendored
Normal file
95
third_party/make/tests/scripts/functions/foreach
vendored
Normal file
|
@ -0,0 +1,95 @@
|
|||
# -*-perl-*-
|
||||
# $Id$
|
||||
|
||||
$description = "Test the foreach function.";
|
||||
|
||||
$details = "This is a test of the foreach function in gnu make.
|
||||
This function starts with a space separated list of
|
||||
names and a variable. Each name in the list is subsituted
|
||||
into the variable and the given text evaluated. The general
|
||||
form of the command is $(foreach var,\$list,\$text). Several
|
||||
types of foreach loops are tested\n";
|
||||
|
||||
|
||||
# TEST 0
|
||||
|
||||
# Set an environment variable that we can test in the makefile.
|
||||
$extraENV{FOOFOO} = 'foo foo';
|
||||
|
||||
run_make_test("space = ' '".'
|
||||
null :=
|
||||
auto_var = udef space CC null FOOFOO MAKE foo CFLAGS WHITE @ <
|
||||
foo = bletch null @ garf
|
||||
av = $(foreach var, $(auto_var), $(origin $(var)) )
|
||||
override WHITE := BLACK
|
||||
for_var = $(addsuffix .c,foo $(null) $(foo) $(space) $(av) )
|
||||
fe = $(foreach var2, $(for_var),$(subst .c,.o, $(var2) ) )
|
||||
all: auto for2
|
||||
auto : ; @echo $(av)
|
||||
for2: ; @echo $(fe)',
|
||||
'-e WHITE=WHITE CFLAGS=',
|
||||
"undefined file default file environment default file command line override automatic automatic
|
||||
foo.o bletch.o null.o @.o garf.o .o .o undefined.o file.o default.o file.o environment.o default.o file.o command.o line.o override.o automatic.o automatic.o");
|
||||
|
||||
delete $extraENV{FOOFOO};
|
||||
|
||||
# TEST 1: Test that foreach variables take precedence over global
|
||||
# variables in a global scope (like inside an eval). Tests bug #11913
|
||||
|
||||
run_make_test('
|
||||
.PHONY: all target
|
||||
all: target
|
||||
|
||||
x := BAD
|
||||
|
||||
define mktarget
|
||||
target: x := $(x)
|
||||
target: ; @echo "$(x)"
|
||||
endef
|
||||
|
||||
x := GLOBAL
|
||||
|
||||
$(foreach x,FOREACH,$(eval $(value mktarget)))',
|
||||
'',
|
||||
'FOREACH');
|
||||
|
||||
# Allow variable names with trailing space
|
||||
run_make_test(q!
|
||||
$(foreach \
|
||||
a \
|
||||
, b c d \
|
||||
, $(info $a))
|
||||
all:;@:
|
||||
!,
|
||||
"", "b\nc\nd\n");
|
||||
|
||||
# Allow empty variable names. We still expand the body.
|
||||
|
||||
run_make_test('
|
||||
x = $(foreach ,1 2 3,a)
|
||||
y := $x
|
||||
|
||||
all: ; @echo $y',
|
||||
'', "a a a\n");
|
||||
|
||||
# Check some error conditions.
|
||||
|
||||
run_make_test('
|
||||
x = $(foreach )
|
||||
y = $x
|
||||
|
||||
all: ; @echo $y',
|
||||
'',
|
||||
"#MAKEFILE#:2: *** insufficient number of arguments (1) to function 'foreach'. Stop.",
|
||||
512);
|
||||
|
||||
run_make_test('
|
||||
x = $(foreach x,y)
|
||||
y := $x
|
||||
|
||||
all: ; @echo $y',
|
||||
'',
|
||||
"#MAKEFILE#:2: *** insufficient number of arguments (2) to function 'foreach'. Stop.",
|
||||
512);
|
||||
|
||||
1;
|
Loading…
Add table
Add a link
Reference in a new issue