#                                                                    -*-perl-*-
$description = "Test the call function.\n";

$details = "Try various uses of call and ensure they all give the correct
results.\n";

run_make_test(q!
# Simple, just reverse two things
#
reverse = $2 $1

# A complex 'map' function, using recursive 'call'.
#
map = $(foreach a,$2,$(call $1,$a))

# Test using a builtin; this is silly as it's simpler to do without call
#
my-notdir = $(call notdir,$(1))

# Test using non-expanded builtins
#
my-foreach = $(foreach $(1),$(2),$(3))
my-if      = $(if $(1),$(2),$(3))

# Test recursive invocations of call with different arguments
#
one = $(1) $(2) $(3)
two = $(call one,$(1),foo,$(2))

# Test recursion on the user-defined function.  As a special case make
# won't error due to this.
# Implement transitive closure using $(call ...)
#
DEP_foo = bar baz quux
DEP_baz = quux blarp
rest = $(wordlist 2,$(words ${1}),${1})
tclose = $(if $1,$(firstword $1)\
#TAB##TAB#$(call tclose,$(sort ${DEP_$(firstword $1)} $(call rest,$1))))

all: ; @echo '$(call reverse,bar,foo)'; \
        echo '$(call map,origin,MAKE reverse map)'; \
        echo '$(call my-notdir,a/b   c/d      e/f)'; \
        echo '$(call my-foreach)'; \
        echo '$(call my-foreach,a,,,)'; \
        echo '$(call my-if,a,b,c)'; \
        echo '$(call two,bar,baz)'; \
#TAB#echo '$(call tclose,foo)';
!,
              "", "foo bar\ndefault file file\nb d f\n\n\nb\nbar foo baz\nfoo bar baz blarp quux \n");

# These won't work because call expands all its arguments first, before
# passing them on, then marks them as resolved/simple, so they're not
# expanded again by the function.
#
#        echo '$(call my-foreach,a,x y z,$$(a)$$(a))'; \
#        echo '$(call my-if,,$$(info don't print this),$$(info do print this))'
#
# $answer = "xx yy zz\ndo print this\n";

# TEST eclipsing of arguments when invoking sub-calls

run_make_test(q!
all = $1 $2 $3 $4 $5 $6 $7 $8 $9

level1 = $(call all,$1,$2,$3,$4,$5)
level2 = $(call level1,$1,$2,$3)
level3 = $(call level2,$1,$2,$3,$4,$5)

all:
#TAB#@echo $(call all,1,2,3,4,5,6,7,8,9,10,11)
#TAB#@echo $(call level1,1,2,3,4,5,6,7,8)
#TAB#@echo $(call level2,1,2,3,4,5,6,7,8)
#TAB#@echo $(call level3,1,2,3,4,5,6,7,8)
!,
              "", "1 2 3 4 5 6 7 8 9\n1 2 3 4 5\n1 2 3\n1 2 3\n");

# Ensure that variables are defined in global scope even in a $(call ...)

delete $ENV{X123};

run_make_test(q!
tst = $(eval export X123)
$(call tst)
all: ; @echo "$${X123-not set}"
!,
              '', "\n");

1;
