I have experienced some strange behavior with call and eval which I'd
like to share. I think I know how to work around the problem I'm
experiencing but I'd like to know why I'm seeing this behavior. First,
the makefiles.
% cat test1.mk
define __func
return_value:=0
endef
func=$(eval $(__func))$(return_value)
my_retval:=$(func)
all:
@echo my_retval=$(my_retval)
@echo return_value=$(return_value)
% cat test2.mk
define __func
return_value:=0
endef
func=$(eval $(__func))$(return_value)
my_retval:=$(call func)
all:
@echo my_retval=$(my_retval)
@echo return_value=$(return_value)
% diff test1.mk test2.mk
7c7
< my_retval:=$(func)
---
> my_retval:=$(call func)
I read in the GNU make manual that "it doesn't make sense to use call
with no parameters" so I figured I'd be fine with $(func). It turns out
that the output of `gmake -f test1.mk' looks quite strange.
% gmake -f test1.mk
my_retval=0ue:=0
return_value=0
Whereas the output of `gmake -f test2.mk' matches my expectations.
% gmake -f test2.mk
my_retval=0
return_value=0
Can someone tell me why?
Ken
_______________________________________________
Help-make mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/help-make