#                                                                    -*-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;
