summaryrefslogtreecommitdiff
path: root/tests/scripts/functions/foreach
blob: 0c63c474d63fb282ab6b81fd0d21d0ffa50e2e7a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#                                                                    -*-perl-*-

# Updated 6.16.93  variable "MAKE" is default was environment override
# For make 3.63 and above

$description = "The following test creates a makefile to verify
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";


open(MAKEFILE,"> $makefile");

# The Contents of the MAKEFILE ...

# On WIN32 systems, the user's path is found in %Path% ($Path)
#
$pathvar = (($osname =~ /Windows/i) ? "Path" : "PATH");

print MAKEFILE <<EOF;
foo = bletch null \@ garf
null :=
space = ' '
auto_var = udef space CC null $pathvar MAKE foo CFLAGS WHITE \@ <
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 :
\t\@echo \$(av)
for2:
\t\@echo \$(fe)
EOF

close(MAKEFILE);

&run_make_with_options($makefile,
                      "-e WHITE=WHITE CFLAGS=",
                      &get_logfile);

# Create the answer to what should be produced by this Makefile
$answer = "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\n";

&compare_output($answer,&get_logfile(1));

1;