In (info "(make) Call Function") One would assume
reverse = $(2) $(1) foo = $(call reverse,a,b) should be reverse = $(2) $(1) foo = $(call $(reverse),a,b) but make does that $ stuff for us automatically, which makes us think maybe it is also doing the same for a and b. But it's not. Therefore perhaps use: reverse = $(2) $(1) a=x b=y foo = $(call reverse,$a,$b)... to pound this fact home. Yes even if in the following example on the page finally makes this clearer.