define func2 MY_FUNC2_VAR := $$(SOME_VALUE) all:: @echo "Here2: $$(MY_FUNC2_VAR)" endef define func3 MY_FUNC3_VAR := $$(SOME_VALUE) all:: @echo "Here3: $$(MY_FUNC2_VAR)" endef define func1 SOME_VALUE := 1 MY_FUNC1_VAR := $$(SOME_VALUE) all:: @echo "Here1: $$(MY_FUNC1_VAR)" $(eval $(call func2)) ifndef SOME_VALUE $(eval $(call func3)) endif endef $(eval $(call func1)) all::