VirtualBox

source: kBuild/trunk/src/kmk/tests/scripts/functions/foreach@ 969

Last change on this file since 969 was 969, checked in by bird, 18 years ago

Fixing some svn props.

  • Property svn:eol-style set to LF
File size: 2.1 KB
Line 
1# -*-perl-*-
2# $Id: foreach,v 1.5 2006/03/10 02:20:46 psmith Exp $
3
4$description = "Test the foreach function.";
5
6$details = "This is a test of the foreach function in gnu make.
7This function starts with a space separated list of
8names and a variable. Each name in the list is subsituted
9into the variable and the given text evaluated. The general
10form of the command is $(foreach var,$list,$text). Several
11types of foreach loops are tested\n";
12
13
14# TEST 0
15
16# Set an environment variable that we can test in the makefile.
17$extraENV{FOOFOO} = 'foo foo';
18
19run_make_test("space = ' '".'
20null :=
21auto_var = udef space CC null FOOFOO MAKE foo CFLAGS WHITE @ <
22foo = bletch null @ garf
23av = $(foreach var, $(auto_var), $(origin $(var)) )
24override WHITE := BLACK
25for_var = $(addsuffix .c,foo $(null) $(foo) $(space) $(av) )
26fe = $(foreach var2, $(for_var),$(subst .c,.o, $(var2) ) )
27all: auto for2
28auto : ; @echo $(av)
29for2: ; @echo $(fe)',
30 '-e WHITE=WHITE CFLAGS=',
31 "undefined file default file environment default file command line override automatic automatic
32foo.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");
33
34delete $extraENV{FOOFOO};
35
36# TEST 1: Test that foreach variables take precedence over global
37# variables in a global scope (like inside an eval). Tests bug #11913
38
39run_make_test('
40.PHONY: all target
41all: target
42
43x := BAD
44
45define mktarget
46target: x := $(x)
47target: ; @echo "$(x)"
48endef
49
50x := GLOBAL
51
52$(foreach x,FOREACH,$(eval $(value mktarget)))',
53 '',
54 'FOREACH');
55
56
57# TEST 2: Check some error conditions.
58
59run_make_test('
60x = $(foreach )
61y = $x
62
63all: ; @echo $y',
64 '',
65 "#MAKEFILE#:2: *** insufficient number of arguments (1) to function `foreach'. Stop.",
66 512);
67
68run_make_test('
69x = $(foreach )
70y := $x
71
72all: ; @echo $y',
73 '',
74 "#MAKEFILE#:2: *** insufficient number of arguments (1) to function `foreach'. Stop.",
75 512);
76
771;
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette