define inner {$(1)|$(origin 1),$(2)|$(origin 2)} endef define macro $(call inner,$(1)) \ $(call inner,test2) \ $(call inner,test3,) \ $(call inner,test4,macro) \ $(call inner) endef 2=global test: @echo "$(call macro,test1)" @echo "$(call macro)"